Testowanie tego, co ma zostać zatwierdzone w haku przed zatwierdzeniem

Internet jest całkowicie zaśmiecony błędnymi i nieidealnymi odpowiedziami na to pytanie. To niefortunne, ponieważ można by pomyśleć, że byłoby to powszechną rzeczą, którą chciałbyś zrobić.

Problem: kiedy apre-commit hak działa, repozytorium może nie być czyste. Więc jeśli naiwnie przeprowadzasz testy, nie będą one sprzeczne z tym, co popełniasz, ale jakikolwiek brud zdarza się w twoim drzewie roboczym.

Oczywistą rzeczą do zrobienia jestgit stash --keep-index --include-untracked na początkupre-commit igit pop przy wyjściu. W ten sposób testujesz przeciwko (czystemu) indeksowi, który jest tym, czego chcemy.

Niestety, generuje to znaczniki konfliktów scalania, jeśli używaszgit add --patch, (zwłaszcza jeśli edytujesz porcje), ponieważ zawartośćstash@{0} może nie pasować do drzewa roboczego po zatwierdzeniu.

Innym powszechnym rozwiązaniem jest klonowanie repozytorium i uruchamianie testów w nowym tymczasowym. Są dwa problemy z tym: jeden z nich nie został jeszcze zatwierdzony, więc nie możemy łatwo uzyskać kopii repozytorium w stanie, który zamierzamy zatwierdzić (jestem pewien, że istnieje sposób, aby to zrobić , ale nie jestem zainteresowany bo :). Po drugie, moje testy mogą być wrażliwe na lokalizację bieżącego katalogu roboczego. Na przykład z powodu lokalnej konfiguracji środowiska.

Więc: Jak mogę przywrócić moje drzewo robocze do stanu, w jakim znajdowało się przedgit stash --keep-index --include-untracked, bez wprowadzania znaczników konfliktu scalania i bez modyfikowania post-commitHEAD?

questionAnswers(4)

yourAnswerToTheQuestion