2012-03-19 17 views
20

Con svn-git, ¿cómo puedo ver lo que está a punto de cometer con git svn dcommit?¿Cómo ver los cambios 'git svn dcommit' antes de realizar la transacción?

Éstos son los comandos que ejecuta:

git svn clone file:///svn/test1 test1-git 
cd test1-git 
echo "first line" > test1.txt 
git add test1.txt 
git commit 

ahora es confirmado en el repositorio Git - buena. Pero antes de ejecutar git svn dcommit me gustaría ver un diff que contenga los cambios que se comprometerían con el repositorio SVN.

+3

¿Has encontrado una respuesta? –

Respuesta

2

segunda respuesta (Revisado después de los comentarios que indican --dry plazo no era suficiente)

En función de sus expectativas, que podría trabajo a utilizar git log así:

git log remotes/svn.. --oneline 

Tenga en cuenta los dos períodos al final. Eso mostrará todos los commits en la rama actual desde el último padre compartido. En el caso del uso típico de git-svn, esto sería todos los commits locales desde el último dCommit. (Esto supone que su nombre de sucursal SVN remota es "remotes/svn". Puede ejecutar "git branch -a" para enumerar todas las ramas). Es importante entender qué está haciendo esto en lugar de ejecutarlo al pie de la letra, pero quizás esto proporcione más de Qué estás buscando.


Primera respuesta

Puede utilizar --dry plazo con dcommit:

git svn dcommit --dry-run 

Ver este duplicado pregunta/respuesta: How to see what has been checked into git, but hasn't been committed to svn via dcommit?.

+0

Eso no muestra ningún diff útil, solo algo como 'Committing to file: /// svn/test1 ... diff-tree e8e4449bbf534d373694194873ea6a9ed41517bf ~ 1 e8e4449bbf534d373694194873ea6a9ed41527be' – Frank

+1

He editado mi respuesta con otra idea. Para que quede claro, aunque el 'svn dcommit --dry-run' no es fácil de interpretar, es preciso con respecto a lo que está a punto de comprometerse con SVN desde el punto de vista de GIT. – kaliatech

+0

Después de ver la respuesta de Tomás, me di cuenta de que no estoy seguro de lo que realmente quería. Una diferencia de cambios reales o un registro de confirmaciones que aún no se han comprometido. Mis respuestas obviamente proveen lo último. – kaliatech

15

Si su rama remota se llama git-svn (Se llama que si usted acaba de hacer una llanura git svn clone) a continuación se puede ver un diff entre la rama actual y git-svn:

git diff git-svn HEAD 

Se podría ver todos los cambios que se están presentes en su rama actual, pero no en el repositorio svn.

+0

No funcionó para mí, seguí el consejo al clonar y agregué el origen del prefijo/así que mi rama remota es 'remotos/origen/troncal'. Por lo tanto, tuve que usar 'git diff origin/trunk HEAD'. La versión de registro también es agradable: 'git log origin/trunk..HEAD'. – Zitrax

9

La salida de 'git svn dcommit --dry-run' se puede alimentar a git de nuevo de esta manera:

git diff-tree 2282c630eeef26fecbc3f3519be55a9dce094c80~12282c630eeef26fecbc3f3519be55a9dce094c80 -u 

Nota la '-u' al final. A continuación, verá una diferencia.

Si lo que desea es ver algo como 'svn stat' se puede utilizar '--stat':

krausem-> git diff-tree f00e37882b7186e9e7f38c2fa28778e39734e2e7~1 f00e37882b7186e9e7f38c2fa28778e39734e2e7 --stat 
.../src/main/webapp/tiles/vertrag/freiKlauseln.jsp | 9 +++++++++ 
1 files changed, 9 insertions(+), 0 deletions(-) 
1

Cuando estoy en la situación de iniciar un git svn dcommit, que abre por primera vez y pedirle que gitk para mostrarme los compromete a transferir:

gitk git-svn.. 

Esto supone que su repositorio SVN aguas arriba en realidad se llama git-svn como Tomasmentions. Si no está seguro del nombre de su repositorio de SVN en sentido ascendente, simplemente inicie gitk y busque una rama que no haya creado (y suena Git-SVN-ish).

Cuestiones relacionadas