2013-03-21 26 views
10

Theo quy ước, tôi tạo các nhánh câu chuyện trong git để bao gồm các id vấn đề Jira trong chúng, ví dụ: FOO-1001. Tôi có một kịch bản để làm điều đó cho tôi. Bây giờ, tôi đã chuẩn bị một kịch bản khác lấy tiêu đề FOO-1001 từ API Jira. Tôi muốn đạt được điều đó khi tôi gõ:Làm thế nào để cung cấp một thông điệp cam kết git chuẩn bị?

$ git commit 

biên tập viên của tôi mở ra đóng sẵn như sau:

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

cách dễ nhất để đạt được điều này bằng cách sử dụng các kịch bản tôi đã mô tả là gì? Ý tưởng của tôi là bằng cách nào đó định dạng thông điệp cam kết thành một tệp để git có thể tìm thấy nó và sử dụng làm mặc định. Một cách có vẻ là sử dụng móc prepare-commit-msg, nhưng tôi muốn đạt được mục tiêu của mình bằng cách sử dụng tập lệnh độc lập, không có bất kỳ cấu hình nào trong .git (để đồng nghiệp của tôi có thể dễ dàng sử dụng lại nó).

+0

Câu trả lời từ chepner để sử dụng các mẫu là điều đúng. Nếu bạn muốn chia sẻ nó với các đồng nghiệp của bạn tốt nhất của nó để đặt móc 'chuẩn bị-commit-msg' của bạn và một số tệp mẫu trong một repo mọi người trong tổ chức của bạn có quyền truy cập. Bạn có thể đặt một kịch bản cài đặt trong repo đó là tốt. –

+0

Tôi đã đi với giải pháp đó và nó hoạt động tốt. Điều duy nhất làm tôi đau là việc lấy id vấn đề mất một lúc và nó làm chậm 'git commit'. Nếu tôi bị làm phiền bởi nó tôi có thể lưu tin nhắn cam kết một nơi nào đó trên tạo chi nhánh. Cảm ơn các bạn. – VoY

Trả lời

16

Lệnh commit có một tùy chọn cho việc đọc một thông điệp cam kết từ một mẫu:

-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

Điều này không hoạt động với 'git tag --annotate'. Có cách nào để vượt qua giới hạn đó không? – weaver

+0

Không phải là tôi biết. Có vẻ kỳ lạ là nó hỗ trợ '-m' nhưng không hỗ trợ' -t'; giả định có thể là thẻ cam kết thông điệp nói chung là đủ ngắn mà bạn sẽ không cần một mẫu. – chepner

+0

GitHub đã bắt đầu sử dụng chú thích thẻ làm chú thích phát hành, vì vậy tôi muốn có thể nói 'git tag --annotate --template <(git log $ (git description --abbrev = 0) .. HEAD)' trong phát hành kịch bản. Có vẻ như không thể: ( – weaver

3

Ngoài ra còn có -F:

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

Điều này sẽ tạo ra cam kết. Nó sẽ không mở trình soạn thảo. – Andy

+1

Sử dụng tùy chọn '-e, --edit'. – klokop

Các vấn đề liên quan