Tích hợp với Hệ thống Theo dõi Lỗi / Trình theo dõi Vấn đ

Nó là rất phổ biến trong Phát triển Phần mềm cho các thay đổi có liên quan đến một lỗi cụ thể hoặc ID của vấn đề. Người sử dụng của hệ thống theo dõi lỗi (bộ theo dõi vấn đề) sẽ liên kết những thay đổi mà họ thực hiện trong Subversion với một ID cụ thể trong bộ theo dõi vấn đề của họ. Hầu hết các bộ theo dõi vấn đề do đó cung cấp một kịch bản hook trước cam kết mà sẽ phân tích cú pháp thông điệp tường trình để tìm ID của lỗi mà các cam kết có liên quan. Điều này có phần dễ bị lỗi vì nó phụ thuộc vào người sử dụng để viết thông điệp tường trình đúng cách mà kịch bản hook trước cam kết có thể phân tích nó một cách chính xác.

TortoiseSVN có thể giúp người sử dụng theo hai cách:

  1. Khi người dùng nhập vào một thông điệp tường trình, một dòng được định nghĩa tốt bao gồm cả số vấn đề liên quan đến cam kết có thể được thêm vào tự động. Điều này làm giảm nguy cơ mà người dùng nhập vào số lượng vấn đề theo cách mà công cụ theo dõi lỗi không thể phân tích một cách chính xác.

    Hoặc TortoiseSVN có thể làm nổi bật một phần của thông điệp tường trình đã nhập được công nhận bởi bộ theo dõi vấn đề. Bằng cách đó người sử dụng biết rằng các thông điệp tường trình có thể được phân tích một cách chính xác.

  2. Khi người dùng duyệt các thông điệp tường trình, TortoiseSVN tạo ra một liên kết từ mỗi ID lỗi trong các tin nhắn đăng nhập mà sẽ chuyển trình duyệt tới vấn đề được đề cập.

Thêm số Vấn đề vào Thông điệp Tường tr

Bạn có thể tích hợp một công cụ theo dõi lỗi do bạn chọn trong TortoiseSVN. Để làm điều này, bạn phải xác định một số thuộc tính, bắt đầu với bugtraq: . Chúng phải được thiết lập trên thư mục: ( phần “Thiết lập Dự án” )

Hình 4.65. Hội Thoại Thuộc Tính Bugtraq

Hội Thoại Thuộc Tính Bugtraq


Khi bạn chỉnh sửa bất kỳ các thuộc tính Bugtraq một trình soạn thảo thuộc tính đặc biệt được sử dụng để làm cho nó dễ dàng hơn để thiết lập các giá trị thích hợp.

Có hai cách để tích hợp TortoiseSVN với bộ theo dõi vấn đề. Một là dựa trên các chuỗi đơn giản, cách khác là dựa trên biểu thức thông thường. Các thuộc tính được sử dụng bởi cả hai cách tiếp cận trên là:

bugtraq:url

Thiết lập thuộc tính này vào URL của công cụ theo dõi lỗi của bạn. Nó phải được mã hóa theo URI đúng và nó có chứa %BUGID% . %BUGID% được thay thế với số vấn đề mà bạn đã nhập. Điều này cho phép TortoiseSVN hiển thị một liên kết trong hộp thoại đăng nhập, vì vậy khi bạn đang tìm kiếm các bản sửa đổi, bạn có thể nhảy trực tiếp đến công cụ theo dõi lỗi của bạn. Bạn không cần phải cung cấp thuộc tính này, nhưng sau đó TortoiseSVN chỉ hiển thị số phát hành và không phải là liên kết đến nó. ví dụ như dự án TortoiseSVN đang sử dụng http://issues.tortoisesvn.net/?do=details&id=%%BUGID.

Bạn cũng có thể sử dụng các URL tương đối của những người tuyệt đối. Điều này rất hữu ích khi bộ theo dõi vấn đề của bạn ở trên cùng một tên miền/máy chủ như là kho lưu trữ nguồn của bạn. Trong trường hợp tên miền bao giờ thay đổi, bạn không phải điều chỉnh thuộc tính bugtraq:url . Có hai cách để chỉ định một URL có liên quan:

If it begins with the string ^/ it is assumed to be relative to the repository root. For example, ^/../?do=details&id=%BUGID% will resolve to https://tortoisesvn.net/?do=details&id=%BUGID% if your repository is located on https://tortoisesvn.net/svn/trunk/.

A URL beginning with the string / is assumed to be relative to the server's hostname. For example /?do=details&id=%BUGID% will resolve to https://tortoisesvn.net/?do=details&id=%BUGID% if your repository is located anywhere on https://tortoisesvn.net.

bugtraq:warnifnoissue

Đặt nó thành đúng , nếu bạn muốn TortoiseSVN cảnh báo bạn bởi vì một trường văn bản số vấn đề bị trống. Giá trị hợp lệ là đúng/sai . Nếu không được xác định, sai sẽ được giả định.

Số vấn đề trong Hộp Văn bản

Trong cách tiếp cận đơn giản, TortoiseSVN cho người sử dụng thấy một trường nhập liệu riêng biệt, nơi một lỗi ID có thể được nhập vào. Sau đó, một dòng riêng biệt được nối đuôi/nối đầu vào thông điệp tường trình mà người dùng nhập vào.

bugtraq:message

Thuộc tính này kích hoạt hệ thống theo dõi lỗi trong chế độ Trường Nhập liệu. Nếu thuộc tính này được thiết lập, thì TortoiseSVN sẽ nhắc nhở bạn nhập vào một số vấn đề khi bạn cam kết thay đổi của bạn. Nó được sử dụng để thêm một dòng ở cuối thông điệp tường trình. Nó phải có %BUGID% , mà được thay thế bằng số vấn đề trên cam kết. Điều này đảm bảo rằng tường trình cam kết của bạn có chứa một tham chiếu đến số vấn đề mà luôn luôn là một định dạng nhất quán và có thể được phân tích bằng công cụ theo dõi lỗi của bạn để liên kết số vấn đề với một cam kết cụ thể. Một ví dụ là bạn có thể sử dụng Vấn đề: %BUGID% , nhưng điều này phụ thuộc vào Công Cụ của bạn.

bugtraq:label

Văn bản này được thể hiện bởi TortoiseSVN trên hộp thoại cam kết để gắn nhãn cho hộp biên tập, nơi bạn nhập số phát hành. Nếu nó không được thiết lập, ID Lỗi / Số Vấn đề: sẽ được hiển thị. Hãy nhớ rằng cửa sổ đó sẽ không được thay đổi kích cỡ để phù hợp với nhãn này, vì vậy giữ cho kích thước của nhãn dưới 20-25 ký tự.

bugtraq:number

Nếu được thiết lập đúng chỉ có các số được cho phép trong trường văn bản số vấn đề. Một ngoại lệ là các dấu phẩy, vì vậy bạn có thể dấu phẩy tách một số con số. Các giá trị hợp lệ là đúng/sai . Nếu không xác định, giá trị đúng được giả định.

bugtraq:append

Thuộc tính này xác định nếu ID của lỗi được nối (đúng) vào cuối thông điệp tường trình hoặc chèn (sai) vào đầu thông điệp tường trình. Giá trị hợp lệ đúng/sai . Nếu không được định nghĩa, đúng được giả đinh, để dự án hiện có không bị phá vỡ.

Số Vấn Đề Sử Dụng Biểu Thức Thông Thư

Trong cách tiếp cận với biểu thức thông thường TortoiseSVN không hiển thị một trường nhập liệu riêng biệt, nhưng đánh dấu một phần của thông điệp tường trình mà người dùng nhập vào được nhận ra bởi bộ theo dõi vấn đề. Điều này được thực hiện khi người sử dụng viết thông điệp tường trình. Điều này cũng có nghĩa rằng các lỗi ID có thể ở bất cứ nơi nào bên trong một thông điệp tường trình! Phương pháp này linh hoạt hơn nhiều, và là một trong những cách được sử dụng bởi bản thân dự án TortoiseSVN.

bugtraq:logregex

Thuộc tính này kích hoạt hệ thống theo dõi lỗi trong chế độ Regex . Nó chứa hoặc là một biểu thức thông thường duy nhất, hoặc hai biểu thức thông thường cách nhau bằng một dòng mới.

Nếu hai biểu thức được thiết lập, thì biểu thức đầu tiên được sử dụng như bộ lọc trước để tìm các biểu thức có chứa lỗi ID. Biểu thức thứ hai sau đó chiết xuất lỗi ID trần từ kết quả của regex đầu tiên. Điều này cho phép bạn sử dụng một danh sách các lỗi ID và các biểu thức ngôn ngữ tự nhiên nếu bạn muốn. ví dụ như bạn có thể sửa chữa một số lỗi và bao gồm một chuỗi gì đó như thế này: Thay đổi này giải quyết vấn đề #23, #24 và #25 .

Nếu bạn muốn bắt lỗi ID như được sử dụng trong các biểu thức trên bên trong một thông điệp tường trình, bạn có thể sử dụng các chuỗi regex sau đây, là những cái được sử dụng bởi dự án TortoiseSVN: [Ii]ssues:(?\S*(,|and)\s*#\d+)+ (\d+).

Biểu thức đầu tiên chọn ra các vấn đề #23, #24 và #25 từ thông điệp tường trình xung quanh. Regex thứ hai chiết xuất từ các số thập phân từ đầu ra của regex đầu tiên, vì vậy nó sẽ trả về 23 , 24 25 để sử dụng như là ID của lỗi.

Bẻ regex đầu tiên ra một chút, nó phải bắt đầu với từ issue , có thể được viết hoa. Đây là tùy chọn theo sau là một chữ s (nhiều hơn một vấn đề), và tùy chọn dấu hai chấm. Tiếp theo là một hoặc nhiều nhóm mà mỗi nhóm không có hoặc có nhiều hơn khoảng trắng ở phía trước, dấu phẩy tùy chọn hoặc và nhiều không gian tùy chọn hơn nữa . Cuối cùng là dấu # bắt buộc và một số thập phân là bắt buộc.

Nếu chỉ một biểu thức được thiết lập, thì các lỗi ID trần phải được xuất hiện trong các nhóm của chuỗi regex. Ví dụ: [Ii]ssue(s?)#(\d+) Phương pháp này là cần thiết bởi một vài bộ theo dõi vấn đề, ví dụ như trac, nhưng nó là khó để để xây dựng các regex. Chúng tôi khuyên rằng bạn chỉ sử dụng phương pháp này nếu tài liệu của bộ theo dõi vấn đề của bạn bảo bạn l.

If you are unfamiliar with regular expressions, take a look at the introduction at https://en.wikipedia.org/wiki/Regular_expression, and the online documentation and tutorial at http://www.regular-expressions.info/.

Nó không phải luôn luôn dễ dàng để có được regex do đó để giúp đỡ thì có một hộp thoại thử nghiệm được xây dựng vào hộp thoại thuộc tính Bugtraq. Nhấp chuột vào nút bên phải của hộp chỉnh sửa để đưa nó lên. Ở đây bạn có thể nhập một số văn bản kiểm tra, và mỗi thay đổi mỗi regex để xem kết quả. Nếu regex là không hợp lệ thì màu nền hộp chỉnh sửa sẽ đổi thành màu đỏ.

Nếu cả hai thuộc tính bugtraq:message bugtraq:logregex được thiết lập, logregex sẽ được ưu tiên.

Mẹo

Ngay cả khi bạn không có bộ theo dõi vấn đề với hook trước-cam kết phân tích cú pháp thông điệp tường trình của bạn, bạn vẫn có thể sử dụng cái này để biến các vấn đề được đề cập trong các thông điệp tường trình của bạn vào các liên kết!

Và ngay cả khi bạn không cần các liên kết, những con số vấn đề hiển thị như là một cột riêng biệt trong hộp thoại tường trình, làm cho nó dễ dàng hơn để tìm thấy những thay đổi liên quan đến một vấn đề cụ thể.

Một số thuộc tính tsvn: đòi hỏi phải có giá trị đúng/sai . TortoiseSVN cũng hiểu vâng như một từ đồng nghĩa với đúng không như một từ đồng nghĩa với sai .

Thiết lập các Thuộc Tính trên các Thư Mục

Những thuộc tính này phải được thiết lập trên các thư mục hệ thống để làm việc. Khi bạn cam kết một tập tin hoặc thư mục các thuộc tính được đọc từ các thư mục đó. Nếu các thuộc tính không được tìm thấy ở đó, TortoiseSVN sẽ tìm kiếm trở lên thông qua cây thư mục để tìm thấy chúng cho đến khi nó đến một thư mục chưa phiên bản, hoặc gốc cây (ví dụ: C:\ ) được tìm thấy. Nếu bạn có thể chắc chắn rằng mỗi người dùng chỉ kiểm xuất từ ví dụ như trunk/ và không phải là một thư mục con, thì nó là đủ nếu bạn thiết lập các thuộc tính trên trunk/ . Nếu bạn không thể chắc chắn, bạn nên thiết lập các thuộc tính một cách đệ quy trên mỗi thư mục con. Một thuộc tính thiết lập sâu hơn trong hệ thống phân cấp dự án sẽ ghi đè các thiết lập trên các mức độ cao hơn (gần với trunk/ ).

As of version 1.8, TortoiseSVN and Subversion use so called inherited properties, which means a property that is set on a folder is automatically also implicitly set on all subfolders. So there's no need to set the properties on all folders anymore but only on the root folder.

Đối với thuộc tính chỉ của dự án, tức là tsvn: , bugtraq: webviewer: bạn có thể sử dụng hộp kiểm Đệ quy để thiết lập thuộc tính cho tất cả các thư mục con trong hệ thống phân cấp, mà không cần đặt nó trên tất cả các tập tin.

Khi bạn thêm mới các thư mục con vào một bản sao làm việc bằng cách sử dụng TortoiseSVN, bất kỳ thuộc tính dự án có trong thư mục mẹ sẽ tự động được thêm vào thư mục con.

Không có Thông Tin về Bộ Theo Dõi Vấn Đề từ Trình Duyệt Kho

Bởi vì sự tích hợp theo dõi vấn đề phụ thuộc vào truy cập vào các thuộc tính Subversion, bạn sẽ chỉ thấy các kết quả khi sử dụng một bản sao làm việc được kiểm xuất. Lấy thuộc tính từ xa là một hoạt động chậm, vì vậy bạn sẽ không thấy tính năng này họat động động từ trình duyệt kho, trừ khi bạn bắt đầu trình duyệt kho từ bản sao làm việc của bạn. Nếu bạn bắt đầu trình duyệt kho bằng cách nhập vào URL của kho bạn sẽ không thấy tính năng này.

Vì lý do tương tự, các thuộc tính dự án sẽ không được truyền tự động khi một thư mục con được thêm vào bằng cách sử dụng trình duyệt kho.

This issue tracker integration is not restricted to TortoiseSVN; it can be used with any Subversion client. For more information, read the full Issue Tracker Integration Specification in the TortoiseSVN source repository. (phần “Giấy phép” explains how to access the repository.)

Lấy Thông tin từ Bộ Theo Dõi Vấn Đề

Các phần trước đảm đương việc thêm thông tin vào các thông điệp tường trình. Nhưng nếu những gì cần để nhận được thông tin từ bộ theo dõi vấn đề? Hộp thoại cam kết có một giao diện COM cho phép tích hợp một chương trình bên ngoài mà có thể nói chuyện với bộ theo dõi của bạn. Thông thường bạn có thể muốn truy vấn bộ theo dõi để có được một danh sách các vấn đề mở được giao cho bạn, để bạn có thể chọn những vấn đề đang được đề cập trong cam kết này.

Any such interface is of course highly specific to your issue tracker system, so we cannot provide this part, and describing how to create such a program is beyond the scope of this manual. The interface definition and sample plugins in C# and C++/ATL can be obtained from the contrib folder in the TortoiseSVN repository. (phần “Giấy phép” explains how to access the repository.) A summary of the API is also given in Chương 7, giao diện IBugtraqProvider. Another (working) example plugin in C# is Gurtle which implements the required COM interface to interact with the Google Code issue tracker.

Đối với mục đích minh họa, chúng ta hãy giả sử rằng quản trị viên hệ thống của bạn đã cung cấp cho bạn một plugin theo dõi vấn đề mà bạn đã cài đặt, và rằng bạn đã thiết lập một số bản sao làm việc của bạn sử dụng các plugin trong hộp thoại thiết lập TortoiseSVN của. Khi bạn mở hộp thoại cam kết từ một bản sao làm việc mà các plugin đã được chỉ định, bạn sẽ thấy một nút mới ở trên cùng của hộp thoại.

Hình 4.66. Hộp thoại ví dụ truy vấn theo dõi vấn đề

Hộp thoại ví dụ truy vấn theo dõi vấn đề


Trong ví dụ này, bạn có thể chọn một hoặc nhiều vấn đề mở. Các plugin sau đó có thể tạo ra văn bản được định dạng đặc biệt mà nó bổ sung vào thông điệp tường trình của bạn.