Mercurial "server"

He estado usando Mercurial por un time, 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 files de los demás.

Me gustaría configurar un repository de Mercurial en un server, hacer de ese repository el "server", por lo que mis cambios y los del otro editor cambian a ese server (básicamente, el model de Subversion / CVS ); Aunque me gusta Mercurial y no quiero cambiar a algo como Subversion.

Aquí en mi propia networking, todo está hecho en Linux, y mi "server" tiene instalado OpenSSH . Así que presionar mis cambios (trabajo en múltiples computadoras) desde una computadora hasta el server es solo una cuestión de "hg push"; el protocolo utilizado es SSH para transferir los cambios.

El problema es que uso Linux, el server 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 repository extraiga los cambios de la fuente, en lugar de que la fuente empuje hacia el "server". Estoy detrás de varios firewalls (no del todo mi networking) y mi computadora no será visible desde el server, 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 "server" para extraer de eso).

¿Cuál es la mejor manera para que ambos editores obtengan nuestros cambios en el repository del server? (Debo añadir que el server es un server en Internet, por lo que es tan visible como google.com . Es un server Windows alojado, pero probablemente tendría permiso para instalar el software si fuera necesario).

Sugiero horno de http://www.fogbugz.com. Es una solución de control de fuente comercial, básicamente una envoltura de Windows con Mercurial bajo el capó.

Creo que leer la documentation del proyecto es un buen comienzo: https://www.mercurial-scm.org/wiki/PublishingRepositories .

También podría simplificar la administración para tercerizarlo, si solo tienes un repository y un par de types 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 repository, en realidad es gratis).

Eche un vistazo a rhodecode , es un server 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.

Recomiendo poner su proyecto en http://bitbucket.org/ , un sitio de alojamiento de repositorys de Mercurial. Si no desea que otros vean la fuente, tienen la configuration para crear repositorys privados. Creo que tiene permitido un repository privado antes de que comiencen a cobrarle por ello.

Editar: Bitbucket ahora ofrece repositorys privados / ocultos ilimitados .

Ciertamente, hay muchos serveres SSH disponibles para Windows. Aquí hay dos ejemplos:

  • SSH Windows
  • SSHd gratis

Consulte los ejemplos de Putty en el libro Mercurial: The Definitive Guide para la conectividad del usuario de Windows.

Puede usar SCM-Manager para compartir sus repositorys a través de http oder https.

Mercurial y PuTTY es una solución bien respaldada y bien documentada.

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.

No lo he usado yo mismo, pero eche un vistazo a Mercurial Server de LShift.

Nuestra configuration: server 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 files 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 file htpasswd.

Creo que nuestra configuration es bastante similar a lo que hace el Servidor VisualSvn. (por supuesto, una versión muy simplificada)

Comparte una carpeta de Dropbox que contenga tu 'repository de server'.

Hasta donde yo sé, la mejor manera de trabajar en mercurial en este tipo de configuraciones es que el repository extraiga los cambios de la fuente, en lugar de que la fuente empuje hacia el "server".

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 configuration "svn-ish", donde desarrollo en un repository local y tengo varios repositorys en un server compartido. Si hay algún cambio, los empujo al repository 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 repository 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 repository dedicado en el server compartido, desde el cual el repository central es capaz de extraer .

Es posible que desee reconsiderar sus ideas sobre el asunto empujando v tirando?