2012-09-24 20 views
5

En un proyecto escolar que tenemos, el VCS en uso es SVN.Mantener dos archivos sincronizados entre dos repositorios: ¿enlaces simbólicos? o de otra manera?

Restricciones:

  • Nuestro profesor no quiere comprometerse código que no trabaja en el repositorio central.

  • Voy a estar trabajando en el código sobre la marcha. código que en un ordenador portátil, un ordenador de sobremesa y un ordenador en la oficina durante diferentes momentos del día (Ser productivo supongo)

  • no se nos permite en rama

estaba pensando que lo haría Guarde el archivo en el que estoy trabajando en otro repositorio (y tal vez GIT) para moverse y evite el "código muerto" en el repositorio principal. Después de eso, para evitar copiar las cosas entre los dos repos, me gustaría enlazar el archivo en un repositorio a otro. Y entonces, estaría cometiendo el archivo sin fin en un repositorio, y luego cuando termine, me comprometería con el otro.

Sin embargo, no sé cuál es el comportamiento de VCS con respecto a los enlaces simbólicos.

He leído an answer here in StackOverflow que GIT almacena un enlace simbólico como un archivo y cuando se recuperan, es lo devuelve a un enlace simbólico sin importar si el objetivo lo hace o no existe - esto no es bueno. Podría estar recibiendo "archivos muertos" en su lugar.

También he leído this documentation for SVN y no dice nada sobre lo que sale después de recuperar un enlace simbólico.

Y entonces, ¿qué debo hacer para sincronizar dos repositorios con el mismo archivo? ¿Debo ir a enlaces simbólicos o hay alguna otra manera?

+1

has considerado git-svn http://www.kernel.org/pub/software/scm/git/docs/git-svn.html puede manejar subversion <-> git operaciones sin ningún "enlace simbólico al archivo en una repo a las otras "cosas". –

+0

aquí hay un ejemplo de git svn workflow simple http://andy.delcambre.com/2008/03/04/git-svn-workflow.html –

+0

[bzr-svn] (http://doc.bazaar.canonical.com /beta/en/user-guide/svn_plugin.html) podría ser otra buena opción también. Subversion hará casi lo mismo que Git para enlaces simbólicos. Lo representa como un archivo especial internamente, y creará el enlace cuando finalice la compra. Sin embargo, el objetivo no tiene que existir, al igual que Git. En Windows, donde los enlaces simbólicos no existen, Subversion creará un archivo '.lnk' apuntando al directorio de destino. Los archivos '.lnk' son archivos de Explorer Link. – jszakmeister

Respuesta

2

Intro:

"Ningún código muerto" y "no hay ramas" es la política de desarrollo mala y fea, la política que lleva a un enorme las confirmaciones, no gestionables como resultado (la mayoría de veces)

  1. Olvidaste sobre el enlace simbólico puro, utilizar nativos herramientas y métodos
  2. (algunos) fuentes externas pueden estar vinculados a la subversión de recompra usando Subversion externals
  3. desarrollo móvil es (casi) questi irrelevante en la primera parte del problema: utilizar cualquiera (D) VCS de elección, que puede ser últimamente puenteados a Subversion (Mercurial, Git, Bazar, Fossil-SCM/sobre git-exportación /)
+1

No podría estar más de acuerdo con la política de desarrollo. – jszakmeister

2

Aquí es mi propuesta :

  1. clon de git svn < url para repo profesor>
  2. después del paso 1 usted tiene su copia local de la subversión de recompra
  3. git branch < nombre de la sucursal> - no se preocupe el profesor no verá esta rama
  4. trabajo en su rama y confirma lo que quiera hasta que haya terminado - todas las obras y se pasan las pruebas - es el momento para darle su código de profesor
  5. master git checkout
  6. svn git rebase - recogerá últimos cambios de la línea principal sVN
  7. git fusionar < su nombre de la sucursal> - se puede utilizar la opción --squash si el profesor le gusta ver única confirmación
  8. git svn dcommit - publicará los cambios en la línea principal

HTH.

Cuestiones relacionadas