Integracija sa Bag Praćenja Sistem / Problem Tragači

Veoma je često u Razvoju Softvera za izmene da imaju specifične bagove ili problem ID. Korisnici bag tragač sistema (problem tragač) su voleli da pridruže izmene koje su napravili u Subverziji sa specifičnim ID u njihovom problem tragaču. Većina problem tragača zbog toga omogućavaju pre-urezivanja zakačive skripte koje analiziraju dnevnik poruke da nađu bag ID sa kojim je urezivanje povezano. Ovo je ponekad sklono greškama odkad je potrebno da korisnik upiše dnevnik poruku ispravno tako da preurezivanja zakačiv skript može ga analizirati korektno.

TortoiseSVN može pomoći korisniku na dva načina:

  1. Kada korisnik unese dnevnik poruke, dobro definisana linija uključuje problem broj pridružen sa urezivanjem može biti dodat automatski. Ovo umanjuje rizik kada korisnik unosi problem broj na način da alat bag tragača ne može analizirati korektno.

    Ili TortoiseSVN može osvetliti deo celog dnevnik poruke koji je prepoznao problem tragač. Na taj način korisnik zna da dnevnik poruke ože biti analiziran korektno.

  2. Kada korisnik pretražuje dnevnik poruke, TortoiseSVN kreira vezu za svaki bag ID u dnevnik poruka koja pokreće pretraživač do nagoveštenog problema.

Dodavanje Problem Brojeva u Dnevnik Poruka

Možete integrisati alat praćenja bagova po vašem izboru u TortoiseSVN. Da to uradite, imate da definišete neke osobine, što se pokreće sa bugtraq:. To mora biti podešeno na Imenicima: (odeljak pod imenom „Podešavanje projekta“)

Slika 4.69. Dijalog bagtrek osobina

Dijalog bagtrek osobina


Kada uređujete bagtrek osobine specijalni uređivač se koristi da olakša podešavanje odgovarajućih vrednosti.

Postoji dva načina da se integriše TortoiseSVN sa problem tragačem. Jedna je zasnovana na jednostavnim stringovima, druga se bazira na regularnim izrazima. Osobine korišćene sa oba pristupa su:

bugtraq:url

Postavite ovu osobinu na URL vašeg alata za praćenje bagova. To mora biti odgovarajuće kodiran URI i mora sadržati %BUGID%. %BUGID% je zamenjen sa Problem brojem koji ste uneli. Ovo omogućava TortoiseSVN da prikaže vezu u dnevnik dijalogu, tako da kad gledate revizioni dnevnik možete samo skočiti direktno na vaš alat za praćenje bagova. Ne morate da omogućite ovu osobinu ali tada TortoiseSVN prikazuje samo problem broj a ne vezu do njega, tj. TortoiseSVN projekat koristi http://issues.tortoisesvn.net/?do=details&id=%BUGID%.

Možete takođe koristiti relativi URL umesto apsolutnog. Ovo je korisno kada vaš problem tragač je na istom domen/serveru kao i izvorno spremište. U slučaju da se ime domena ikada promeni, nemate da podešavate bugtraq:url osobinu. Postoje dva načina da se specificira relativni URL:

Ako počinje sa stringom ^/ uzima se da je relativan na koren spremišta. Na primer, ^/../?do=details&id=%BUGID% se rešava u http://tortoisesvn.net/?do=details&id=%BUGID% ako je vaše spremište locirano na http://tortoisesvn.net/svn/trunk/.

URL koji počinje stringom / se uzima da je relativno na serverovo imedomaćina. Na primer /?do=details&id=%BUGID% će se rešiti u http://tortoisesvn.net/?do=details&id=%BUGID% ako je vaše spremište locirano bil gde na http://tortoisesvn.net.

bugtraq:warnifnoissue

Podesite ovo na istina, ako želite da vas TortoiseSVN obaveštava o praznom problem-broj tekst polju. Ispravne vrednosti su istina/laž. Ako nije definisan, lažse pretpostavlja.

Izdavanje brojeva u tekst boksu

U jednostavnom pristupu, TortoiseSVN prikazuje korisniku izdvojena ulazna polja gde bag ID može biti unet. Zatim su izdvojene linije dodate/ubačene u dnevnik poruke koju je uneo krisnik.

bugtraq:message

Ova osobina aktivira sistem praćenja bagova u Ulazno polje modu. Ako je ova osobina podešena tada TortoiseSVN će vas pitati da unesete problem broj kada urezujete svoje izmene. To se koristi da se dodaju linije na kraj dnevnik poruke. Mora sadržati %BUGID%, koji je zamenjen sa problem brojem pri urezivanju. Ovo obezbeđuje da vaš dnevnik urezivanja sadrži referencu na problem broj koji je uvek konzistentnom formatu i može se analizirati vašim alatom za praćenje bagova da se pridruži problem broj sa posebnim urezivanjem. Kao jedan primer možete uzeti Issue : %BUGID%, ali ovo zavisi od vašeg Alata.

bugtraq:label

Ovaj tekst je prikazan pomoću TortoiseSVN u dijalogu urezivanja da označi boks uređivanja gde unosite problem broj. Ako nije podešen, Bug-ID / Issue-Nr: će biti prikazan. Zapamtite to da taj prozor ne može promeniti veličinu da obuhvati ovu oznaku, pa neka je veličina ove oznake ispod 20-25 karaktera.

bugtraq:number

Ako podesite istina samo brojevi su dozvoljeni u problem-broj tekst polju. Izuzetak je zarez, zako da možete zapetom izdvojiti više brojeva. Ispravne vrednosti su istina/laž. Ako nije definisana, istina se uzima.

bugtraq:append

Ova osobina definiše da li je bag-ID dodat (istina) na kraj dnevnik poruke ili ubačen (laž) na početak dnevnik poruke. Ispravne vrednosti su istina/laž. Ako nije definisana, istina se podrazumeva, tako da postojeći projekat ne pukne.

Izdavanje brojeva koristeći regularne izraze

U pristupu sa regularnim izrazima, TortoiseSVN ne prikazuje izdvojena ulazna polja ali markira deo dnevnik poruku koju korisnik unese što je prepoznato od problem tragača. Ovo je datodok korisnik piše dnevnik poruku. Ovo takođe znači da bag ID može biti bilo gde unutar dnevnika poruke! Ovaj metod je mnogo više fleksibilan, i jedan je od onih koje projekat TortoiseSVN koristi sam.

bugtraq:logregex

Ova osobina aktivira sistem praćenja bagova u Regeks modu. Sadrži ili podenični regularni izraz, ili dva regularna izraza razdvojena novimredom.

Ako su dva izraza podešena, tada je prvi izraz korišćen kao pre-filter da nađe izraze koji sadrže bag ID. Drugi izraz zatim izdvaja gole bag ID iz rezultata prve regeks. Ovo dozvoljava da se koristi lista bag ID i prirodan jezik izraza ako želite npr. možete fiksirati nekoliko bagova i uključiti string nešto kao ovo: Ova izmena rešava probleme #23, #24 i #25.

Ako hoćete da uhvatite bag ID kako su korišćeni u gornjem izrazu unutar dnevnik poruke, možete koristiti sledeće regeks stringove, koji su jedni od korišćenih u TortoiseSVN projektu: [Ii]ssues?:?(\s*(,|and)?\s*#\d+)+ and (\d+).

Prvi izraz izvlači issues #23, #24 and #25 iz okruženja dnevnik poruke. Drugi regeks ekstrahuje pune decimalne brojeve iz izlaza prve regeks, tako da će to vratiti 23, 24 i 25 da se koristi kao bag ID.

Mala greška kod prve regeks, mora se početi rečju problem, moguće sa velikim slovima. Ovo je opcionalno praćeno sa jednim s (više od jednog problema) i opcionalno tačkom i zarezom. Ovo je praćeno jednim ili više grupe svaki ima nula ili više vodećih belina, opcionalna zapeta ili i i više opcionalnih razmaka. Na kraju postoji obavezan # i obavezan decimalni broj.

Ako je samo jedan izraz podešen onda go bag ID mora biti uhvaćen u grupama regeks stringova. Primer: [Ii]ssue(?:s)? #?(\d+) Ovaj metod traži više problem tragača, npr. trac, ali to je teže konstruisati regeks. Preporučujemo da samo koristite ovaj metod ako dokumentacija vašeg problem tragača to kaže.

Ako niste familijarni sa regeks izrazima pogledajte u uvod na http://en.wikipedia.org/wiki/Regular_expression, i onlajn dokumentaciju i tutorijal na http://www.regular-expressions.info/.

Nije uvek lako dobiti regeks ispravno da bi vam se pomoglo postoji test dijalog u dijalogu bagtrek osobina. Kliknite dugme desno od boksa uređenja da ga dozovete. Ovde možete uneti neki test tekst i izmeniti svaki regeks da vidite rezultate. Ako je regeks neispravan pozadina se menja u crveno.

Ako oba bugtraq:message i bugtraq:logregex osobine setovanr, logregex ima prednost.

Savet

Čak i ako nemate problem tragač sa pre-urezivanje zakačaljka analizira vaš dnevnik poruka, vi još uvek možete koristiti ovo da okrenete problem zamišljen u vašem dnevniku poruka u vezi!

I čak ako vam ne treba veza, problem brojevi prikazuju kao izdvojena kolona u dnevnik dijalogu, čineći to lakšim da nađete što se odnosi na poseban problem.

Neke tsvn: osobine zahtevaju true/false vrednosti. TortoiseSVN takođe razume yes kao sinonim za true i no kao sinonim za false.

Podešavabje osobina foldera

Ove osobine moraju biti podešene na folderu za sistem koji radi. Kada urezujete fajl ili folder osobine su pročitane iz foldera. Ako osobine nisu nađene tamo, TortoiseSVN će pretraživati nagore kroz stablo foldera da ga nađete dok ne dođe neverzionisani folder, ili koren stabla (npr. C:\) nađen. Ako možete biti sigurni da svaki korisnik preuzima samo sa npr. trunk/ a ne neke sub-foldere, zatim to je dovoljno ako podesite osobine na trunk/. Ako ne možete biti sigurni, morate podesiti osobine rekurzivno na svakom sub-folderu. Osobine podešene dublje u hijerarhiji projekta koja prepisuje podešavanje na višim nivoima (bliže ka trunk/).

Od verzije 1.8 TortoiseSVN i Subverzija koriste takozvane inasleđene osobine, što znači osobine koje su podešene u folderu automatski takođe implicitno podešene u svim podfolderima. Tako nije potrebno podesiti osobine u svim folderima bilo gde osim u korenom folderu.

Za osobine projekta samo, tj tsvn:, bugtraq: i webviewer: možete koristiti Rekurziv čekboks da podesite osobine svih sub-foldera u hijerarhiji, takođe bez podešavanja na sve fajlove.

Kada dodate novi sub-folder u radnu kopiju koristeći TortoiseSVN, osobine bilo kog projekta prisutne u predačkom folderu će automatski biti takođe dodate novom potomačkom folderi.

Nema Problem Tragač Informacije iz Pretraživača Spremišta

Pošto integracija problem tragača zavisi od pristupa Subverzijinim osobinama možete videti rezultate samo korišćenjem preuzete radne kopije. Nalaženjem osobina daljinski je spora operacija tako da nećete videti ove osobine na delu iz repo pretraživačaosim ako ne započnete repo pretraživač iz vaše radne kopije. Ako pokrenete repo pretraživač unošenjem URL spremišta nećete videti ove osobine.

Iz nekih razloga osobine projekta neće se prenositi automatski kada se potomački folder doda korišćenjem repo pretraživača.

Ovaj problem tragač integrator nije ograničen na TortoiseSVN; može se koristiti sa bilo kojim Subverzioonim klijentom. Za više informacija pročitajte vezu Issue Tracker Integration Specification u TortoiseSVN izvornom spremištu. (odeljak pod imenom „Licence“ objašnjava kako pristupiti spremištu.)

Dobijanje informacija od poblem tragača

Prethodni paragraf razmatra dodavanje problem informacija u dnevnik poruka. Ali šta ako vam treba da dobijete informaciju od problem tragača? Dijalog urezivanja ima COM interfejs koji dozvoljava integraciju spoljašnjih programa koji mogu govoriti vašem tragaču. Tipično možete želeti da tražite tragaču da da listu otvorenih problema pridruženih vama, tako da možete odabrati problem koji će biti adresiran pri urezivanju.

Svaki takav interfejs je, svakako visoko specifičan za vaš problem tragač sistem, tako mi ne možemo obezbediti ovaj deo i opisujući kako kreirati takav program je van vidokruga ovog manuala. Definicija interfejsa i plagin u C# C++/ATL može biti dobijeno iz contrib foldera u TortoiseSVN repository. (odeljak pod imenom „Licence“ objašnjava kako pristupiti spremištu.) Ukupnost API takođe je dat u Poglavlje 7, IBagtragačSnabdevač interfejs. Drugi (radni) primer plagin u C# je Gurtle koji primenjuje potreban COM interfejs da interaguje sa Google Code problem tragačem.

U ilustrativne svrhe, pretpostavimo da je vaš sitem administrator obezbedio problem tragač jezičak koji ste instalirali, i da ste podesili neke vaše radne kopije da koriste jezičak u TortoiseSVN dijalogu podešavanja. Kada otvorite dijalog urezivanje iz radne kopije na koju je asociran jezičak možete videti novo dugme na vrhu dijaloga.

Slika 4.70. Primer dijaloga zahteva problem tragača

Primer dijaloga zahteva problem tragača


U ovom primeru možete izabrati jedan ili više otvorenih problema. Jezičak možete generisati specijalno formatirani tekst koji ste dodali vašem dnevniku porke.