2010-03-04 17 views
17

Próbuję napisać poprawkę do wielu plików dla projektu open-source, ale kopia wzorcowa uległa zmianie od czasu rozpoczęcia pracy. Muszę uzyskać różnicę SVN (tylko pliki pod kontrolą wersji) między moją niezatwierdzoną wersją a wersją, z której została ona sprawdzona. Którą komendę SVN mogę użyć, aby znaleźć różnicę?Jak mogę znaleźć różnicę svn między kopią roboczą a arbitralnym obrotem?

Edytuj: Przykro mi, musiałem używać niewłaściwie terminu "kopia robocza". Muszę porównać moje niezatwierdzone zmiany z wersją wyłączoną, na której są oparte. Innymi słowy, sprawdziłem wersję 1000 i zmieniono pliki foo i bar. Numer rev jest teraz do 1015, ale muszę porównać moją wersję foo i bar do wersji rewizji 1000. Czy jest to łatwe polecenie (porównaj moją zmienioną kopię programu z wcześniejszą wersją)?

+0

wierzę, że używany termin "kopia robocza" poprawnie. Kiedy sprawdzasz rev 1000 to kopia robocza jest kopią rev 1000. Nie ma to znaczenia, że ​​podstawa to 1015. Musisz tylko określić N (która jest normalnie podstawowa) na 1000 jako prawie wszystkie polecenia domyślnie bazuje. Więc svn diff -r1000 powinien działać idealnie dla ciebie (przypuśćmy, że naprawdę sprawdziłeś rev 1000). Jeśli sprawdzisz samą różnicę, to powie, jaką wersję porównał (jak pokazał ezpz w swojej odpowiedzi) – Tom

Odpowiedz

13

Możesz użyć parametru -rN: M z poleceniem diff, który określa wersje, które chcesz porównać. Po prostu podaj wersję, z której została wyewidencjonowana twoja kopia robocza (możesz pominąć M jako domyślną kopię roboczą) i powinieneś dostać to, czego potrzebujesz.

Jeśli nie pamiętasz oryginalnego numeru wersji, spróbuj uruchomić svn status -v, a pierwsza kolumna powinna go wyświetlić.

Więcej informacji svn help diff ...

7

svn diff przyjmuje argument -rN:M, który domyślnie przyjmuje wartość N == BASE i M == working copy. Czy svn diff -r REV gdzie REV jest wersją, której nie chcesz używać?

Aby odpowiedzieć na to zmienił, że masz następujące elementy:

$ ls 
foo bar baz 
$ svn st -u 
Status against revision: 1071 
$ echo "more stuff" >> foo 
$ svn diff -r 1000 foo 
Index: foo 
=================================================================== 
--- foo (revision 1000) 
+++ foo (working copy) 
... 

Wierzę, że to jest to, czego po, tak?

0

Jeśli twoim celem było dostać raport tylko nazwy plików, w których zawartość uległa zmianie, to powinno załatwić sprawę:

svn diff | grep 'Index: ' . 
Powiązane problemy