2013-03-21 13 views
10

Zgodnie z konwencją tworzę gałęzie opowieści w git, aby uwzględnić w nich identyfikatory Jira, np. FOO-1001. Mam scenariusz, który to zrobi dla mnie. Teraz przygotowałem kolejny skrypt, który pobiera tytuł FOO-1001 z Jira API. Chcę to osiągnąć, gdy wpisuję:Jak zapewnić przygotowaną wiadomość zatwierdzenia git?

$ git commit 

Mój redaktor otwiera ampułko z następujących czynności:

BUGFIX: FOO-1001 Some sample issue title downloaded using my script 

Co jest najprostszym sposobem, aby to osiągnąć za pomocą skryptów opisałem? Moim pomysłem jest jakoś sformatować wiadomość zatwierdzenia do pliku, aby git mógł ją znaleźć i użyć jako domyślną. Jednym ze sposobów wydaje się być użycie haka prepare-commit-msg, ale wolałbym osiągnąć mój cel za pomocą samodzielnego skryptu, bez żadnej konfiguracji w .git (aby moi koledzy mogli z łatwością ponownie go użyć).

+0

Odpowiedź z chepner do użycia szablonów jest prawidłowa. Jeśli chcesz udostępnić go swoim kolegom, najlepiej umieść hak 'prepare-commit-msg' i pliki szablonów w repozytorium, do którego mają dostęp wszyscy członkowie Twojej organizacji. Możesz również umieścić skrypt instalacyjny w tym repozytorium. –

+0

Poszedłem z tym rozwiązaniem i działa dobrze. Jedyne, co mnie boli to to, że pobranie identyfikatora problemu trwa chwilę i spowalnia działanie 'git commit'. Jeśli jestem przez to wystarczająco przejęty, mogę zapisać wiadomość o zatwierdzeniu w miejscu tworzenia gałęzi. Dzięki chłopaki. – VoY

Odpowiedz

16

Komenda commit posiada opcję czytania wiadomości commit z szablonu:

-t <file>, --template=<file> 
     When editing the commit message, start the editor with the contents 
     in the given file. The commit.template configuration variable is often 
     used to give this option implicitly to the command. This mechanism can 
     be used by projects that want to guide participants with some hints on 
     what to write in the message in what order. If the user exits the editor 
     without editing the message, the commit is aborted. This has no effect 
     when a message is given by other means, e.g. with the -m or -F options. 
+0

To nie działa z 'git tag --annotate'. Czy istnieje sposób na pokonanie tego ograniczenia? – weaver

+0

Nie jestem tego świadomy. Wydaje się dziwne, że obsługuje '-m', ale nie' -t'; założeniem może być to, że komunikaty zatwierdzania tagów są na ogół wystarczająco krótkie, aby nie potrzebować szablonu. – chepner

+0

GitHub zaczął używać adnotacji znaczników jako adnotacji zwalniających, więc chcę móc powiedzieć "tag git --annotate --template <(git log $ (git description --abbrev = 0). HEAD)" w moim wydać skrypt. Wydaje się niemożliwe :( – weaver

3

Jest też -F:

-F <file>, --file=<file> 
     Take the commit message from the given file. Use - to read the message from the standard input. 
+1

Spowoduje to utworzenie zatwierdzenia .Nie otworzy to edytora. – Andy

+1

Użyj opcji '-e, --edit'. – klokop

Powiązane problemy