2012-12-14 17 views
18

Tracker Pivotal và Github có tích hợp tuyệt vời: Sau khi đã thiết lập, mỗi cam kết đó là tiền tố của Pivotal Tracker ID sẽ xuất hiện dưới Pivotal vé tương ứng tự động, cho một ví dụ:Làm cách nào tôi có thể tự động hóa Pivotal Tracker & Github Integration?

git commit -am '[#1234567] my new changes' 
git push origin 

sẽ bổ sung thêm những nhận xét ' những thay đổi mới của tôi 'tự động cho 1234567 Pivotal Ticket trong số các liên kết cam kết github.

Tuy nhiên, thật dễ dàng quên thêm ID vé mỗi lần. Làm thế nào nó có thể được đơn giản hóa/tự động?

Trả lời

18

Giải pháp là sử dụng Git-Hooks và tính năng chi nhánh. (Luồng Github được khuyến nghị).

Bạn phải cài đặt này Git-Hook (sao chép một tập tin vào kho lưu trữ địa phương của bạn):

https://github.com/ktamas77/git_hooks

Trước khi bạn bắt đầu làm việc trên một Pivotal vé đặc biệt, bạn tạo một chi nhánh bắt đầu bằng các Pivotal Tracker ID, cho một ví dụ:

git checkout 1234567_build_new_form 

sau đó thêm tất cả các thay đổi của bạn như bạn muốn làm như thường lệ:

git commit -am 'form added' 
git commit -am 'styles added' 
git push origin 

bạn sẽ thấy, kịch bản lệnh git hook sẽ tự động trích xuất ID Tracker Pivotal từ tên nhánh của đối tượng địa lý và thêm nó vào trước mỗi nhận xét. Bạn vẫn có thể ghi đè nó theo cách thủ công (với một ID khác) nếu bạn muốn.

Bằng cách này, bạn không phải lo lắng về việc thêm ID quan trọng theo cách thủ công cho mọi cam kết đơn lẻ. Nó cũng làm việc với GUIS (như GIT Tower) vì các GUI này đang sử dụng các thư viện/thực thi GIT chuẩn.

4

Đây là phiên bản vỏ đơn giản dựa trên giải pháp của Tamas. Nó lấy ID từ cuối tên chi nhánh.

"my-feature-branch-12345678" => "My mssg commit [# 12345678]".

Di chuyển đến .git/móc/chuẩn bị cam kết-msg và làm cho nó thực thi:

#!/bin/bash 
if story_id=`git branch | grep -oP '^\*.*\-\K[0-9]+$'` 
then 
    echo "[#$story_id]" >> "$1" 
fi 
+1

Không hoạt động trên OS X Lion vì -P (Perl regexes) không được hỗ trợ trong grep. – Ritchie

4

Cài đặt 'git-then chốt-tracker-hội nhập' đá quý, https://github.com/nebhale/git-pivotal-tracker-integration

Nó cho biết thêm lệnh để git như bắt đầu và kết thúc để Git để tự động tiền tố chi nhánh và cam kết với ID câu chuyện theo dõi và nó cũng đăng tin nhắn cam kết của bạn để theo dõi. Khi bạn gọi 'git start', nó sẽ kéo tổng thể để đảm bảo bạn cập nhật, tạo một nhánh cho bạn và bắt đầu câu chuyện trong trình theo dõi cho bạn. Làm công việc sau đó gọi 'git kết thúc' và nó sẽ hợp nhất chi nhánh của bạn trở lại để làm chủ và cập nhật theo dõi.

3

Nhóm của tôi đang sử dụng git_tracker. Mỗi nhà phát triển phải chạy

$ git tracker init 

một lần cho mỗi dự án trên Bộ theo dõi tổng thể. Sau đó, họ cần phải đặt tên cho mỗi nhánh mới với một quy ước đặc biệt, kết hợp nó với id câu chuyện của Pivotal Tracker.Ví dụ:

$ git checkout -b the-great-feathure-123456789 

nơi 123456789 sẽ là id câu chuyện theo dõi tổng quan.

Và ở đây bạn đi, bạn sẽ tự động có từng cam kết tham chiếu đến câu chuyện. Bonus điểm, nếu bạn sử dụng GitHub để thực hiện yêu cầu kéo, bạn có thể yêu cầu người đánh người hợp nhất những câu chuyện để thêm vào việc hợp nhất cam kết:

[Fixes #123456789] ... 

Bằng cách này, bạn không bao giờ phải bấm vào nút Finish, GitHub sẽ làm nó cho bạn.

+0

Một số cập nhật. Vì một số nhóm của tôi đã quên thêm "Bản sửa lỗi" trong thông điệp hợp nhất của họ, khi đó trang tổng quan Pivotal Tracker đã kết thúc không đồng bộ. Vì vậy, tôi xây dựng [this] (https://github.com/ssaunier/mergehook) để tự động kết thúc một câu chuyện ngay khi nút Merge được nhấn! –

0

Tôi đang sử dụng dấu trang, cũng đặt thông báo cam kết từ tiêu đề câu chuyện.

[#69609212] Add new Todo 

Bạn có thể lấy nó từ here

0

Một bình luận muộn, nhưng có lẽ vẫn còn một hữu ích nhất. Tôi muốn có cùng một giải pháp như được cung cấp bởi @Sjoerd, nhưng tôi là người dùng mac;)

Mã kết quả trông giống như sau;

story_id=`git symbolic-ref --short -q HEAD | grep -o "^[[:digit:]]*"` 
if [ ! -z "$story_id" -a "$story_id" != " " ] 
then 
    echo "[#$story_id] $(cat $1)" > "$1" 
fi 

Lưu ý rằng chúng tôi thêm ID phát hành vào tên chi nhánh, nhưng khá cơ bản để sửa đổi regex để khớp với phần cuối của chuỗi chứ không phải bắt đầu. Chúng tôi cũng thêm ID phát hành vào phần đầu của nhận xét vì điều này cung cấp tổng quan rõ ràng hơn trong nhật ký git. Nếu tập lệnh trên là ues, mỗi thông báo cam kết sẽ được thêm vào trước với [#<issue ID>], trừ khi tên chi nhánh không bắt đầu bằng ID sự cố thực tế. Cần lưu ý rằng nó có thể là tốt nhất nếu mã này được thêm vào trước bất kỳ mã nào khác trong móc prepare-commit-msg, vì điều này sẽ dẫn đến tất cả cam kết được thêm vào trước, ngay cả kết hợp tự động và tương tự.

Hy vọng điều này sẽ hữu ích!

0

Dưới đây là một viên ngọc thực hiện chính xác những gì bạn muốn:

http://github.com/bogdan/git-storyid

Nó cho phép để chọn một câu chuyện từ một thực đơn độc đáo hình thành:

[1] Removing Billing Page 
[2] Welcome Email 
[3] Tag campaign insertion points and campaigns with an identifier 

Indexes(csv): 3 
[campaign-tags 3020407] [#44116647] Initial implementation of campaign tags 
1 file changed, 101 insertion(+), 2 deletions(-) 
Các vấn đề liên quan