2012-03-19 12 views
20

Jeśli chodzi o svn-git, w jaki sposób mogę zobaczyć, co ma zostać wykonane: z git svn dcommit?Jak wyświetlić zmiany "git svn dcommit" przed dcommitting?

Oto polecenia I run:

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

Teraz to do repozytorium git - dobry. Ale zanim uruchomię git svn dcommit chciałbym zobaczyć różnicę, która zawiera zmiany, które zostałyby zatwierdzone do repozytorium SVN.

+3

Czy znalazłeś odpowiedź? –

Odpowiedz

2

Druga odpowiedź (Revised po komentarzach wskazujących --dry-bieg nie był wystarczający)

W zależności od Twoich oczekiwań, to może praca w obsłudze dziennik git tak:

git log remotes/svn.. --oneline 

Zwróć uwagę na dwa okresy na końcu. To pokazuje wszystkie zatwierdzenia w bieżącej gałęzi od ostatniego współdzielonego rodzica. W przypadku typowego użycia git-svn będą to wszystkie lokalne zatwierdzenia od ostatniego dcommit. (To zakłada, że ​​twoja zdalna nazwa oddziału SVN to "remote/svn". Możesz uruchomić "git branch -a", aby wyświetlić wszystkie gałęzie.) Ważne jest, aby zrozumieć, co to robi, zamiast po prostu uruchamiać to w dosłownym brzmieniu, ale być może zapewnia to więcej czego szukasz.


pierwsza odpowiedź

Można użyć --dry-run z dcommit:

git svn dcommit --dry-run 

Zobacz ten duplikat pytanie/odpowiedź: How to see what has been checked into git, but hasn't been committed to svn via dcommit?.

+0

To nie pokazuje żadnych przydatnych różnic, po prostu coś w stylu "Zaangażowanie w plik: /// svn/test1 ... diff-tree e8e4449bbf534d373694194873ea6a9ed41517bf ~ 1 e8e4449bbf534d373694194873ea6a9ed41527be' – Frank

+1

Edytowałem swoją odpowiedź z innym pomysłem. Aby było jasne, chociaż 'svn dcommit --dry-run' nie jest łatwy do zinterpretowania, jest precyzyjny w odniesieniu do tego, co ma zostać przekazane do SVN z punktu widzenia GIT. – kaliatech

+0

Po zobaczeniu odpowiedzi Tomasa zdałem sobie sprawę, że nie jestem pewien, czego tak naprawdę chciałeś. Różnica rzeczywistych zmian lub dziennik zatwierdzeń, które nie zostały jeszcze wycofane. Moje odpowiedzi oczywiście zapewniają to drugie. – kaliatech

15

Jeśli zdalny oddział nazywa git-svn (nazywa się to, że jeśli tylko zrobić zwykły git svn clone) następnie można zobaczyć diff między bieżącym oddział i git-svn:

git diff git-svn HEAD 

można zobaczyć wszystkie zmiany, które są obecne w twojej obecnej gałęzi, ale nie w repozytorium svn.

+0

Nie działa dla mnie, postępowałem zgodnie z radą podczas klonowania i dodałem przedrostek origin/so moja gałąź zdalna to "remote/origin/trunk". Tak więc musiałem użyć 'git diff origin/trunk HEAD'. Wersja dziennika jest również dobra: 'git log origin/trunk..HEAD'. – Zitrax

9

Wyjście 'git svn dcommit --dry-run' może być podawany do git znowu tak:

git diff-tree 2282c630eeef26fecbc3f3519be55a9dce094c80~12282c630eeef26fecbc3f3519be55a9dce094c80 -u 

Zwróć uwagę na '-u' na końcu. Zobaczysz różnicę.

Jeśli tylko chcesz zobaczyć coś takiego „” svn stat można wykorzystać „--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

Kiedy jestem w sytuacji rozpoczęcia git svn dcommit, po raz pierwszy otwarty gitk prośbą aby pokazać mi zobowiązuje do przekazania:

gitk git-svn.. 

ta zakłada, że ​​przed repo SVN jest naprawdę nazywa git-svn jak Tomasmentions. Jeśli nie masz pewności co do nazwy repozytorium SVN, po prostu uruchom gitk i wyszukaj gałąź, której nie stworzyłeś (i brzmi Git-SVN-ish).

Powiązane problemy