From: Aleksey 'C. P. <com...@av...> - 2005-10-20 23:23:44
|
Hello Max, Max Kanat-Alexander wrote: >> It would be >> nice if there was a convention 3rd party integration of SCM systems >> could follow when it comes to inserting comments in a bug-tracker. >> Then bug-trackers could search and parse for that syntax and >> autolinkify accordingly to their favorite linkification system >> (CVSView, WebSVN, etc). > > Kristis - > > What are the input parameters of such a function? That is, what > data would "bug_insert_comment" be passed, and what are some example > outputs that you'd like to see? > I could probably answer this question for Kristis. Kristis (the developer of SCMBUG - a nice tool I used to integrate Bugzilla with Subversion) and I were discussing why Bugzilla 2.20 was crashing when called from SCMBUG, when I mentioned to Kristis that I had modified Bugzilla to support this kind of autolinkification. When a user commits files to Subversion and marks the change as a fix for a particular bug in Bugzilla, SCMBUG adds a comment to this bug (or bugs) in the following form: ----------------------------------------------------------- Derive from the CHashTable and use CHashTable's functions to do everything. Calculate max/min/average count and Calculate the number of strings. Affected files: --------------- 388 --> 723 PDX:trunk/Common/Inc/HashCell.h 391 --> 723 PDX:trunk/Common/Src/HashCell.cpp 708 --> 723 PDX:trunk/Testing/Common/CommTest.cpp 690 --> 723 PDX:trunk/Testing/Common/Inc/SpecTabl.h 704 --> 723 PDX:trunk/Testing/Common/Src/SpecTabl.cpp ----------------------------------------------------------- I modified Bugzilla's autolinkification code to recognize such comments and turn the file names into links to WebSVN showing the changes in a side-by-side comparing page. Is it really worth adding a special function to Bugzilla that would allow SCM integrators to add these comments? IMHO, probably not, as the variety of possibilities is too large and greatly depends on the underlying SCM. The existing function Bugzilla::Bug::AppendComment seems to be general enough. The only thing an SCM integrator needs to do is to form a comment in some standard form and give it to Bugzilla::Bug::AppendComment. If I were asked to make some sort of generalization for these comments, I would define them like this: ----------------------------------------------------------- <An arbitrary text from the commit comment> <The_file_list_marker> <Operation> <Operation> .... ----------------------------------------------------------- Each <Operation> can be defined like this: <Operation> := <Change> <Project>:<Path> If <Path> ends with a slash, it is a directory, otherwise it is a file. <Project> is just a name of the corresponding project in the SCM. <Change> can be defined like this: <Change> := <Revision> <Arrow> <Revision> # Regular change | <NONE> <Arrow> <Revision> # New file/dir | <Revision> <Arrow> <NONE> # Deleted file/dir With this approach, one needs to have only the following things as parameters (as regex): <The_file_list_marker> <Revision> <Arrow> <NONE> Once all these things are known, it is relatively easy to write an autolinkification regex that recognizes such comments. The only thing left is the actual URL. The URL, obviously, also needs to be a parameter using things like %OLDREV%, %NEWREV%, %PROJECT% and %PATH%. There need to be three variants of the URL: one for a regular change, one for deleted files and another one for new files. It would be nice to have the type of the object (file/dir) as a variable as well (%TYPE%), with its values as configurable parameters. I am not sure about ViewCVS, but WebSVN does require this to be specified in the URL. Combined, there are 9 parameters for the administrator to configure: <The_file_list_marker> (regex) <Revision> (regex) <Arrow> (regex) <NONE> (regex) <URL_change> (string with env variables) <URL_delete> (string with env variables) <URL_new> (string with env variables) <Value_dir> (string) <Value_file> (string) I hope this rather verbose (sorry) response answers your question. If you like, I can send you the regex I used in my setup to autolinkify SCMBUG's comments, but it will have to be modified a little bit to make it more generic. With best regards, Aleksey Pershin P.S. Max, if you could help us solve the mystery of Bugzilla::Bug::AppendComment crashing in 2.20, I would be infinitely thankful :) |