2012-03-23 12 views
9

Po dodaniu nowego narzędzia do git-gui, okno dialogowe wskazuje, że mogę użyć niektórych zmiennych do przekazania do narzędzia ($REVISION, $ARGS, $FILENAME).

Czy istnieją inne parametry, które są , a nie udokumentowane (na przykład aktualny katalog repo itp.)? Dlaczego nie są one zawarte w documentation z git-gui?

Moja obecna sytuacja polega na tym, że mam dwa skrypty, które włączają/wyłączają przechwytywanie przed zatwierdzeniem. Obecnie muszę otworzyć Eksploratora Windows i dwukrotnie kliknąć plik wsadowy, który jest trochę niezgrabny. Prostszy sposób byłoby to zrobić bezpośrednio z git-gui ...

Jako alternatywny (bocznej pytanie), chciałbym być także zainteresowany pomijając pre-commit (czyli przekazać --no-verify gdy popełnieniem) z git-gui.

Odpowiedz

4

Patrząc na git-gui sources uważam (nie występuje w git-gui man page):

  • git-gui.sh:
    • $GITGUI_VERBOSE, aby włączyć pełne ładowanie
    • SSH_ASKPASS, zaproponować naszą realizację askpass, jeśli none is set
    • GIT_DIR i GIT_WORK_TREE, do konfiguracji repozytorium
+0

widzę 'set s "Wykorzystanie: $ :: argv0 $ :: Komenda $ :: subcommand_args"': być może istnieje sposób na przekazanie i wykonanie polecenia sub git ... – VonC

+0

@ rights right, to zmienna brana pod uwagę przez git-gui w czasie uruchamiania. Jednakże 'GIT_DIR' i' GIT_WORK_TREE' powinny nadal być ustawione ('Tools -> Add') i uwzględnione przez podkomunikat. Nie mam nic na '--no-verify' chociaż. – VonC

3

ja osobisty rozszerzony git-gui za posiadanie narzędzi pracujących na wielu plikach

w pliku tools.tcl dodaj następujące 2 linie

set env(GIT_GUITOOL) $fullname 
set env(FILENAME) $current_diff_path 
>> set env(FILENAMES) [array names selected_paths] 

oraz:

unset env(GIT_GUITOOL) 
unset env(FILENAME) 
>> unset env(FILENAMES) 

Użyj $FILENAMES zamiast $FILENAME w narzędziu, a lista plików będą przekazywane oddzielone spacjami (bardzo przydatne przy tworzeniu narzędzia takie jak: rm $FILENAMES)

Uwaga na $FILENAME (i $FILENAMES) Git mechanizm narzędzie gui nie działa z plików zawierających obowiązuje Próbowałem przytoczyć każdy plik, pisząc

set env(FILENAMES) [string map { \{ \" \} \" } [array names selected_paths]] 

Ale Console::exec wydaje się oddzielić argumenty na przestrzeni i uciec każdy argument.

+0

+1. brzmi interesująco, oprócz zmiennych, które zidentyfikowałem w mojej odpowiedzi. – VonC

1

Dwie uwagi do poprzedniego rozwiązania:

  1. globalne selected_paths

odpowiedzieć non pusty $ nazwy plików do polecenia to jest konieczne, aby zadeklarować selected_paths jako globalny

  1. pliki zawierające spacje

do publikowania plików zawierających spacje używaj "$ {FILENAMES [@]}" zamiast zwykłego $ FILENAMES.

Możesz zobaczyć, jak pathes są wysyłane do polecenia, używając polecenia printf '\ "% s \"' np.

printf '\ "% s \"' NAZWY PLIKÓW = "$ {NAZWY PLIKÓW [@]}"

Powiązane problemy