este es el flujo de trabajo que utilizo actualmente para mis proyectos SVN (nunca uso ramas SVN, y algunos proyectos se trabajan activamente por otras personas también):git & svn externals: ¿una solución final?
- en el servidor, haga lo inital
git svn fetch
que podría tomar horas También crea una rama 'compilar'. - clonación en un equipo de desarrollo es ahora rápido:
git clone srv://project.git, git checkout build
seguido porgit update-refs ..., git svn fetch
para restablecer el enlace al repositorio SVN - trabajo, cometer, cometer el trabajo, ...
- para comprobar si las cosas están en su sano juicio, a la
git push build
servidor y desencadenar una compilación en Hudson para esa rama - para almacenar el trabajo para que pueda trabajar en él desde otra máquina, también empujar la rama de compilación
- cuando esté satisfecho, unir se compromete en pasos lógicos (por ejemplo, uno para cada error) , comprométase con svn y restablezca todo, como
git checkout master, git merge build, git svn dcommit, git push, git checkout build, git rebase master, git push build
Ingrese svn externals. Probé todas las secuencias de comandos here, pero todas fallaron. Mis externos están configurados como esto:
/path/to/x x
/path/to/y/z y/z
/path/to/a/b.file a/b.file
y los guiones hacen cosas como tratar de crear /path/to/x
en la raíz del sistema de archivos y git svn fetch /path/to/x
. Además, los archivos individuales parecen causar más problemas. (subestación 1: ¿cuál es el formato svn: externals para el que se escribieron estos scripts?)
Parece que no es difícil modificar uno de los scripts para manejar mi situación y replicar la estructura de directorios que estoy buscando correctamente, pero luego me queda un gran problema: si cambio un archivo en los directorios x y y/z, no veo una manera de unir esto en un solo commit svn y esa es una de las razones por las que comencé a usar git en primer lugar.
De ahí la pregunta: ¿hay alguna manera de que pueda replicar el flujo de trabajo anterior, utilizando solo partes de un cierto repositorio svn, de tal forma que pueda hacer svn dcommit en la raíz? Preferiría una solución lista para usar que funcione tanto en Linux como en Windows.
edit Rápidamente pirateé uno de los scripts que encontré y lo hice replicando la estructura del directorio de los svn externals. No puedo clonar archivos individuales, sin embargo, aquí está la salida:
git svn clone -r HEAD srv://svn/repo/path/to/projects.sln
Initialized empty Git repository in xxx/projects.sln/.git/
Invalid filesystem path syntax: REPORT request failed on '/svn/repo/!svn/vcc/default':
Cannot replace a directory from within at yyy/git/libexec/git-core/git-svn line 5114
de preguntas adicionales 2: ¿no es posible ir a buscar a través de un único archivo svn git?
Encontré que [este script] (https://github.com/mgee/git-svn-ext) funciona con las versiones actuales de SVN y Git . –
@IvanKoblik gracias por publicarlo. Aunque tengo que admitir que simplemente dejé de hacer que todos los repositorios estén sincronizados, forzando a todos los colegas a usar también git: P – stijn
Después de usarlo por un tiempo, incluso con el script, es muy engorroso. Creo que git-svn no lo corta para repositorios SVN con externos, tu sol es la mejor que existe. –