Somos una consultora de software con multitud de proyectos para diferentes clientes. Tradicionalmente usamos Subversion, pero actualmente estamos considerando mudarnos a Git.
Una parte importante de los documentos que producimos se comparte con nuestros clientes (requisitos, diseños globales, especificaciones de prueba, etc.), y usamos MS Office para producirlos. En Subversion, podríamos usar su función "Bloquear" para asegurarnos de que nadie estaba editando el mismo documento al mismo tiempo. En Git, no puedes hacer eso ya que por su naturaleza distribuida, git no tiene bloqueos.
Las cerraduras son realmente poco más que un mecanismo de comunicación, pero son muy efectivas.
Actualmente, nuestro código y los documentos orientados al cliente están típicamente en diferentes subcarpetas de un repositorio svn diferente. Al pasar a git, ¿qué recomendarías que hagamos? Veo un conjunto de opciones:
Movimos los repositorios de svn a git 1-on-1. En lugar de usar bloqueos en los archivos de Office, hacemos lo que la gente sugiere y de alguna manera intentamos cambiar nuestro flujo de trabajo para solucionarlo. Esto podría estar funcionando en una rama en cualquier edición de documento, y fusionarlo en una revisión. Este enfoque se divide, por ejemplo, en hojas de Excel que contienen información de gestión de proyectos; son fácilmente editados por los miembros del equipo (y alentamos que esto se haga), pero no están sujetos a ningún proceso de revisión formal
Usamos git para código y svn para documentos y gestión de proyectos. Esto tiene la desventaja de que ciertos documentos más de diseño no estarán "cerca" del código que especifica, lo que aumenta la posibilidad de que las personas se olviden de actualizarlos. Además, todos deben usar y comprender dos conjuntos de herramientas. Dicho esto, tal vez esta sea una gran oportunidad para pasar a herramientas de documentos basadas en texto (latex, markdown, HTML, lo que sea) para documentos de diseño que no estén orientados al cliente.
Como 1, pero pirateamos un
git lock
comando que hace lo que svn lock hace por nosotros (alternar el indicador de solo lectura de manera apropiada y sincronizarlo con un servidor de alguna manera).
No compro el argumento de que los bloqueos no funcionan en un DVCS porque el sistema incluso debería funcionar cuando estás completamente desconectado. Las cerraduras de SVN también pueden anularse; Son un mecanismo de comunicación . Sin algún tipo de conexión de red, no podrá hacer que su computadora se comunique mucho.
No podemos ser la única tienda que está muy contenta con cómo svn lock
encaja en nuestro flujo de trabajo, ¿verdad?
¿Alguna idea o consejo?
Encontré /programming/119444/locking-binary-files-using-git-version-control-system pero la discusión es bastante técnica; Estoy buscando formas de resolver o evitar el problema práctico de dos miembros del equipo que editan el mismo archivo binario al mismo tiempo.