Manuals

Integracija s sistemi za sledenje zadev

V razvoju programske opreme se pogosto dogaja, da so spremembe vezane na določenega hrošča ali številko zadeve. Uporabniki sistemov za sledenje zadev pogosto želijo asociirati spremembe v sistemu Subversion z določeno številko zadeve v sistemu za sledenje zadev. Večina sistemov za sledenje zadev omogoča pisanje ukaznih datotek akcije pred objavo, ki pregleda sporočilo dnevniškega zapisa in poišče številko zadeve. Tak način je podvržen napakam, saj se zanaša na dejstvo, da bodo uporabniki napisali sporočilo dnevniškega zapisa v pravilni obliki.

TortoiseSVN lahko pomaga uporabniku na dva načina:

  1. Ko uporabnik vpiše sporočilo dnevniškega zapisa, lahko samodejno doda predhodno določeno vrstico, ki vsebuje številko zadeve, ki se nanaša na objavo. Tako se zmanjša možnost, da uporabnik vpiše številko zadeve v obliki, ki jo orodje za sledenje zadev ne zna pravilno razčleniti.

    Lahko pa TortoiseSVN označi del vnešenega sporočila dnevniškega zapisa, ki ga sledilnik zadev prepozna. Tako uporabnik ve, da je sporočilo dnevniškega zapisa mogoče pravilno razčleniti.

  2. Ko uporabnik brska po dnevniških zapisih, TortoiseSVN ustvari povezavo za vsako številko hrošča v sporočilu dnevniškega zapisa, ki požene spletni brskalnik in naloži stran ustrezne zadeve.

Dodajanje številk zadev dnevniškim zapisom

V TortoiseSVN lahko integrirate sledilnik zadev po vaši izbiri. Za to morate definirati nekaj lastnosti, ki se začnejo z bugtraq:. Nastavljene morajo biti na mapah: (“Nastavitve projekta”)

Slika 4.70. The Bugtraq Properties Dialog

The Bugtraq Properties Dialog


When you edit any of the bugtraq properties a special property editor is used to make it easier to set appropriate values.

V TortoiseSVN lahko integrirate sisteme za sledenje na dva načina. Prvi je na osnovi enostavnih nizov, drugi pa na osnovi regularnih izrazov. Lastnosti, ki se uporabljajo pri obeh pristopih, so:

bugtraq:url

Set this property to the URL of your bug tracking tool. It must be properly URI encoded and it has to contain %BUGID%. %BUGID% is replaced with the Issue number you entered. This allows TortoiseSVN to display a link in the log dialog, so when you are looking at the revision log you can jump directly to your bug tracking tool. You do not have to provide this property, but then TortoiseSVN shows only the issue number and not the link to it. e.g the TortoiseSVN project is using http://issues.tortoisesvn.net/?do=details&id=%BUGID%.

Namesto absolutnih lahko uporabljate tudi relativne naslove URL. To je uporabno v primeru, ko je sledilnik zadev na isti domeni/strežniku kot skladišče Subversion. Če se ime domeni kdaj spremeni, vam tako ni potrebno spreminjati lastnosti bugtraq:url. Obstajata dva načina, kako določiti relativen naslov URL:

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

Nastavite to vrednost na true, če želite, da vas TortoiseSVN opozori, če pustite polje za vnos številke zadeve prazno. Dovoljene vrednosti so true/false. Če vrednost ni nastavljena, se predpostavlja false (brez opozarjanja).

Številka zadeve v vnosnem polju

Pri enostavnem načinu TortoiseSVN uporabniku pokaže posebno polje za vnos številke hrošča. Nato se na začetek/konec dnevniškega zapisa doda posebna vrstica.

bugtraq:message

Ta lastnost aktivira način z vnosnim poljem. Če nastavite to lastnost, vas TortoiseSVN ob objavi povpraša po številki zadeve. Številka se vnese na konec sporočila dnevniškega zapisa. Vsebovati mora niz %BUGID%, ki se ob objavi zamenja s številko zadeve. To zagotavlja, da sporočilo vedno vsebuje referenco na številko zadeve, ki je podana v pravilni obliki in jo orodje za sledenje zadev lahko razčleni ter poveže s to objavo. Primer: projekt TortoiseSVN uporablja vrednost Issue : %BUGID%, vendar je to odvisno od orodja, ki ga uporabljate.

bugtraq:label

To besedilo se prikaže v oknu za objave in opisuje vnosno polje za vpis številke zadeve. Če ni nastavljeno, se pojavi napis Bug-ID / Issue-Nr:. Upoštevajte, da se okno ne bo samodejno povečalo, zato omejite število znakov v napisu na 20 do 25.

bugtraq:number

Če je vrednost nastavljena na true, je v polje za številko zadeve dovoljeno vpisati le številke. Izjema je le vejica, ki jo uporabite, da vnesete več številk zadeve. Veljavni vrednosti sta true/false. Če vrednost ni nastavljena, se predpostavlja true.

bugtraq:append

Ta lastnost določa, ali se številka hrošča (zadeve) pripne na konec sporočila dnevniškega zapisa (true) ali na začetek (false). Veljavni vrednosti sta true/false. Če vrednost ni nastavljena, se predpostavlja true, zato da obstojoči projekti še vedno delujejo.

Številka zadeve z uporabo regularnih izrazov

Pri pristopu z regularnimi izrazi TortoiseSVN ne prikaže vnosnega polja, ampak označi del sporočila dnevniškega zapisa, ki ga orodje za sledenje zadev prepozna. To se dogaja med vnosom besedila. To pomeni tudi, da se številka zadeve lahko nahaja kjerkoli v sporočilu. Ta metoda je precej bolj fleksibilna in jo uporablja tudi sam projekt TortoiseSVN.

bugtraq:logregex

Ta lastnost aktivira sistem sledenja zadev v načinu Regex. Vsebuje enega ali dva regularna izraza, ločena z novo vrstico.

If two expressions are set, then the first expression is used as a pre-filter to find expressions which contain bug IDs. The second expression then extracts the bare bug IDs from the result of the first regex. This allows you to use a list of bug IDs and natural language expressions if you wish. e.g. you might fix several bugs and include a string something like this: This change resolves issues #23, #24 and #25.

If you want to catch bug IDs as used in the expression above inside a log message, you could use the following regex strings, which are the ones used by the TortoiseSVN project: [Ii]ssues?:?(\s*(,|and)?\s*#\d+)+ and (\d+).

Prvi izraz iz sporočila dnevniškega zapisa izlušči niz napake #23, #24 in #25. Drugi regularni izraz iz rezultata prvega izraza izlušči številke zadev. V tem primeru vrne 23, 24 in 25, ki se uporabijo kot številke zadev.

Če malce razčlenimo prvi regularni izraz: začeti se mora z besedo napaka. Beseda se lahko začne z veliko začetnico, lahko pa je zapisana v obliki dvojine ali množine ([aie]). Besedi lahko sledi dvopičje. Sledi ena ali več skupin, vsaka lahko vsebuje vodilne presledke, vejico ali niz in in zaključne presledke. Na koncu se nahaja obvezen znak # in obvezna številka.

Če je nastavljen le en izraz, potem mora le številka zadeve ustrezati skupini v regularnemu izrazu. Primer: [Nn]apaka(?:)? #?(\d+) To metodo zahtevajo nekateri sledilniki zadev, n. pr. trac, in jih je težje zgraditi. Zato priporočamo, da to metodo uporabite le, če tako velevajo navodila izbranega sledilnika zadev.

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/.

It's not always easy to get the regex right so to help out there is a test dialog built into the bugtraq properties dialog. Click on the button to the right of the edit boxes to bring it up. Here you can enter some test text, and change each regex to see the results. If the regex is invalid the edit box background changes to red.

Če sta nastavljeni obe lastnosti - bugtraq:message in bugtraq:logregex - se upošteva logregex.

Namig

Tudi če nimate orodja za sledenje zadev, ki ga nastavite v skripto akcij za akcijo pred objavo, lahko še vedno uporabljate ta sistem, da številke zadev v sporočilu spremenite v povezave!

Povezav mogoče niti ne potrebujete, številke zadev pa se vseeno pojavijo v posebnem stolpcu v dnevniku, tako da lahko hitreje najdete spremembe, ki so povezane z določeno zadevo.

Nekatere lastnosti tsvn: zahtevajo vrednost true/false. TortoiseSVN razume tudi besedo yes kot sinonim za true in besedo no kot sinonim za false.

Nastavite lastnosti na mapah

These properties must be set on folders for the system to work. When you commit a file or folder the properties are read from that folder. If the properties are not found there, TortoiseSVN will search upwards through the folder tree to find them until it comes to an unversioned folder, or the tree root (e.g. C:\) is found. If you can be sure that each user checks out only from e.g trunk/ and not some sub-folder, then it's enough if you set the properties on trunk/. If you can't be sure, you should set the properties recursively on each sub-folder. A property setting deeper in the project hierarchy overrides settings on higher levels (closer to 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.

For project properties only, i.e. tsvn:, bugtraq: and webviewer: you can use the Recursive checkbox to set the property to all sub-folders in the hierarchy, without also setting it on all files.

When you add new sub-folders to a working copy using TortoiseSVN, any project properties present in the parent folder will automatically be added to the new child folder too.

No Issue Tracker Information from Repository Browser

Because the issue tracker integration depends upon accessing Subversion properties, you will only see the results when using a checked out working copy. Fetching properties remotely is a slow operation, so you will not see this feature in action from the repo browser unless you started the repo browser from your working copy. If you started the repo browser by entering the URL of the repository you won't see this feature.

For the same reason, project properties will not be propagated automatically when a child folder is added using the repo browser.

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. (“License” explains how to access the repository.)

Pridobivanje informacij iz sledilnika zadev

The previous section deals with adding issue information to the log messages. But what if you need to get information from the issue tracker? The commit dialog has a COM interface which allows integration an external program that can talk to your tracker. Typically you might want to query the tracker to get a list of open issues assigned to you, so that you can pick the issues that are being addressed in this commit.

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. (“License” explains how to access the repository.) A summary of the API is also given in Poglavje 7, IBugtraqProvider interface. Another (working) example plugin in C# is Gurtle which implements the required COM interface to interact with the Google Code issue tracker.

Za ilustracijo si predstavljajmo, da vam je skrbnik sistema priskrbel vtičnik za sledilnik zadev, ki ste ga namestili, sedaj pa ga morate uporabiti pri delovnih kopijah. Vse potrebno postorite v oknu Nastavitve programa TortoiseSVN. Ko odprete okno za objave v delovni kopiji, ki ima nastavljen vtičnik, se na vrhu pogovornega okna pojavi nov gumb.

Slika 4.71. Primer poizvedovalnika sledilnika zadev

Primer poizvedovalnika sledilnika zadev


V tem primeru lahko izberete eno ali več odprtih zadev. Vtičnik nato ustvari posebej oblikovano besedilo, ki ga doda v sporočilo dnevniškega zapisa.

TortoiseSVN homepage