2009-01-06 19 views
6

Czy ktoś wie, jak eksportować tylko zmienione pliki z dwóch znaczników za pomocą svn?SVN eksportuje tylko zmienione pliki z tagów

Powiedzmy, że mam tag 1.0, a później naprawię błędy w bagażniku. Następnie jestem gotowy na wydanie nowej łatki, więc oznaczam ją jako 1.1. Teraz chcę wyeksportować zmienione pliki między znacznikami 1.0 i 1.1. czy to możliwe?

+0

Myślę, że poradziłby sobie z tym, co próbujesz zrobić: [http://stackoverflow.com/questions/42246/subversion-partial-export](http://stac koverflow.com/questions/42246/subversion-partial-export) – Jared

Odpowiedz

12

svn diff --summarize url/do/tag1.0 url/do/tag1.1

daje listę plików, które zmieniły się pomiędzy tymi dwoma znacznikami. Powinieneś być w stanie zanalizować tę listę w skrypcie i wyeksportować każdy plik indywidualnie albo

svn export url do/pliku/filePath

lub

svn cat URL do/file> plik

/

Jeśli używasz TortoiseSVN:

  • otworzyć przeglądarkę repozytorium, przejdź do tag1.0 prawym przyciskiem myszy, wybierz „znak dla porównania”
  • Przejdź do tag1.1 prawym przyciskiem myszy, wybierz „porównać adresy URL”
  • w oknie dialogowym plik diff, zaznaczyć wszystkie pliki/foldery, które zmieniły się pomiędzy znacznikami (Ctrl + A)
  • prawym przyciskiem myszy, wybierz " eksport do ... "
+0

kiedy wybieram cały eksport do nie istnieje, działa tylko dla jednego pliku: -/ – Sasha

1

Potrzebowaliśmy czegoś takiego. Napisałem więc małe narzędzie java.

nadzieję, że to przydatne do kogoś: github svn-diff-export

9

To my solution dla TortoiseSVN:

  • Otwórz przeglądarkę repo.
  • Right click tag1 i wybierz "Zaznacz do porównania"
  • kliknij prawym przyciskiem tag2 i wybierz "Porównaj adresy URL"
  • Zaznacz wszystko (Ctrl + A) w liście plików
  • prawym przyciskiem myszy i „Wybór Eksport do ...”
  • Podaj katalog docelowy i naciśnij OK

Co kończy się eksportowane to wszystkie pliki, trzeba napisać na wierzchu istniejącego eksportu, aby go (nie aprowizacji stosujących dyferencjału aktualizacji). Przydatne, na przykład, do aktualizacji stron internetowych za pomocą FTP.

Jedynym zastrzeżeniem jest to, że oczywiście nie będzie obsługiwać usuniętych plików. Mimo to przynajmniej wskaże, które pliki należy usunąć ręcznie.

+0

niestety nie zachowa struktury katalogów :( – gbjbaanb

+0

@gbjbaanb Tak to robi. Właśnie testowany z TSVN 1.6.7. –

+0

Wow, robi to - początkowo użyłem listy plików w dzienniku dla rewizji, zaznacz wszystkie i "wyeksportuj do ..." zapisuje je jako pojedynczy katalog. Zastanawiam się, czy to jest funkcja według projektu. – gbjbaanb

6
  1. Korzystanie TortoiseSVN, kliknij prawym przyciskiem myszy na folderze roboczym i wybierz „Pokaż dziennik” z menu TortoiseSVN.

  2. Kliknij rewizji że ostatnio opublikowane (# 85 w tym przykładzie)

  3. Ctrl + kliknięcie wersji HEAD (lub cokolwiek rewizja chcesz zwolnić tj nr 178), tak że zarówno stare i nowe poprawki są podświetlone.

  4. Kliknij prawym przyciskiem myszy jedną z zaznaczonych wersji i wybierz "Porównaj wersje". Spowoduje to otwarcie okna dialogowego zawierającego listę wszystkich nowych/zmodyfikowanych plików.

  5. Wybierz wszystkie pliki z tej listy (Ctrl + A), a następnie kliknij prawym przyciskiem myszy na podświetlonej plików i wybierz „wybór Eksportuj do ...”

Źródło: http://www.verysimple.com/blog/2007/09/06/using-tortoisesvn-to-export-only-newmodified-files/

0

podstawie Stefana pomysł:

REV=123456 
URL=https://... 
BASEDIR=some_dir 
svn diff --summarize -c $REV $URL | while read A B; do 
    svn cat -r $REV $B > ${B##*$BASEDIR} 
done 
Powiązane problemy