forked from TortoiseGit/TortoiseGit
-
Notifications
You must be signed in to change notification settings - Fork 0
/
issuetrackers.txt
181 lines (149 loc) · 7.9 KB
/
issuetrackers.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
Integration of Git (GUI) clients with Bug Tracking Tools:
================================================================================
I. Preface
==========
This document is primarily intended for writers of various GUI clients for
Git. Clients such as TortoiseGit, TortoiseSVN, Subclipse, RapidSVN, PySVN and many
others.
The goal of this document is to outline a common technique for defining and then
integrating these GUI clients with third party bug tracking software.
II. Introduction
================
It is very common in Software Development for changes to be related to a
specific bug or issue ID. Users of bug tracking systems would like to associate
the changes they make in Git with a specific ID in their bug tracking
system. There are already a number of people that have integrated these systems
with Git. They typically rely on the end user entering a log message on
their commits in some kind of a specific format that can be parsed with a
commit-hook or in some cases just on-the-fly in a web-based presentation of the
commit info. This option is OK, but it is not very user-friendly and it places
all of the integration within the bug tracking tool. When using a Git
client, you can see the log message info, but there is no way to jump to the bug
system.
Git (GUI) clients can help both the users and the bug tracking tools in
that task:
- When the user enters a log message, a well defined line including the issue
number associated with the commit can be added by the client automatically. This
reduces the risk that the users enters the issue number in a way the bug
tracking tools can't parse correctly and therefore won't know that the commit
was associated with a specific issue. The users won't have to remember the
format they have to use for each log message and each individual project - the
client will take care of that.
- When the user browses the log messages, there should be an easy way to fire up
the webbrowser to see the issue associated with that log message/commit.
III. Requirements
=================
To make the integration with bug tracking tools possible, a Git client
needs some information about the bug tracking tool used in a project. That
information should be available inside the working copy so that clients don't
have to access the repository over a possibly very slow connection to get that
information.
The information a client needs is:
- the URL pointing to the bug tracking tool
- the format of the issue number it has to add to the log messages so the
bug tracking tool can recognize it. Or
- a regular expression to parse the log message with to extract the issue number
There are other things a Git (GUI) client could use to make the
integration with bug tracking tools easier for the user, but these are
essential for the integration to work.
IV. Implementation
==================
The required information is stored in the .git/config file.
There are two different ways a client can integrate with an issue tracker. One
is very basic but provides the user with a separate GUI to enter bug ID's,
and the other one is based on regular expressions where the user has to enter
the bug ID's directly into the log message.
The following properties are defined which are used by both ways:
---------
name : bugtraq.url
value : (string)
This value is the URL pointing to the bug tracking tool. The URL string should
contain the substring "%BUGID%" which the client replaces with the issue number.
That way the resulting URL will point directly to the correct issue.
NOTE: The URL must be properly URI encoded by the user.
This URL can be used by clients to create a link to the bug tracking tool when
showing the logmessage of a revision.
---------
---------
name : bugtraq.warnifnoissue
value : "true"/"yes" or "false"/"no"
If set to "true", then the clients will warn the user if the issue text box is
left empty. But it must _not_ block the commit, only give the user a chance to
enter an issue number in case (s)he forgot it.
---------
Properties used with the basic integration:
---------
name : bugtraq.label
value : (string)
This can be used by a client as a GUI label describing the text box where the
user has to enter the issue number. If this is not set, then a default value
should be used, e.g. "Bug-ID / Issue-Number :". Keep in mind though that most
GUI clients don't resize their windows according to the size of GUI elements. So
keep the size of the label string below 20-25 chars.
---------
---------
name : bugtraq.message
value : (string)
If this property is set, then the client should show a text box in the commit
window where the user can enter an issue number.
The value string of this property is used by the client to create an additional
line added to the log message. The string must contain the substring "%BUGID%"
which is replaced with the issue number the user entered before applied to the
log message. The client will add the resulting string as a new line to the end
of the log message the user entered:
logmessage + "\n" + resultstring
In case bugtraq.append is set to "false", then the log message is defined as
resultstring + "\n" + logmessage
The client should make sure that the string doesn't have multiple lines.
If more than one issue number is entered by the user (separated by commas), the
client must make sure that there's no whitespace chars before and after the
comma. And also the whole issue number string must be trimmed.
Note: if the bugtraq.logregex property is set, then this property should be
ignored for parsing the log message but only be used to show the issue ID edit box.
---------
---------
name : bugtraq.number
value : "true"/"yes" or "false"/"no"
If this property is set to "false", then the client allows any character entered
in the issue text box. Any other value or if the property is missing then only
numbers are allowed as the issue number. One exception is the ',' char, which is
used to separate multiple issues.
The client must never complain if the text box is left empty, i.e. if no issue
number is given. Not all commits are assigned to an issue!
Note: if the property bugtraq.logregex is set and this property is set to false,
then the client should use the regex against the created string which is added
to the log message to check if the bug ID is valid.
---------
---------
name : bugtraq.append
value : "true"/"yes" or "false"/"no"
If set to "false", then the bugtraq.message part is inserted at the top of
the log message, if "yes" or not set, then it's appended to the log message at
the bottom.
---------
Properties used with the regex integration:
---------
name : bugtraq.logregex
value : (string)
This property contains one or two regular expressions, separated by a newline.
If only one expression is set, then the bare bug ID's must be matched in the
groups of the regex string. Example:
[Ii]ssue #?(\d+)
If two expressions are set, then the first expression is used to find a
string which relates to a bug ID but may contain more than just the bug ID
(e.g. "Issue #123" or "resolves issue 123").
The second expression is then used to extract the bare bug ID from the string
extracted with the first expression.
An example:
if you want to catch every pattern "issue #XXX" and "issue #890, #789" inside
a log message you could use the following regex strings:
[Ii]ssue #?(\d+)(,? ?#?(\d+))+
(\d+)
The property bugtraq.logregex will override bugtraq.number and bugtraq.message.
If both bugtraq.logregex and bugtraq.message are set, then bugtraq.message is
only used if the user enters an issue ID in the edit box of the commit window.
Both are used in the log window to find the URL's to point to the issuetracker.
---------
Please note:
- All property names and values must be properly UTF8 encoded. The client must
take care of that when setting the properties.