2011-07-26 12 views
7

somos un pequeño equipo de 3 desarrolladores (Boss, yo y otro desarrollador que trabaja principalmente a distancia), y tengo la tarea de configurar un servidor de repositorio para Mercurial HG.¿Es una buena idea colocar Mercurial Repository en una unidad de red compartida?

Parece que puedo simplemente poner nuestro repositorio centralizado en una unidad de red compartida. Será extremadamente fácil de instalar, pero parece que existe el riesgo de que cualquiera de nosotros abuse de la conveniencia de trabajar/modifique el repositorio fuente directamente. Es por eso que estoy pensando en usar el servidor HgWebdir como una forma de controlar el acceso al repositorio central. Por lo tanto, no se recomienda el acceso directo al repositorio de origen central, pero el disco compartido estará aquí por si acaso.

Supongo que se trata de definir nuestro procedimiento interno de control de versiones, no una cuestión realmente de control de versiones, pero sigo adelante y formulo la pregunta. Como no me siento con la experiencia suficiente para tomar la decisión, y si no estoy 100% seguro de que mi razón sea válida, probablemente sea difícil para mí hacer cumplir la forma en que el sistema de control de versiones debe ser utilizado por otros desarrolladores.

Editar:

puedo ver que hay problemas potenciales en la carpeta compartida que trabajan con el software de control de versiones. Pero a nadie le importa explicar un poco más lo que sucedió detrás de la escena, cuando empuja a la carpeta compartida? Según tengo entendido, la unidad compartida es esencialmente un enlace/acceso directo compartido, por lo que para una unidad compartida, Mercurial en la máquina local solo mantiene el bloqueo para ese enlace, pero el hecho es que cada máquina de los usuarios podría tener una instancia diferente de Mercurial. bloqueo de enlaces, mientras que la instancia Mercurial del servidor tendrá su propio enlace en la unidad física. Puedo ver que es complicado, pero ¿cómo va a fallar? Puedo entender la conclusión, pero no pude vincular los hechos a la conclusión

+0

Otro punto a considerar es que las unidades de red a menudo tienen una semántica extraña del sistema de archivos que no funciona bien con los SCM. Al menos ese ha sido el caso de que hubo daños con las unidades de red involucradas (probablemente no se corrigió). – tonfa

+1

Supongo que alojar el código fuera del sitio, como en un repositorio privado en bitbucket o horno, está fuera de cuestión. –

+0

@Lasse No, ahora no. Por cierto, ¿alguien sabe si es viable alojar su código fuente de código abierto en Bitbucket? Sé que es una opción por razonamiento, pero ¿cómo puedo convencer a mi jefe además de decir "¿Por qué no?" –

Respuesta

7

No debe colocar el repositorio Mercurial en una carpeta compartida en un servidor de red porque Mercurial no puede mantener bloqueos de manera confiable en todas las situaciones en dicha configuración , y durante los empujones a ese repositorio central, los bloqueos son cruciales para evitar la corrupción del repositorio.

De hecho, me gustaría quitar el "no se anima" y sustituirla por "no es posible", y solamente servir al repositorio ya sea con o hgweb hg serve, siendo la primera la configuración recomendada para los servidores de larga duración.

+0

¿Qué tal si ejecuta HGWEB con el almacenamiento del repositorio ubicado en un recurso compartido de red? – Omar

2

Si tiene un servidor centralizado, puede instalar hgweb allí y presionar y tirar de él como fuente central y BACKUP-UP. Todavía tenemos servidores de Windows 2003 (no estoy en posición de cambiar eso) y con un poco de búsqueda en la web pude encontrar información sobre cómo configurar un hgweb en un servidor de Windows aunque la mayoría se refería a Windows Server 2007.

Cuestiones relacionadas