register - Mercurial "servidor"
megaplanet forum (13)
He estado usando Mercurial por un tiempo, pero principalmente para mi propio uso. Ahora bien, tengo un proyecto en el que estoy trabajando donde dos de nosotros estamos construyendo el mismo proyecto, y probablemente modificaremos los archivos de los demás.
Me gustaría configurar un repositorio de Mercurial en un servidor, hacer de ese repositorio el "servidor", por lo que mis cambios y los del otro editor cambian a ese servidor (básicamente, el modelo de Subversion / CVS ); Aunque me gusta Mercurial y no quiero cambiar a algo como Subversion.
Aquí en mi propia red, todo está hecho en Linux, y mi "servidor" tiene instalado OpenSSH . Por lo tanto, presionar mis cambios (trabajo en múltiples computadoras) desde una computadora hasta el servidor es solo una cuestión de "hg push"; el protocolo utilizado es SSH para transferir los cambios.
El problema es que uso Linux, el servidor será Windows (entonces no OpenSSH, ¿no?) Y el otro editor también usará Windows. Hasta donde yo sé, la mejor manera de trabajar en Mercurial en este tipo de configuraciones es que el repositorio extraiga los cambios de la fuente, en lugar de que la fuente empuje hacia el "servidor". Estoy detrás de varios firewalls (no del todo mi red) y mi computadora no será visible desde el servidor, y supongo que el otro editor también estará detrás de un firewall (por lo que no podemos simplemente iniciar el Mercurial local). Servidor HTTP y obtenga la computadora "servidor" para extraer de eso).
¿Cuál es la mejor manera para que ambos editores obtengan nuestros cambios en el repositorio del servidor? (Debo añadir que el servidor es un servidor en Internet, por lo que es tan visible como google.com
. Es un servidor Windows alojado, pero probablemente tendría permiso para instalar el software si fuera necesario).
Hasta donde yo sé, la mejor manera de trabajar en mercurial en este tipo de configuraciones es que el repositorio extraiga los cambios de la fuente, en lugar de que la fuente empuje hacia el "servidor".
No hay una "mejor forma de trabajar" que yo sepa. Hay una multitud de posibles flujos de trabajo que Mercurial admite, e incluso los enumera en su guía . De hecho, estoy usando la configuración "svn-ish", donde desarrollo en un repositorio local y tengo varios repositorios en un servidor compartido. Si hay algún cambio, los empujo al repositorio central. Los presiono sobre HTTPS, y (por supuesto) he limitado las capacidades de inserción solo a los desarrolladores. Es una excelente forma de trabajar.
Puedo entender que la gente quiera que el repositorio central extraiga los cambios de los clones que crearon los desarrolladores, pero no hay nada que lo detenga a usted y a su compañero de trabajo en un repositorio dedicado en el servidor compartido, desde el cual el repositorio central es capaz de extraer .
Es posible que desee reconsiderar sus ideas sobre el asunto empujando v tirando?
Ciertamente, hay muchos servidores SSH disponibles para Windows. Aquí hay dos ejemplos:
Consulte los ejemplos de Putty en el libro Mercurial: The Definitive Guide para la conectividad del usuario de Windows.
Comparte una carpeta de Dropbox que contenga tu ''repositorio de servidor''.
Creo que leer la documentación del proyecto es un buen comienzo: https://www.mercurial-scm.org/wiki/PublishingRepositories .
Eche un vistazo a rhodecode.org , es un servidor Mercurial de fuente abierta con muchas de las características que Kiln ofrece, incluida la búsqueda de códigos. Incluso se integra muy bien con LDAP para que pueda autenticar a los usuarios de HG con su dominio de Windows.
La solución más simple parece ser usar carpetas compartidas de Samba, especialmente en entornos solo de Windows. Lo acabo de configurar, parece funcionar.
Mercurial y PuTTY es una solución bien respaldada y bien documentada.
No lo he usado yo mismo, pero eche un vistazo a Mercurial Server de LShift.
Nuestra configuración: servidor Windws + Apache + Mercurial
Parte de nuestro http.conf
<Location /hg>
DirectoryIndex hgweb.cgi #from mercurial source, put it in htdocs/hg
AddHandler cgi-script .cgi
Options ExecCGI
Options +FollowSymLinks
Order deny,allow
Deny from all
<Limit GET POST>
Allow from 127.0.0.1 10.1.2
</Limit>
AuthUserFile D:/hg/htpasswd
AuthGroupFile D:/hg/hggroups
AuthType Basic
AuthName "Mercurial xxxx repositories"
Require group admin somegroup
RewriteBase /hg
RewriteRule ^$ hgweb.cgi [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) hgweb.cgi/$1 [QSA,L]
</Location>
<Location /hg/project1>
Require group somegroup admin
</Location>
<Location /hg/project2>
Require group somegroup admin
</Location>
<Location /hg/test>
Require valid-user
</Location>
Hay otros archivos para configurar, como hgweb.conf / htpasswd / hggroups, pero son la parte fácil.
Ha estado funcionando muy bien. Si algún usuario quiere cambiar la contraseña, le pediré que vaya a un generador htpasswd en línea para generar la secuencia htpasswd para mí, la pondré en el archivo htpasswd.
Creo que nuestra configuración es bastante similar a lo que hace el Servidor VisualSvn. (por supuesto, una versión muy simplificada)
Puede usar SCM-Manager para compartir sus repositorios a través de http oder https.
Recomiendo poner su proyecto en http://bitbucket.org/ , un sitio de alojamiento de repositorios de Mercurial. Si no desea que otros vean la fuente, tienen la configuración para crear repositorios privados. Creo que tiene permitido un repositorio privado antes de que comiencen a cobrarle por ello.
Editar: Bitbucket ahora ofrece repositorios privados / ocultos ilimitados .
Sugiero horno de www.fogbugz.com. Es una solución de control de fuente comercial, básicamente una envoltura de Windows con Mercurial bajo el capó.
También podría simplificar la administración para tercerizarlo, si solo tienes un repositorio y un par de tipos empujándolo / tirando de él, podrías hacer mucho peor que solo alojarlo en algún lugar como Bitbucket . (Y para una solución de un repositorio, en realidad es gratis).