gold for features edition company community windows git version-control mercurial

for - DVCS con un repositorio central de Windows



gitlab gold (7)

Después de leer la Respuesta de Mikko que casi me funcionó, se me ocurrieron mis propias notas para la instalación. Mi configuración fue diseñada para ser un repositorio "no protegido y abierto" que los miembros de mi equipo podrían usar instalado en un servidor Windows 2008.

1. Instale Python.

La versión de Python que utilicé fue Python 2.6.2 y el instalador MSI de Windows x86.

  • Instalar para todos los usuarios.
  • Instalar en C: / Mercurial / Python
  • Utilice las opciones de funciones predeterminadas.

2. Instale MinGW.
La versión de Minimalist GNU para Windows que utilicé fue MinGW 5.1.4

  • Instale el MinGW-5.1.4.exe.
  • Elija la opción Descargar e instalar.
  • Elija la opción de paquete actual para instalar.
  • Para que los componentes se instalen, seleccione la opción "Mínima".
  • Instalar en C: / Mercurial / MinGW

3. Modifica tu camino.

Debe agregar ubicaciones a su ruta ambiental en este punto.

  • Agregue '' C: / Mercurial / Python26; C: / Mercurial / MinGW / bin '' a la ruta (La orden importa.)

4. Instale Mercurial.

La versión de mercurial que utilicé fue la última versión en la rama estable y no usé los binarios, sino que usé el código fuente. Quería compilar mercurial para que funcionara con la versión de Python que tenía instalada, así no tuve que preocuparme por ningún problema de compatibilidad que encontré como el mayor desafío con otros métodos de instalación. La forma más fácil de obtener la fuente es mediante la descarga del archivo "zip". Liberación estable mercurial

  • Extraer el archivo zip a C: / Mercurial / Source.
  • Construye la Fuente en el símbolo del sistema.

python setup.py build --force -c mingw32 python setup.py install --force --skip-build

5. Modifica tu camino.

Debe insertar en su ruta ambiental otra ubicación para el comando ''hg''.

  • Agregue '' C: / Mercurial / Python26 / Scripts; C: / Mercurial / Python26; C: / Mercurial / MinGW / bin '' a la ruta (La orden es importante)

6. Crea tu archivo de configuración.

Debe tener un nombre de usuario predeterminado establecido si va a realizar alguna confirmación local en este servidor.

  • Cree el archivo '' "C: / Documents and Settings {nombre de usuario} .hgrc" ''

[ui] editor = Notepad username = your_name

6. Pruebe su instalación.

Abra una nueva ventana de comandos y pruebe con '' hg debuginstall '' para validar. Deberías ver algo como lo siguiente.

Checking encoding (cp1252)... Checking extensions... Checking templates... Checking patch... Checking commit editor... Checking username... No problems detected

7. Configuración del directorio web.

  • Crear directorio '' C: / Mercurial / Web ''
  • Copie el archivo hgwebdir.cgi de '' C: / Mercurial / Source '' a '' C: / Mercurial / Web ''

8. Configure IIS7 para el repositorio centralizado.

Utilicé el DefaultAppPool que usa .Net 2.0, Pipeline = Integrated, Identity = ApplicationPoolIdentity.

  • Asegúrese de que las funciones CGI estén disponibles en IIS7.
  • Panel de control / Programas / Características de Windows / IIS / Características de desarrollo de aplicaciones / CGI
  • Agregue la aplicación en IIS en el sitio web que desee.
  • Alias ​​= Mercurial - Ruta física = C: / Mercurial / Web
  • En la aplicación, seleccione Módulos HTTP y agregue un nuevo Mapeo de Módulos.
    • Ruta de solicitud = *. Cgi, Módulo = Módulo Cgi, Ejecutable = C: / Mercurial / Python26 / python.exe% s, Nombre = Mercurial.
    • Cuando se le solicite que agregue una entrada a la lista de restricciones de ISAPI y CGI, diga sí.

9. Pon a prueba tu configuración web.

Ahora debería poder navegar por http://localhost/Mercurial/hgwebdir.cgi y ver y vaciar la lista de repositorios.

10. Configure IIS7 para una URL amigable

No me gustó tener la URL hostil y este paso nos permite volver a asignar la URL a algo más amigable. Instale la URL Rewrite Moduel 1.1 Extension para IIS.

  • En la aplicación Mercurial IIS en las funciones del Administrador de IIS, seleccione el componente de reescritura de URL seleccionado e instale una nueva regla.
  • Elija Agregar reglas, luego la "Regla de la plantilla con el mapa de reescritura". Acción de la regla = Reescribir, Especificar mapa de reescritura = Mercurial
  • Añadir una entrada de mapeo. OriginalValue = ''/ Mercurial / Repo'', Nuevo valor = ''/ Mercurial / hgwebdir.cgi''

11. Crear un repositorio mercurial

Ahora puede crear un repositorio de prueba.

  • Cree un directorio C: / Mercurial / Repository y asegúrese de que la cuenta IUSR tenga los permisos para escribir en el directorio. (Si en la cuenta de dominio es más como IUSR_ {nombreDeEquipo}.
  • Cree el archivo C: / Mercurial / Web / hgweb.config para listar los repositorios.

[paths] / = C:/Mercurial/Repository/**

  • Agregue un directorio C: / Mercurial / Repository / Test e inicialice el repositorio con ''hg init''

** Si desea poder ahora empujar sin ssl cree en el directorio .hg del repositorio un archivo hgrc en las siguientes líneas.

[web] allow_push = * push_ssl = false

Referencias:

Mercurial Wiki Windows Install
Libro de HG
Paso a paso
Publicando Repositorios Mercuriales

Actualmente estamos utilizando VSS para el control de versiones. Muy pocos de nuestros desarrolladores están interesados ​​en un modelo distribuido (y quieren deshacerse de VSS). Nuestra red está llena de máquinas con Windows y, si bien nuestro departamento de TI tiene experiencia en el mantenimiento de máquinas con Linux, prefieren no hacerlo.

Qué sistemas DVCS pueden alojar su repositorio central en Windows mientras proporciona ...

  1. Acceso push al repositorio.
  2. Autenticación básica. Principalmente, solo es una forma de permitir o denegar el acceso a todo el repositorio. No hay necesidad de acceso de grano fino.
  3. Proceso del servidor para que los usuarios no necesiten escribir directamente en el repositorio, lo que reduce el riesgo de alterarlo accidentalmente.

En el lado del cliente, una GUI como Tortoise sería más o menos un requisito (Lo sentimos, el shell de Windows apesta.: |). La facilidad de instalación sería una gran ventaja, ya que nuestro departamento de TI ya cuenta con pocos recursos. Y el uso de las credenciales de Windows para la autenticación sería una ventaja, pero no un requisito, siempre y cuando el cliente pueda almacenar las credenciales.

He echado un vistazo rápido a Git, Mercurial y Bazaar.

  • Git parecía usar ssh o WebDAV simple para acceder al repositorio, lo que requería permiso de escritura para los usuarios.
  • Mercurial tenía un servidor http incorporado, pero esto parecía ser solo para propósitos de extracción. Actualización: Mercurial también soporta push.
  • Bazaar Parecía usar sftp para el acceso al repositorio, nuevamente requiriendo un permiso de escritura para los usuarios.

¿Hay procesos de servidor de Windows para los sistemas DVCS y alguien ha logrado configurar uno en un terreno Windows?

Y disculpas si esta es una pregunta duplicada. No pude encontrar uno.

Actualizar

¡Mercurial consiguió trabajar con propósitos de empuje! La lista detallada de lo que se requiere se puede encontrar como respuesta a continuación


Después de que Benjamin señaló los HTTP que sirven los scripts CGI, decidí probarlos y logré obtener un repositorio alojado a través de HTTP. El Redbook que Benjamin vinculó fue de gran ayuda ya que fueron dos artículos de Mercurial wiki. Uno que describe la publicación de Mercurial en general y otro que contiene instrucciones paso a paso para configurar el script CGI HgWebDir.

Estas instrucciones no eran completamente infalibles, así que tuve que buscar un poco. Lo más probable es que estoy ejecutando 64bit Vista. Las instrucciones a continuación documentan lo que hice. Ahora que lo he hecho una vez, probablemente haría las cosas en otro orden, así que no considere estas instrucciones paso a paso.

Mercurial

Primero adquirí el binario Mercurial de http://mercurial.berkwood.com/ que se instaló en d:/dev/Mercurial . d:/dev/testRepo un repositorio para probar bajo el repositorio d:/dev/testRepo usando hg init . El archivo d:/dev/Mercurial/library.zip contiene los archivos de la biblioteca Mercurial requeridos por el script CGI por lo que se extrajeron a la d:/dev/Mercurial/library . Algo que me confundió al principio es que cuando abrí el archivo zip recibí un mensaje de error y no vi ningún contenido. Sin embargo, simplemente extrayendo el archivo a un directorio funcionó.

Para el script web, descargué la source Mercurial que contenía hgwebdir.cgi, que se movió y cambió de nombre a d:/dev/Mercurial/webroot/hgwebdir.py . El artículo paso a paso contiene buenas instrucciones para modificar la secuencia de comandos hgwebdir para Windows. También contienen instrucciones para hgweb.config que en mi caso terminaron pareciéndose a esto:

[paths] /hg/hgwebdir.py/test = D:/dev/Mercurial/testRepo

También el repositorio quería la siguiente configuración para que pudiera enviar sin SSL. Nota: estoy utilizando la autenticación básica para autenticar a los usuarios actualmente. Tuve que crear la configuración en D:/dev/Mercurial/testRepo/.hg/hgrc y agregarle las siguientes líneas:

[web] allow_push = * push_ssl = false

Pitón

El script CGI es un script de Python, por lo que requiere Python. Parece bastante delicado en qué versión de Python lo ejecuta. Uno de los artículos mencionados que ejecutarlo requiere la misma versión que se usó para construir Mercurial. Al final lo conseguí trabajando en Python 2.5 x86 después de probar Python 2.6 x64, Python 2.4, Python 2.5 x64.

IIS

Dos cosas que me perdí y tuve que instalar fueron el soporte CGI y la autenticación básica. Ambos se instalaron a través del Panel de Control, Programas y Características. Una vez hecho con la instalación, creé un directorio virtual (que luego cambié a una aplicación) en IIS que apunta a D:/dev/Mercurial/webroot . El directorio virtual requería un controlador CGI para los archivos * .py que podrían agregarse desde Asignaciones de controladores. El ejecutable era D:/dev/SDKs/Python25_x86/Python.exe %s . Una vez que IIS tenía permisos para el directorio webroot, podía navegar a http://localhost/hg/hgwebdir.py/test y ver el repositorio.

Así que ahora el acceso de lectura estaba funcionando. Cuando intenté ingresar al repositorio, recibí mensajes de error extraños que me decían que no era un repositorio real.

Después de una hora de depuración, terminé copiando todo el árbol D:/dev/Mercurial/library/mercurial en webroot para que Python pudiera encontrar D:/dev/Mercurial/webroot/mercurial/hgweb/hgwebdir_mod.pyc . Después de esto, Wireshark estaba reportando errores de Acceso denegado en el seguimiento de la pila. No tenía idea de cuál era el motivo real de esto, pero cambiando el directorio virtual a una aplicación en IIS y moviéndolo sobre un grupo de aplicaciones que se ejecutaba con la cuenta del sistema local, los errores de acceso denegado desaparecieron.

También en algún momento le di a HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/WinSock2/Parameters clave de registro más permisos para que IIS pudiera acceder a ella. Duda que los requiera luego de usar la cuenta del Sistema Local.

¡Una vez que esto se hizo, empujando cosas al repositorio usando hg push http://localhost/hg/hgwebdir.cgi/test estaba funcionando!

Problemas y soluciones

  • Donde encontrar los archivos de la biblioteca.
    • Estaban en la librería library.dll bajo la carpeta de instalación de Mercurial. Solo tuve que extraerlos, incluso si mi programa de descompresión se negó a verme su contenido.
  • Cómo conseguir que se ejecute el script de Python
    • Descargue la versión correcta de Python para la arquitectura x86 ya que la secuencia de comandos usa algunas bibliotecas x86. La versión correcta de Python depende de la versión de Mercurial. Para 1.2.1 fue Python 2.5 x86.
    • Alternativamente, puede intentar compilar Mercurial a partir de fuentes con la versión de Python que desee, pero en mi caso, esto falló al compilar extensiones.
  • Cómo configurar CGI en IIS
    • Primero asegúrese de que CGI esté instalado en IIS. Esto no se asumió como cierto en las instrucciones de IIS que Benjamin publicó.
    • Cree una nueva asignación de módulo para * .py en las asignaciones de controlador de IIS. El módulo correcto es CgiModule y el ejecutable es su ejecutable de Python +% s
  • Cómo permitir que el script CGI escriba en el repositorio
    • Asegúrese de que el script tenga todo lo que necesita. Tuve que mover la library/mercurial/hgweb/hgwebdir_mod.pyc a otro lugar.
    • Asegúrate de que el script tenga permisos para donde quiera. Resolví esto creando un nuevo grupo de aplicaciones para el script CGI que usaba la cuenta del sistema local, convirtiendo el directorio virtual en una aplicación en IIS y seleccionando el nuevo grupo de aplicaciones.

Disculpe mi auto-promoción descarada y desvergonzada, pero acabo de lanzar una versión alfa de HgLab , que es un servidor Mercurial para Windows con soporte completo de extracción HgLab e integración de Active Directory.


Mercurial es casi seguro que tu opción más fácil en Windows.

Si no le importó la autenticación, en realidad puede permitir trivialmente el hg serve para permitir la inserción. Para hacerlo, simplemente necesita agregar lo siguiente al archivo .hg/hgrc en el repositorio que desea servir:

[web] allow_push = * push_ssl = false

La primera línea dice que cualquiera puede empujar a este repositorio. El segundo le dice a Mercurial que permita la inserción sin SSL, ya que hg serve actualmente no admite HTTPS de forma nativa. En este punto, los usuarios pueden ingresar a su repositorio sin tener una cuenta en cualquier lugar. Si simplemente es una pequeña tienda, probablemente esté bien, especialmente porque puede usar la capacidad de Mercurial para firmar conjuntos de cambios para garantizar un nivel de verificabilidad mucho más alto que el que proporcionará HTTP Basic.

Sin embargo, para una tienda más grande, tendría toda la razón al querer al menos una simple barrera para comprometerse. Para hacer eso, necesitas hacer dos cambios. Primero, deberá poner a Mercurial detrás de un servidor web con soporte de proxy inverso o CGI. Afortunadamente, las versiones recientes de IIS son compatibles con ambos. Puede consultar las instrucciones de CGI en los pasos específicos de Mercurial Redbook for Mercurial y la guía de Microsoft para configurar las aplicaciones de CGI en IIS 6 para obtener ayuda en el lado de IIS.

A continuación, deberá configurar una autenticación básica. IIS proporciona HTTP Basic fuera de la caja, que, como beneficio adicional, puede autenticarse directamente en su dominio, manteniendo los gastos administrativos al mínimo.

Finalmente, querrá cambiar la línea allow_push para admitir solo a usuarios específicos especificando una lista de nombres de usuario delimitada por comas. Por ejemplo:

allow_push = benjamin, ted, the_cow

Eso es. Mercurial ahora permitirá la inserción de usuarios que puedan autenticarse a través de la autenticación HTTP básica y la extracción de todos los demás.



SCM-agnostic (hasta cierto punto) la solución de Windows con Repository-frontent y administración hoy puede ser SCM-Manager (Git, Mercurial, SVN repo de una caja con un solo requisito de JVM)


Si estás buscando:

  1. Soporte de desarrollo distribuido.
  2. Ejecutar servidores de Windows sin problemas
  3. Y una gran interfaz gráfica de usuario

Estás describiendo exactamente Plastic SCM