2012-07-16 6 views
25

Ponieważ "testowanie" jest typowym zastosowaniem haka Git, moje pytanie jest trudne do wyszukania.Jak testować haczyki na git?

Piszę dość zaangażowany hak post-receive git i chcę wiedzieć, jaki jest najlepszy sposób jego przetestowania. Obecnie mój proces jest:

  • wprowadzić zmiany do post-otrzymanych w manekin "zdalnym" repo
  • wprowadzić zmiany do manekina lokalnego repo
  • popełnienia zmiany atrapy repo lokalnej
  • zmian Push to manekin zdalnego repo

Czy jest jakiś łatwiejszy sposób na sprawdzenie tego? Idealnie byłoby to wyglądać tak:

  • make zmianie (-ach) do post-otrzymywać na manekinie repo
  • Wydanie polecenia "magia"
  • przetestować po otrzymywać

Może ja "wznowienie" poprzednie naciśnięcie, czy też zdalne repo działają tak, jakby właśnie otrzymał push z określonym hashem?

Odpowiedz

13

Napisz hak, który po prostu zapisuje swoje argumenty/środowisko i zrzuca je do pliku. Wtedy możesz po prostu ponownie wywołać prawdziwy hak w wolnym czasie z tym samym środowiskiem/argumentami i będzie działać tak, jakbyś ponownie wydał dokładnie to samo pchnięcie.

+0

To o tym, co zrobiłem, ale zamiast tego przez ręczne sprawdzanie (echo) odpowiednich zmiennych. – Errol

+9

jak wyglądałby taki hak "wywrotki"? –

+4

@ JonWatson, Właśnie użyłem 'echo $ @; echo; pwd; Echo; set' – Lucas

6

Odpowiedz na to 4-letnie pytanie.

Jeśli chcesz przetestować hak w środowisku lokalnym, daję polecenia szczegóły dla kontynuacji, użyj post-receive próbkę:

$ mkdir /tmp/hook_test 
$ cd /tmp/hook_test 

# set local git repo, where you put hooks in it. 
$ git clone --bare https://github.com/git/git.git 

# set develop environment which is cloned from the new created repo. 
$ git clone git.git repo 

# copy and rename the hook you need test to "post-receive" 
$ cd git.git/hooks 
$ cp ~/post-receive-test post-receive 

# suppose the hook script is bash script. 
# edit "post-receive" and add "set -x" to second line in it to active debug 

$ cd /tmp/hook_test/repo 
# emulate a hook trigger, do some changes, "git add" and "git commit" it 

$ git push 

# Now you should see the script "post-receive" runs automatically with debug details. 

powinny być wolne, aby uruchomić git push, że aktualizacje są tylko pchnął do lokalnego repo /tmp/hook_test/git.git