314 votos

¿Cómo a git-svn clonar las últimas revisiones n desde un repositorio Subversion?

Problema

¿Cómo crear una copia superficial con git-svn desde un repositorio de Subversion, es decir. ¿cómo se puede extraer sólo las tres últimas revisiones?

La git clone de comandos puede conseguir el último n de las revisiones de un repositorio de Git si utiliza la opción --depth, es decir. usted recibe una copia superficial del repositorio. Ejemplo:

git clone --depth 3 git://some/repo myshallowcopyrepo

Hay una opción similar para git-svn?

Mis descubrimientos hasta el momento

Hasta ahora sólo he encontrado el-rN opción donde N es la revisión de tirar. Ejemplo:

git svn clone -rN svn://some/repo

De acuerdo a la documentación que existe la posibilidad de usar-r$REVNUMBER:HEAD. He intentado lo siguiente para obtener los últimos 3 revisiones que devuelve un mensaje de error.

$ git svn clone --prefix=svn/ -s -rHEAD~3:HEAD http://some/svn/repo .
revision argument: HEAD~3:HEAD not understood by git-svn

Así que sustituye HEAD~3 con el número real de la tercera, pero la última revisión 534. Que funcionó, pero que me obliga a primera cifra el número de la revisión de la tercera pero el último commit.

$ git svn clone --prefix=svn/ -s -r534:HEAD http://some/svn/repo .

Documentación

git-clon

git-svn

238voto

Paul Puntos 12977

Ya has descubierto la forma más sencilla para especificar una copia superficial de Git-SVN, especificando el número de revisión SVN que desea iniciar su clon en ( -r$REV:HEAD ).

Estructura de datos de GIT se basa en indicadores en un grafo dirigido acíclico (DAG), que resulta trivial a caminar hacia atrás n comete. Pero en SVN (y por lo tanto en Git-SVN) tendrá que encontrar el número de revisión.

92voto

Christian Puntos 7253

Me encuentro con la siguiente frecuencia para conseguir un número limitado de revisiones de nuestra gran subversión de árbol (que pronto hemos de llegar a svn revisión 35000).

# checkout a specific revision
git svn clone -r N svn://some/repo/branch/some-branch
# enter it and get all commits since revision 'N'
cd some-branch
git svn rebase

Y una buena manera de saber cuando una rama de comenzar es hacer una svn log y encuentra el primer lugar en la rama (el último de la lista cuando se hace):

svn log --stop-on-copy svn://some/repo/branch/some-branch

Hasta ahora no he encontrado verdaderamente a la molestia de la pena en el seguimiento de todas las ramas. Se tarda demasiado tiempo para clonar y svn y git no trabajar juntos tan bien como me gustaría. Tiendo a crear los archivos de revisión y aplicar en el git clone de otra rama svn.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X