Subversion: Jak porównać różnice między przychodzącymi zmianami?

19

Chciałbym zobaczyć zmiany, które zrobili moi współpracownicy, zanim przyjmuję nadchodzące zmiany.

Zacznę od uzyskania statusu

svn st -u

... co mówi mi, że mam nadchodzącą zmianę

    *     9803   incomingChanges.html
M         9803   localChanges.html
M   *     9803   localAndIncoming.html

Widzę, co zmieniłem

svn diff localChanges.html

... ale jak mogę to zmienić localAndIncoming.html pokazać, co zostało zmienione, i jak to jest inne niż moja kopia robocza?

Andrew
źródło
Nie jest to odpowiedź na pytanie z linii poleceń, ale: w końcu, gdy już wiesz co różni się od kopii roboczej, prawdopodobnie będziesz chciał scalić zmiany w repozytorium z własnymi zmianami. Jeśli używasz do tego jakiegoś graficznego interfejsu użytkownika, to dlaczego nie używać GUI, aby pomóc Ci w początkowym porównywaniu? Narzędzia takie jak TortoiseSVN oferują takie porównanie. Ponadto, IDE, takie jak Eclipse, mogą przeglądać nadchodzące zmiany (nawet jeśli nie ma nic do połączenia - miło, aby zorientować się, co robią Twoi współpracownicy) bardzo łatwe , unikając automatycznego łączenia.
Arjan
1
Czy istnieje GUI sposób wyświetlania nadchodzących zmian za pomocą TortoiseSVN?
Christian
Chciałbyś również zmierzyć stronę incomingChanges.html, nie?
Raffi Khatchadourian

Odpowiedzi:

21

Wierzę, że potrzebujesz:

svn diff -rBASE:HEAD
joelittlejohn
źródło
2

FYI svn diff daje diff na podstawie niezmodyfikowanego pliku przechowywanego w .svn katalog nie oparty na wersji repo na żywo.

Możesz biegać svn update aby uzyskać subversion, aby spróbować aktualizacji (i ewentualnie scalić), a następnie wykonaj svn diff, ale to nie jest tak czyste, jak sądzę, że chcesz.

Wreszcie svn diff obsługuje tylko na repo. Przykład:

svn diff svn://svnserver/repo/localChanges.html -r REV_NO

Który domyślnie porównuje HEAD z przekazaną wersją.

Andy
źródło
2

Z tortoisesvn (jeśli używasz Windowsa)

  • Wywołaj ekran dziennika

  • Wybierz wersję głowy

  • Kliknij prawym przyciskiem myszy localAndIncoming.html

  • Wybierz Porównaj z kopią roboczą

Ghislain Hivon
źródło
0

Naprawdę nie możesz, dopóki nie pobierzesz nowej wersji. Takie ograniczenia były jednym z głównych powodów, dla których nowy typ kontroli źródła stał się ostatnio popularny. Nazywa się to zdecentralizowaną kontrolą źródła.
W tym nowym formularzu masz własne lokalne repozytorium, możesz wtedy dokonać zmian z głównego repozytorium i uruchomić na nim różnicę, jeśli nie podoba ci się wprowadzonych zmian, możesz przywrócić własne repozytorium i przejść z tego miejsca.

http://mercurial.selenic.com/

I tak, wiem, że sugerowanie zmiany produktów nie jest optymalnym rozwiązaniem, ale jest to jednak rozwiązanie.

Daisetsu
źródło
0

Wykonaj kolejne zakupy w nowym folderze.

cd ..
svn checkout  /path/to/repo clean_working_copy

Jeśli ponownie użyjesz clean_working_copy, nie zapomnij zaktualizować wcześniej

svn update clean_working_copy

Następnie porównaj swój plik z plikiem z clean_working_copy

diff your_working_copy/localAndIncoming.html clean_working_copy/localAndIncoming.html

Lub ze swoją preferowaną różnicą 3-kierunkową (moja jest kdiff3)

kdiff3 --L1 Base --L2 theirs --L3 mine your_working_copy/.svn/text-base/localAndIncoming.html clean_working_copy/localAndIncoming.html your_working_copy/localAndIncoming.html
Ghislain Hivon
źródło
Ta praca, ale scm powinien zapewnić bardziej zintegrowany sposób.
rds
0

Myślę

svn diff -r HEAD

prawie daje to, co chcesz. Jedyną rzeczą jest to, że + i - są odwrócone w stosunku do tego, czego oczekujesz.

Confusion
źródło