2012-07-06 27 views
20

Tại công ty chúng tôi, chúng tôi đang chuyển từ svn sang git. Để theo dõi vấn đề, chúng tôi sử dụng JIRA từ Atlassian.Số phát hành Jira trong tin nhắn cam kết git

Bây giờ, chúng tôi muốn thực thi mọi thư cam kết chứa số phát hành (giống như chúng tôi đã làm với svn).

Chúng tôi đã tìm thấy móc cam kết mà chúng tôi sử dụng để từ chối cam kết nếu nó không chứa số phát hành.

JIRA sử dụng Fisheye để quét repo git. Nếu thông báo cam kết chứa số phát hành thì các thay đổi được hiển thị bên dưới vấn đề đó.

Vấn đề là móc không được sao chép khi kho lưu trữ git được sao chép. Vì vậy, số phát hành trong các thông báo cam kết không được thực thi. Điều đó có nghĩa rằng khi một cam kết mới được đẩy lên thượng nguồn Jira có thể không liệt kê các thay đổi theo một vấn đề.

Câu hỏi đặt ra là; chúng ta đang sử dụng Git bằng cách nào đó theo cách sai và có cách nào để thực sự thực thi một số vấn đề trong thông điệp cam kết không? Hoặc không ai có chỉ đơn giản là có một kịch bản/móc (khác với móc cam kết) mà thực hiện điều này?

+0

Vẫn không có câu trả lời hay. Có ai có một móc tốt phía máy chủ? Móc phải được thực hiện trên nguồn gốc, tức là nơi chúng tôi đẩy đến. – meijuh

Trả lời

0

Bạn cũng có thể có móc nối phía máy chủ, móc nhận trước hoặc thứ gì đó, tuy nhiên điều này không rõ ràng nếu bạn quen với github.

Nếu không, tôi có thể xem xét việc cung cấp tùy chọn xây dựng 'móc cài đặt' (như tác vụ cào, tạo công việc hay bất kỳ thứ gì), mặc dù điều đó khiến tôi cảm thấy hơi bẩn hệ thống kiểm soát phiên bản ...

+0

Về cơ bản những gì tôi muốn là để cho các máy chủ có nguồn gốc từ chối đẩy từ một kho lưu trữ địa phương nếu tin nhắn cam kết không có số vấn đề. – meijuh

+0

Tôi đã tìm thấy https://github.com/joyjit/git-jira-hook/blob/master/git-jira-hook. Nhưng nó muốn kết nối với máy chủ JIRA, điều này không thực sự cần thiết cho những gì tôi muốn. – meijuh

13

Tôi đã sử dụng git-jira-hook và sửa đổi nó theo nhu cầu của tôi, cũng sẽ phù hợp với bạn. Đối với nhu cầu của bạn, chỉ cần loại bỏ các phần mà nó đăng nhập vào Jira để kiểm tra xem số vấn đề jira được regexed từ thông điệp cam kết có hợp lệ hay không. Nếu bạn không thích python (git-jira-hook được viết bằng python) và thích bash, bạn sẽ có thể thích ứng với các kịch bản mẫu trong mỗi thư mục .git/hooks của repo theo nhu cầu của bạn.

Để triển khai một cái gì đó sẽ làm việc cho tất cả mọi người, bạn muốn sử dụng git-jira-hook làm móc 'cập nhật' trên repos upstream của bạn. Điều này sẽ chặn các đẩy có chứa các thông điệp cam kết thiếu tham chiếu vấn đề jira thích hợp. Vì thuận tiện hơn khi nhận phản hồi về việc thiếu tham chiếu vấn đề tại thời điểm cam kết (thay vì ở thời gian đẩy), bạn cần phải cài đặt git-jira-hook làm móc cam kết. Tôi sẽ giải thích sau này làm thế nào điều này có thể được thực hiện trên toàn cầu.

Dưới đây là cách tôi đã giải quyết được vấn đề này:

  1. Private repo móc cam-msg: tôi sửa đổi git-jira-móc để kiểm tra các tài liệu tham khảo vấn đề jira trong các ký hiệu mà chúng tôi sử dụng. Sau đó, tôi gửi email ra móc với hướng dẫn để mọi người giải thích cách lắp móc trên toàn cầu, như được giải thích trong this SO question. Nếu bạn cài đặt hook trên toàn cầu thì nó sẽ được sử dụng trong tất cả các bản sao trong tương lai, và có thể dễ dàng áp dụng cho các repos đã được nhân bản bằng cách sử dụng git init.

  2. Móc cập nhật cập nhật ngược: Tôi đã sử dụng tập lệnh git-jira-hook đã được sửa đổi và cài đặt nó trong mỗi bản repo của chúng tôi. Tôi không thể nhận được các bit xác thực tương tác làm việc trên repo ngược dòng (symlinked nó), vì vậy tôi thay vì tạo ra một hạn chế cho phép người dùng Jira và cứng mã hóa xác thực của họ vào kịch bản.

+1

Ngoài ra còn có rất nhiều nhánh cho git-jira-hook có một số tính năng hữu ích. Nếu git-jira-hook có vẻ thiếu bạn, tôi sẽ kiểm tra các nhánh để xem liệu có bất kỳ tính năng nào bạn cần không. – Freerobots

0

Có một tiện ích bổ sung cho điều đó: Commit Policy Plugin for JIRA!

Nó không chỉ kiểm tra nếu khóa vấn đề JIRA là "chính thức" được bao gồm trong thư, mà còn kiểm tra xem (các) vấn đề tương ứng có khớp với truy vấn JQL hay không. Sử dụng điều này, bạn có vô số khả năng, chỉ cho phép kiểm tra đối với một số loại vấn đề nhất định, các vấn đề trong một số trạng thái nhất định, các vấn đề trong chạy nước rút Scrum hiện tại, các vấn đề nhắm vào phiên bản tiếp theo v.v.

enter image description here

Như một phần thưởng, nó hoạt động cả với (Subversion) và hệ thống kiểm soát phiên bản mục tiêu ban đầu của bạn (Git), làm cho công việc của bạn được kiểm soát ngay cả trong giai đoạn chuyển tiếp.

Bạn có thể cài đặt tập lệnh móc vào repo may mắn và cho bất kỳ nhánh nào. Thật không may, kịch bản móc không được nhân bản khi nhân bản một repo với Git, nhưng chúng tôi hiện đang điều tra cách giải quyết cho việc này.

tài liệu đầy đủ: http://www.midori-global.com/products/jira-commit-policy-plugin/documentation/

Disclaimer: đây là chương trình quảng cáo và được hỗ trợ add-on cho JIRA, và tôi là một nhà phát triển làm việc trên nó.

0

Nếu bạn đang sử dụng móc mặc định trong thư mục .git thì những thay đổi bạn thực hiện sẽ không được lập chỉ mục đơn giản nghĩa là chúng không thể được kiểm tra hoặc nhân bản.

bạn có thể di chuyển móc thư cam kết trong một thư mục khác có tên 'móc' và cam kết nó để ghi đè lên móc mặc định từ .git.

Chúng tôi hiển thị hộp thư là lỗi nếu cam kết không chứa số phát hành để người dùng vẫn có thể tiếp tục nếu không cần có số theo dõi vấn đề (hoạt động trong trường hợp vá/hotfix)