¿Cuál es un buen patrón de uso de Mercurial para esta configuration?

Tenemos dos desarrolladores en la misma networking cerrada (ugh, estúpida), otro desarrollador a un par de minutos en auto y un cuarto desarrollador a mitad de path en todo el país. El correo electrónico, ftp y medios de eliminación son todos methods posibles de transferencia para las personas que no están en la misma networking.

Soy uno de los dos desarrolladores de networkinges cerrados, considérenos la location "maestra".

¿Cuál es la mejor configuration / patrón de Mercurial para el grupo? ¿Cuál es la mejor manera de transmitir los cambios a / desde los desarrolladores remotos? Como estoy a cargo, calculé que tendría que mantener al less un repository principal con otro repository local en el que pueda desarrollar. Cada otra persona solo debería necesitar un clon del maestro. ¿Es esto correcto? Supongo que esto también me hace responsable de la fusión?

Como puede ver, todavía estoy tratando de entender el control de versión distribuida. No creo que haya otra forma de hacer esto con la situación de conectividad.

Los usuarios que se encuentran fuera de la networking pueden crear parches y / o usar el correo electrónico para enviar las actualizaciones al repository principal o a alguien, como usted, para fusionarlos. Las otras personas internas pueden tener copys locales, como usted mismo y fusionarse, pero si tiene estos parches fuera de la networking, sería mejor que una persona los trate para que nadie se confunda, pero eso es algo que tendría que hacer. Considérese.

Sincronizando para el otro lado, crearías un parche y les enviarías un correo electrónico o un disco flash a los desarrolladores remotos para parchar su sistema. Necesitarás una buena comunicación en el equipo, estoy agradecido de que no estoy en tus zapatos.

Esas son mis únicas sugerencias, bueno, lo obvio, ¡obtenles una connection VPN! Me encantaría saber cómo va, qué planes se estabilizan en un ritmo semanal, etcétera.

Los parches son una solución simple y versátil.

Para moverse por grupos más grandes de cambios (especialmente cambios binarys y fusiones), Mercurial ofrece packages binarys. Un package es básicamente el material binary que se envía a la networking cuando haces hg push , pero aquí se captura en un file.

Imaginemos que he obtenido un clon de alguna manera (mediante memory USB, DVD, etc.). Llámalo contra upstream . Luego hago un segundo clon, lo llamo devel . Hago todo mi desarrollo en devel y hago muchos commits, merges, etc. Dado que Mercurial se distribuye, puedo hacer todo esto sin connection.

Para ver qué sets de cambios faltan en la upstream lo hago

 % hg outgoing ../upstream 

Cuando tengo algo que enviar, puedo usar

 % hg bundle changes.hg ../upstream 

para get un file comprimido binary que contenga los sets de cambios, incluidos todos sus metadatos. Entonces puedo grabar este file en un CD y enviarlo por correo …

El destinatario del package puede hacer

 % hg incoming changes.hg 

para ver la list de cambios y

 % hg pull changes.hg 

para descomprimir y agregar los sets de cambios a su repository. Lo más probable es que tenga que fusionarse: esto es exactamente como si hubiera sacado directamente de su repository a través de HTTP o SSH.

Tenga en count que el repository en upstream solo se utiliza como una forma conveniente de recordar qué sets de cambios ya se encuentran en el repository en sentido ascendente. También puede anotar el ID del set de cambios y usar el hg bundle --base cuando se agrupa para especificar el set de cambios base (común). Vea el hg help bundle o busque en la wiki .

Correcto. La única forma de que algo llegue a la networking cerrada es a través de una unidad flash.