2010-02-10 8 views
13

Je souhaite effectuer un Diff entre un changement validé localement et entre le dernier changement validé par SVN. c'est-à-dire HEAD et ce qui est sur le coffre SVN Master.Git Diff entre HEAD et SVN Master

quelle serait la commande appropriée?

Vive

Répondre

2

La façon la plus simple de le faire serait faire une diff entre HEAD et l'importation de trunk dans un git.

Mais si vous ne pouvez pas faire un git svn rebase sur votre repo actuel parce que vous ne voulez rien importer (mais seulement voir la différence avec le repo SVN), vous pouvez cloner votre repo dans un second repo où vous pouvez à tout moment rafraîchir son contenu avec le SVN trunk.

Ensuite, vous déclarez une branche de suivi et chercher que repo2 dans votre repo actuel:

master/HEAD 
svn_trunk # tracks repo2/trunk/HEAD, refreshed by a git svn rebase 

et vous pouvez diff:

git diff svn_trunk..HEAD 
1

J'ai essayé ceci:

git diff HEAD ~ 3 HEAD

et cela a fonctionné comme je voulais voir le diff entre 3 changements engagés localement un d la tête sur le coffre.

Mais était-ce le bon chemin? Cela a fonctionné bien! :)

+0

Si vous savez que le dernier svn rebase était 'HEAD ~ 3', alors oui. Il devrait être le même que 'git diff HEAD ~ 3.» – VonC

6

Je suppose que vous parlez git-svn:

$ git-svn fetch    # get the latest from svn, without merging yet 
$ git diff ..remotes/git-svn # or <treeish>..remotes/git-svn 

Je ne sais pas si remotes/git-svn peut être ailleurs. Vérifier avec git branch -a.

6

git diff trunk travaillé pour moi!