Manuals

Dodatek D. Automatyzacja TortoiseSVN

Spis treści

Polecenia TortoiseSVN
Uchwyt URL Tsvncmd
Polecenia TortoiseIDiff
Polecenia TortoiseUDiff

Ponieważ wszystkie polecenia TortoiseSVN są kontrolowane przez parametry wiersza polecenia, można zautomatyzować za pomocą skryptów wsadowych lub uruchamiać konkretne polecenia i okna dialogowe z innych programów (np. ulubionego edytora tekstu).

Ważne

Pamiętaj, że TortoiseSVN jest GUI klienta, a ten przewodnik automatyki pokazuje jak wywołać okna dialogowe TortoiseSVN aby gromadzić dane wprowadzone przez użytkownika. Jeśli chcesz napisać skrypt, który nie wymaga żadnego wejścia, należy użyć oficjalnego klienta linii poleceń Subversion.

Polecenia TortoiseSVN

Program GUI TortoiseSVN nosi nazwę TortoiseProc.exe. Wszystkie polecenia są określone przez parametr /command:abcd, gdzie abcd jest wymaganą nazwą polecenia. Większość z tych poleceń wymaga co najmniej jednego argumentu ścieżki, który jest podawany przez /path:"jakaś\ścieżka". W poniższej tabeli polecenie odnosi się do parametru /command:abcd a ścieżka odnosi się do parametru /path:"jakaś\ścieżka".

Jest specjalne polecenie nie wymagające parametru /command:abcd, gdy jednak nie wskazano nic w linii poleceń, jest uruchamiany monitor projektu. Jeżeli podano opcję /tray, monitor projektu uruchamiany jest ukryty i dodaje tylko ikonę w zasobniku systemowym.

Ponieważ niektóre polecenia mogą przyjmować listę ścieżek docelowych (np. zatwierdzenie kilku konkretnych plików) parametr /path może potrwać kilka ścieżek oddzielonych znakiem *.

Można również określić plik, który zawiera listę ścieżek oddzielonych znakami nowej linii. Plik musi być w formacie UTF-16, bez BOM. eśli wskażecie taki plik, użyjcie /pathfile zamiast /path. Aby TortoiseProc usunął ten plik po wykonaniu polecenia, można przekazać parametr /deletepathfile. Bez wpisania /deletepathfile, konieczne jest usunięcie ręczne tego pliku lub pozostanie on po operacji.

Okno dialogowe postępu, które jest używana do zatwierdzenia, aktualizacji i wielu innych poleceń zwykle pozostaje otwarte po zakończeniu polecenia dopóki użytkownik nie naciśnie przycisku OK. Można to zmienić poprzez zaznaczenie odpowiedniej opcji w oknie ustawień. Ale użycie tego ustawienia spowoduje zamknięcie okna dialogowego postępu, niezależnie czy uruchomiono polecenie z pliku wsadowego czy z menu kontekstowego TortoiseSVN.

Aby określić inną lokalizację pliku konfiguracji, użyć należy parametru /configdir:"ścieżka\do\folderu\konfiguracji". Nadpisze to domyślną ścieżkę, w tym ustawienia rejestru.

Aby zamknąć automatycznie okno postępu na końcu polecenia bez wykorzystania stałych ustawień można przekazać parametr /closeonend.

  • /closeonend:0 nie zamykać okna automatycznie

  • /closeonend:1 zamknąć automatycznie jeśli brak błędów

  • /closeonend:2 zamknąć automatycznie jeśli brak błędów i konfliktów

  • /closeonend:3 zamknąć automatycznie jeśli brak błędów, konfliktów i scaleń

Aby zamknąć okno dialogowe postępu dla operacji lokalnych, jeśli nie ma błędów i konfliktów, należy przekazać parametr /closeonend.

Poniższa tabela zawiera listę wszystkich poleceń, które można wykonać za pomocą wiersza poleceń TortoiseProc.exe. Jak opisano powyżej, powinny one być stosowane w postaci /command:abcd. Wewnątrz tabeli przedrostek /command jest pomijany w celu zaoszczędzenia miejsca.

Tabela D.1. Lista dostępnych poleceń i opcji

PolecenieOpis
:aboutPokazuje okno informacji o programie. Jest ono pokazywane również jeśli nie podano polecenia.
:log

Otwiera okno dziennika. /path wskazuje plik lub folder dla którefo ma zostać wyświetlony dziennik. Mogą zostać ustawione dodatkowe opcje:

  • /startrev:xxx,

  • /endrev:xxx,

  • /limit:xxx limits the amount of fetched messages

  • /strict włącza pole wyboru 'zatrzymaj-na-kopii',

  • /merge włącza pole wyboru 'włącznie z wersjami scalonymi',

  • /datemin:"{ciągdaty}" ustawia datę początkową filtrowania, a

  • /datemax:"{ciągdaty}" ustawia datę końcową filtrowania. Format daty jest taki sam jak używany przez svn dla dat wersji.

  • /findstring:"filtrowanyciag" wypełnia filtrowany tekst,

  • /findtext wymusza na filtrze wyszukiwanie tekstu a nie wyrażenia regularnego lub

  • /findregex wymusza na filtrze użycie wyrażenia regularnego a nie zwykłego wyszukiwania tekstowego, a

  • /findtype:X gdzie X to numer pomiędzy 0 a 511. Liczby te stanowią sumę następujących opcji:

    • /findtype:0 filtrować według wszystkiego

    • /findtype:1 filtrować według wiadomości

    • /findtype:2 filtrować według ścieżek

    • /findtype:4 filtrować według autorów

    • /findtype:8 filtrować według rewizji

    • /findtype:16 niewykorzystane

    • /findtype:32 filtrować według ID błędów

    • /findtype:64 niewykorzystane

    • /findtype:128 filtrować według daty

    • /findtype:256 filtrować według zakresu dat

  • Jeśli wskazano /outfile:sciezka\do\pliku, wskazane wersje zostaną zapisane dowskazanego pliku po zamknięciu okna. Wersje są zapisywane w tym samym formacie jaki został użyty w oknie scalania.

An svn date revision can be in one of the following formats:

  • {2006-02-17}

  • {15:30}

  • {15:30:00.200000}

  • {"2006-02-17 15:30"}

  • {"2006-02-17 15:30 +0230"}

  • {2006-02-17T15:30}

  • {2006-02-17T15:30Z}

  • {2006-02-17T15:30-04:00}

  • {20060217T1530}

  • {20060217T1530Z}

  • {20060217T1530-0500}

:checkout

Opens the checkout dialog. The /path specifies the target directory and the /url specifies the URL to checkout from. If you specify the key /blockpathadjustments, the automatic checkout path adjustments are blocked. The /revision:XXX specifies the revision to check out.

If you specify /outfile:"path/to/file" the specified file will contain three lines after a checkout. The first line is the checkout path, the second line the url and the third the revision.

:importOtwiera okno importu. /path określa katalog z danymi do importu. Można również określić przełącznik /logmsg by przekazać predefiniowane opisy zmian do okna importu. Lub, jeśli nie chce się przekazać opisu zmiany z linii poleceń, należy użyć /logmsgfile:ścieżka, gdzie ścieżka wskazuje na plik zawierający opis zmiany.
:updateAktualizuje kopię roboczą w /path do HEAD. Jeśli dodano opcję /rev to wyświetlane jest okno dialogowe z pytaniem użytkownika, do której wersji zastosować uaktualnienie. By uniknąć okienka wskaż numer wersji /rev:1234. Inne opcje to /nonrecursive, /ignoreexternals i /ignoreexternals. /stickydepth wskazuje, że głębokość powinna być określona ściśle, tworząc rzadkie pobieranie. Można ustawić /skipprechecks by pominąć wszystkie sprawdzenia wykonywane przed aktualizacją. Jeśli go wskazano, zostaje zablokowany przycisk Pokaż dziennik, zaś menu kontekstowe pokazywania różnic pozostaje również zablokowane po aktualizacji.
:commitOtwiera okno dialogowe zatwierdzenia. /path określa katalog docelowy lub listę plików do zatwierdzenia. Można również określić przełącznik /logmsg dla przekazania predefiniowanego opisu zmiany do okna zatwierdzenia. Lub, jeśli nie chcecie przekazać opisu zmiany z linii poleceń, należy użyć /logmsgfile:ścieżka, gdzie ścieżka wskazuje na plik zawierający opis zmiany. Aby wstępnie wypełnić pole ID błędu (w przypadku prawidłowej konfiguracji integracji z trackerami błędów), można użyć /bugid:"tutaj id błędu".
:addDodaje pliki z /path do kontroli wersji.
:revertWycofuje lokalne modyfikacje kopii roboczej. /path informuje, jakie elementy przywrócić.
:cleanupUsuwa przerwane lub anulowane polecenia i odblokowuje kopię roboczą w /path. Konieczne jest wykonanie /cleanup by przeprowadzić rzeczywiste czyszczenie. Użyjcie /noui aby zapobiec pojawieniu się okna wyniku (mówiącego o zakończeniu oczyszczenia albo wyświetlającego komunikat błędu). /noprogressui wyłącza również okno dialogowe postępu. /nodlg wyłącza wyświetlenie okna oczyszczania, w którym użytkownik może wybrać, gdzie dokładnie należy wykonać uporządkowanie. Dostępne działania mogą być określone przy użyciu opcji /cleanup dla statusu uporządkowania, /breaklocks by złamać wszystkie blokady, /revert by wycofać niezatwierdzone zmiany, /delunversioned, /delignored, /refreshshell, /externals, /fixtimestamps and /vacuum.
:resolveOznacza skonfliktowany plik podany w /path jako rozwiązany. Jeśli jest podane /noquestion, wtedy rozwiązanie jest wykonywane bez poprzedzającego pytania, czy naprawdę należy to zrobić.
:repocreateTworzy repozytorium w /path
:switchOtwiera okno przełączenia. Folder /path określa miejsce docelowe zaś /url to adres URL do przełączenia.
:exportEksportuje kopię roboczą z /path do innego katalogu. Jeśli /path wskazuje na niewersjonowany folder, zostaniecie zapytani o adres URL do eksportu do katalogu z /path. Jeśli podacie klucz /blockpathadjustments, automatyczna korekta ścieżki eksportu zostanie zablokowana.
:dropexportEksportuje kopię roboczą z /path do folderu wskazanego w /droptarget. To działanie nie wykorzystuje okna dialogowego eksportu, ale wykonuje eksport bezpośrednio. Opcja /overwrite wskazuje, że istniejące pliki zostaną nadpisane bez potwierdzenia, zaś opcja /autorename, że jeśli pliki istnieją, pliki eksportowane zostaną przemianowane bu uniknąć nadpisania. Opcja /extended może zawierać localchanges by wyeksportować tylko pliki zmienione lokalnie, albo unversioned by wyeksportować również wszystkie elementy niewersjonowane.
:dropvendorCopies the folder in /path recursively to the directory specified in /droptarget. New files are added automatically, and missing files get removed in the target working copy, basically ensuring that source and destination are exactly the same. Specify /noui to skip the confirmation dialog, and /noprogressui to also disable showing the progress dialog.
:mergeOtwiera okno łączenia. /path wskazuje na folder docelowy. Przy łączeniu zakresu rewizji, dostępne są następujące opcje: /fromurl:URL, /revrange:ciąg. Przy łączeniu dwóch drzew repozytoriów, dostępne są następujące opcje: /fromurl:URL, /tourl:URL, /fromrev:xxx i /torev:xxx.
:mergeallOtwiera okno dialogowe scalenia wszystkiego. /path wskazuje folder docelowy.
:copyWywołuje okno dialogowe gałęzi/etykiety. Zapis /path określa kopię roboczą, z której kopiowana jest gałąź/etykieta. Natomiast /url to docelowy adres URL. Jeśli adres URL zaczyna się od ^ przyjmuje się, że jest on względny w odniesieniu do folderu głównego repozytorium. Aby wstępnie zaznaczyć opcję <placeholder-4> możecie przekazać przełącznik /switchaftercopy. Aby zaznaczyć opcję <placeholder-6> przekazać należy przełącznik /makeparents. Można również podać przełącznik /logmsg by przesłać w linii poleceń predefiniowany komunikat dzienika do okna gałęzi/etykiety. Istnieje też możliwość, jeśli nie chcecie pisać komunikatów w linii poleceń, użycia /logmsgfile:ścieżka, gdzie ścieżka wskazuje na plik zawierający komunikat dziennika.</placeholder-6></placeholder-4>
:settingsOtwiera okno dialogowe ustawień.
:removeUsuwa plik(i) w /path z kontroli wersji.
:renameZmienia nazwę pliku w /path. Nowa nazwa dla pliku, jest wymagana w oknie dialogowym. Aby uniknąć pytania o zmianę nazwy podobnych plików w jednym kroku, podaj /noquestion.
:diffUruchamia zewnętrzne narzędzie porównania wskazane w ustawieniach TortoiseSVN. /path wskazuje pierwszy plik. jeśli ustawiono opcję /path2, program porównujący uruchamia się z tymi dwoma plikami. jeżeli pominięto /path2, porównywanie wykonuje się pomiędzy plikiem z /path a jego BASE. Jeśli wskazany plik ma również zmienione atrybuty, zewnętrzne narzędzie porównywania jest odpalane dla każdego zmienionego atrybutu. By do tego nie dopuścić, przekażcie opcję /ignoreprops. By jawnie wskazać numery wersji należy podać /startrev:xxx i /endrev:xxx, a przy opcjonalnej wersji wieszakowej użyć /pegrevision:xxx. Jeżeli ustawiono /blame a nie wskazano /path2, to porównywanie zostaje zakończone przez adnotowanie na początku plików ze wskazanymi wersjami. Parametr /line:xxx wskazuje linię od której zaczyna się wyświetlać porównywanie.
:shelveShelves the specified paths in a new shelf. The option /shelfname:name specifies the name of the shelf. An optional log message can be specified with /logmsg:message. If option /checkpoint is passed, the modifications of the files are kept.
:unshelveApplies the shelf with the name /shelfname:name to the working copy path. By default the last version of the shelf is applied, but you can specify a version with /version:X.
:showcompare

W zależności od URLi i wersji do porównania, pokazywane są albo plik różnicowy (jeśli ustawiona jest opcja unified), okno z listą plików, które uległy zmianie albo jeśli adresy URL wskazują pliki, uruchamia przeglądarkę różnic dla tych dwóch plików.

Opcje url1, url2, revision1 i revision2 muszą być określone. Opcje pegrevision, ignoreancestry, blame i unified są opcjonalne.

Jeżeli wskazany adres url ma również zmienione atrybuty, zewnętrzne narzędzie różnicujące zostanie uruchomione również dla każdego zmienionego atrybutu. By temu zapobiec, wykonajcie z opcją /ignoreprops.

If a unified diff is requested, an optional prettyprint option can be specified which will show the merge-info properties in a more user readable format.

:conflicteditorUruchamia edytor konfliktu określony w ustawieniach TortoiseSVN z odpowiednimi plikami dla pliku konfliktu w /path.
:relocateOtwiera okno zmiany lokalizacji. /path określa ścieżkę kopii roboczej do przeniesienia.
:helpOtwiera plik pomocy.
:repostatusOtwiera okno dialogowe sprawdź zmiany. /path określa katalog w kopii roboczej. Jeśli jest określony /remote, okno łączy się z repozytorium bezpośrednio po starcie, jak gdyby użytkownik kliknął przycisk Sprawdź repozytorium.
:repobrowser

Uruchamia okno przeglądarki repozytorium, wskazujące na adres URL kopii roboczej podany w /path lub /path wskazuje bezpośrednio na adres URL.

Dodatkowa opcja /rev:xxx może być używana do określenia wersji, którą przeglądarka repozytorium powinna pokazać. Jeśli /rev:xxx jest pominięta, przyjmowana jest domyślnie HEAD.

Jeśli /path wskazuje na adres URL, /projectpropertiespath:ścieżka/do/kr określa ścieżkę, z której należy odczytać i użyć właściwości projektu.

Jeśli jest określone /outfile:ścieżka\do\pliku, wybrany adres URL i wersja są zapisywane do tego pliku, gdy przeglądarka repozytorium jest zamknięta. Pierwsza linia w tym pliku tekstowym zawiera adres URL, druga linia wersję w formacie tekstowym.

:ignoreDodaje wszystkie cele w /path do listy ignorowanych, tzn. dodaje własność svn:ignore do tych plików.
:blame

Otwiera okno dialogowe adnotacji dla pliku określonego w /path.

Jeśli są ustawione opcje /startrev i /endrev, nie jest pokazywane okno dialogowe z pytaniem o zakres adnotacji, używane są za to wartości wersji tych opcji.

Jeśli jest ustawiona opcja /line:nnn, TortoiseBlame otworzy się wyświetlając określony numer linii.

Opcje /ignoreeol, /ignorespaces i /ignoreallspaces są również obsługiwane.

:catZapisuje plik z adresu URL lub ścieżki w kopii roboczej podany w /path do lokalizacji podanej w /savepath:ścieżka. Wersja jest podana w /revision:xxx. Można tego użyć pobrania pliku o określonej wersji.
:createpatchCreates a patch file for the path given in /path. To skip the file Save-As dialog you can pass /savepath:ścieżka to specify the path where to save the patch file to directly. To prevent the unified diff viewer from being started showing the patch file, pass /noview. If a unified diff is requested, an optional prettyprint option can be specified which will show the merge-info properties in a more user readable format.
:revisiongraph

Pokazuje wykres wersji dla ścieżki podanej w /path.

Aby utworzyć plik obrazu z wykresu wersji dla określonej ścieżki, ale bez wyświetlania okna wykresu, przekazuje się /output:ścieżka ze ścieżką do pliku wyjściowego. Plik wyjściowy musi mieć rozpoznawalne rozszerzenie, by wykres wersji mógł zostać poprawnie wyeksportowany. Są to: .svg, .wmf, .png, .jpg, .bmp oraz .gif.

Ponieważ wykres wersji posiada wiele opcji, które wpływają na sposób jego wyświetlenia, można również ustawić opcje podczas tworzenia pliku obrazu wyjściowego. Można przekazać te ustawienia w /options:XXXX, gdzie XXXX jest wartością dziesiętną. Najlepszym sposobem, aby znaleźć potrzebne ustawienia, jest uruchomienie wykresu wersji w zwykły sposób, ustawić wszystkie opcje interfejsu użytkownika i zamknąć wykres. Wtedy opcje wymagane do przekazania w linii poleceń można odczytać z rejestru HKCU\Software\TortoiseSVN\RevisionGraphOptions.

:lockBlokuje plik lub wszystkie pliki w katalogu podanym w /path. Wyświetlane jest okno 'Blokada', tak więc użytkownik może wpisać komentarz dla blokady.
:unlockOdblokowuje plik lub wszystkie pliki w katalogu podanym w /path.
:rebuildiconcacheOdbudowuje bufor ikony windows. Należy go używać tylko w przypadku gdy ikony windows są uszkodzone. Efektem ubocznym tego (nie do uniknięcia) jest zmiana ikon na pulpicie. Aby wyłączyć okno komunikatu, przekażcie /noquestion.
:properties

Pokazuje okno atrybutów dla ścieżki podanej w /path.

Aby działać na wersjonowanych atrybutach to polecenie wymaga kopii roboczej.

Atrybuty wersji można przeglądać/zmieniać jeśli /path to URL i wskazano /rev:XXX.

Aby otworzyć okno dialogowe atrybutów bezpośrednio dla określonego atrybutu, przekaż nazwę atrybutu w postaci /property:nazwa.

:sync

Eksportuje/importuje ustawienia, albo gdy bieżące lub wyeksportowane ustawienia się zmienią albo jak określono.

Jeśli hasło przekazano wraz z /path, ścieżka zostaje użyta do przechowywania i odczytu ustawień.

Parametr /askforpath pokaże okno otwarcia/zapisu pliku by użytkownik mógł wskazać ścieżkę eksportu/importu.

Jeśli nie zostały wpisane ani /load ani /save, TortoiseSVN określa czy należy wykonać eksport czy import ustawień na sprawdzając, który z plików jest późniejszy. Jeśli plik eksportu jest późniejszy niż bieżące ustawienia, ustawienia są wczytywane z pliku. Jeżeli bieżące ustawienia są późniejsze, są one eksportowane do pliku ustawień.

Jeśli podano /load, ustawienia są importowane z pliku ustawień.

Jeśli wpisano /save, bieżące ustawienia zostają wyeksportowane do pliku ustawień.

Parametr /local wymusza wyeksportowanie ustawień z wraz z ustawieniami lokalnymi, tj tymi, które odwołują się do ścieżek lokalnych.


Przykłady (każdy powinien być wpisany w jednej linii):

TortoiseProc.exe /command:commit
                 /path:"c:\svn_wc\file1.txt*c:\svn_wc\file2.txt"
                 /logmsg:"test log message" /closeonend:0

TortoiseProc.exe /command:update /path:"c:\svn_wc\" /closeonend:0

TortoiseProc.exe /command:log /path:"c:\svn_wc\file1.txt"
                 /startrev:50 /endrev:60 /closeonend:0

TortoiseSVN homepage