Domanda

Ho installato TotroiseSVN e la maggior parte dei miei repository effettua il check-in e il check-out da C:\subversion\ e una coppia che effettua il check-in e il check-out da una condivisione di rete (me ne ero dimenticato quando ho inizialmente pubblicato questa domanda).

Ciò significa che non ho un server "sovversione" di per sé.

Come integro TortoiseSVN e Fogbugz?

Modificare:corsivo inserito

È stato utile?

Soluzione

Ho studiato questo problema e sono riuscito a farlo funzionare.Ci sono un paio di problemi minori ma possono essere risolti.

Ci sono 3 parti distinte di questo problema, come segue:

  1. La parte TortoiseSVN - fare in modo che TortoiseSVN inserisca il Bugid e il collegamento ipertestuale nel registro svn

  2. La parte FogBugz - fare in modo che FogBugz inserisca le informazioni SVN e i collegamenti corrispondenti

  3. La parte WebSVN - garantire che i collegamenti da FogBugz funzionino effettivamente

Le istruzioni per la parte 1 si trovano in un'altra risposta, sebbene in realtà faccia più del necessario.Le cose sugli hook riguardano in realtà la parte 2 e, come è stato sottolineato, non funziona "fuori dagli schemi"

Giusto per confermare, stiamo valutando l'utilizzo di TortoiseSVN SENZA un server SVN (es.repository basati su file)

Accedo ai repository utilizzando percorsi UNC, ma funziona anche per unità locali o unità mappate.

Tutto questo funziona con TortoiseSVN v1.5.3 e SVN Server v1.5.2 (è necessario installare SVN Server perché la parte 2 richiede svnlook.exe che si trova nel pacchetto del server.In realtà non lo configuri per funzionare come server SVN) Potrebbe anche essere possibile semplicemente copiare svnlook.exe da un altro computer e inseriscilo da qualche parte nel tuo percorso.

Parte 1 - TartarugaSVN

La creazione delle proprietà TortoiseSVN è tutto ciò che è necessario per ottenere i collegamenti nel registro SVN.

Le istruzioni precedenti funzionano bene, le riporto qui per comodità:

Configura le proprietà

  1. Fai clic con il pulsante destro del mouse sulla directory principale del progetto estratto con cui desideri lavorare.

  2. Seleziona "TortoiseSVN -> Proprietà"

  3. Aggiungi cinque coppie di valori di proprietà facendo clic su "Nuovo..." e inserendo quanto segue rispettivamente in "Nome proprietà" e "Valore proprietà":(assicurati di selezionare "Applica proprietà ricorsivamente" per ognuno)

    bugtraq:label    BugzID:
    bugtraq:message  BugzID: %BUGID%
    bugtraq:number   true
    bugtraq:url      http://[your fogbugz URL here]/default.asp?%BUGID%
    bugtraq:warnifnoissue   false
    
  4. Fare clic su "OK"

Come dice Jeff, dovrai farlo per ogni copia di lavoro, quindi segui le sue istruzioni per la migrazione delle proprietà.

Questo è tutto.TortoiseSVN ora aggiungerà un collegamento al bugID FogBugz corrispondente quando esegui il commit.Se è tutto quello che vuoi, puoi fermarti qui.

Parte 2 - FogBugz

Affinché funzioni, dobbiamo impostare gli script di hook.Fondamentalmente il file batch viene chiamato dopo ogni commit e questo a sua volta chiama lo script VBS che esegue l'invio a FogBugz.Lo script VBS funziona effettivamente bene in questa situazione, quindi non è necessario modificarlo.

Il problema è che il file batch è scritto per funzionare come file server hook, ma abbiamo bisogno di a cliente gancio.

Il server SVN chiama l'hook post-commit con questi parametri:

<repository-path> <revision>

TortoiseSVN chiama l'hook post-commit con questi parametri:

<affected-files> <depth> <messagefile> <revision> <error> <working-copy-path>

Ecco perché non funziona: i parametri sono sbagliati.Dobbiamo modificare il file batch in modo che passi i parametri corretti allo script VBS.

Noterai che TSVN non passa il percorso del repository, il che è un problema, ma funziona nelle seguenti circostanze:

  • Il nome del repository e il nome della copia di lavoro sono gli stessi
  • Esegui il commit nella radice della copia di lavoro, non in una sottocartella.

Vedrò se riesco a risolvere questo problema e se lo faccio lo pubblicherò qui.

Ecco il mio file batch modificato che funziona (scusate i commenti eccessivi...)

Dovrai impostare le directory di hook e repository in modo che corrispondano alla tua configurazione.

rem @echo off
rem   SubVersion -> FogBugz post-commit hook file
rem   Put this into the Hooks directory in your subversion repository
rem   along with the logBugDataSVN.vbs file

rem   TSVN calls this with args <PATH> <DEPTH> <MESSAGEFILE> <REVISION> <ERROR> <CWD>
rem   The ones we're interested in are <REVISION> and <CWD> which are %4 and %6

rem   YOU NEED TO EDIT THE LINE WHICH SETS RepoRoot TO POINT AT THE DIRECTORY 
rem   THAT CONTAINS YOUR REPOSITORIES AND ALSO YOU MUST SET THE HOOKS DIRECTORY

setlocal

rem   debugging
rem echo %1 %2 %3 %4 %5 %6 > c:\temp\test.txt

rem   Set Hooks directory location (no trailing slash)
set HooksDir=\\myserver\svn\hooks

rem   Set Repo Root location (ie. the directory containing all the repos)
rem   (no trailing slash)
set RepoRoot=\\myserver\svn

rem   Build full repo location
set Repo=%RepoRoot%\%~n6

rem   debugging
rem echo %Repo% >> c:\temp\test.txt

rem   Grab the last two digits of the revision number
rem   and append them to the log of svn changes
rem   to avoid simultaneous commit scenarios causing overwrites
set ChangeFileSuffix=%~4
set LogSvnChangeFile=svn%ChangeFileSuffix:~-2,2%.txt

set LogBugDataScript=logBugDataSVN.vbs
set ScriptCommand=cscript

rem   Could remove the need for svnlook on the client since TSVN 
rem   provides as parameters the info we need to call the script.
rem   However, it's in a slightly different format than the script is expecting
rem   for parsing, therefore we would have to amend the script too, so I won't bother.
rem @echo on
svnlook changed -r %4 %Repo% > %temp%\%LogSvnChangeFile%
svnlook log -r %4 %Repo% | %ScriptCommand% %HooksDir%\%LogBugDataScript% %4 %temp%\%LogSvnChangeFile% %~n6

del %temp%\%LogSvnChangeFile%
endlocal

Presumo che i repository siano su \\myserver\svn\ e le copie di lavoro sono tutte in "C:\Projects\

  1. Accedi al tuo account FogBugz e fai clic su Extra -> Configura integrazione del controllo del codice sorgente

  2. Scarica il file VBScript per Subversion (non preoccuparti del file batch)

  3. Crea una cartella per archiviare gli script di hook.L'ho messo nella stessa cartella dei miei repository.per esempio. \\myserver\svn\hooks\

  4. Rinominare VBscript per rimuovere il file .safe alla fine del nome del file.

  5. Salva la mia versione del file batch nella directory dei tuoi hook, come post-commit-tsvn.bat

  6. Fare clic con il tasto destro su qualsiasi directory.

  7. Seleziona "TortoiseSVN > Impostazioni" (nel menu contestuale dell'ultimo passaggio)

  8. Seleziona "Script Hook"

  9. Fare clic su "Aggiungi" e impostare le proprietà come segue:

    • Tipo di gancio:Hook post-impegno

    • Percorso della copia di lavoro: C:\Projects (o qualunque sia la directory root per tutti i tuoi progetti.)

    • Riga di comando da eseguire: \\myserver\svn\hooks\post-commit-tsvn.bat (questo deve puntare al punto in cui hai inserito la directory degli hook nel passaggio 3)

    • Seleziona "Attendi il completamento dello script"

  10. Fare clic su OK due volte.

La prossima volta che effettuerai il commit e inserirai un Bugid, questo verrà inviato a FogBugz.I collegamenti non funzioneranno ma almeno le informazioni sulla revisione sono presenti e puoi cercare manualmente il registro in TortoiseSVN.

NOTA:Noterai che la radice del repository è codificata nel file batch.Di conseguenza, se esegui il check-out da repository che non hanno la stessa radice (ad es.uno sull'unità locale e uno sulla rete), dovrai utilizzare 2 file batch e 2 voci corrispondenti in Hook Scripts nelle impostazioni TSVN.Il modo per farlo sarebbe avere 2 alberi di copia di lavoro separati, uno per ciascuna radice del repository.

Parte 3 - WebSVN

Errr, non l'ho fatto :-)

Dalla lettura dei documenti WebSVN, sembra che WebSVN in realtà non si integri con il server SVN, si comporta semplicemente come qualsiasi altro client SVN ma presenta un'interfaccia web.In teoria quindi dovrebbe funzionare bene con un repository basato su file.Non l'ho provato però.

Altri suggerimenti

Questa risposta è incompleta e imperfetta!Funziona solo da TortoisSVN a Fogbugz, ma non viceversa.Devo ancora sapere come farlo funzionare all'indietro da Fogbugz (come è stato progettato per) in modo da poter vedere il numero di revisione in cui viene indirizzato un bug da Fogbugz mentre guardo un bug.


URL utili

http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-propertypage.html

http://tortoisesvn.net/issuetracker_integration


Imposta i "Ganci"

  1. Accedi al tuo account fogbugz e fai clic su Extra > Configura integrazione del controllo del codice sorgente

  2. Scarica "post-commit.bat" e il file VBScript per Subversion

  3. Crea una directory "hook" in una posizione comune facilmente accessibile (preferibilmente senza spazi nel percorso del file)

  4. Posiziona una copia dei file nelle directory degli hook

  5. Rinominare i file senza l'estensione ".safe".

  6. Fare clic con il tasto destro su qualsiasi directory.

  7. Seleziona "TortoiseSVN > Impostazioni" (nel menu contestuale dell'ultimo passaggio)

  8. Seleziona "Script Hook"

  1. Fare clic su "Aggiungi"

  2. Imposta le proprietà così:

    • Tipo di gancio:Hook post-impegno

    • Percorso della copia di lavoro:C:\\Projects (o qualunque sia la directory root per tutti i tuoi progetti.Se ne hai più di uno, dovrai eseguire questo passaggio per ciascuno di essi.)

    • Riga di comando da eseguire:C:\\subversion\\hooks\\post-commit.bat (deve puntare al punto in cui hai inserito la directory degli hook dal passaggio 3)

    • Ho anche selezionato la casella di controllo Attendi il completamento dello script...

AVVERTIMENTO:Non dimenticare la doppia barra rovesciata!"\\"

Fare clic su OK...

Adding a Hook Script

Nota:lo screenshot è diverso, segui il testo per i percorsi dei file, NON lo screenshot...

A questo punto sembrerebbe che potresti fare clic su "Integrazione Issue Tracker" e selezionare Fogbugz.No.Restituisce semplicemente "Non sono disponibili fornitori di tracciamento dei problemi".

  1. Fare clic su "OK" per chiudere l'intera finestra Dialogo delle impostazioni

Configura le proprietà

  1. Ancora una volta, fai clic con il pulsante destro del mouse sulla directory principale del progetto check out con cui si desidera lavorare (è necessario eseguire questo passaggio "Configura le proprietà" per ciascun progetto - vedere "Proprietà migratrici tra progetti" di seguito)

  2. Seleziona "Tortoisvn> Proprietà" (nel menu del clic destro dall'ultimo passaggio)

  3. Aggiungi cinque coppie di valore di proprietà facendo clic su "Nuovo ..." e inserendo quanto segue in "Nome proprietà" e "Valore della proprietà" rispettivamente:

bugtraq:etichetta BugzID:
bugtraq:messaggio BugzID:%%BUGID%%

bugtraq:numero vero

bugtraq:url http://[tuo Fogbugz URL qui] /Default.asp?%bugid%

bugtraq:warnifnoissue falso

properties window adding new property

  1. Fare clic su "OK"

Applicazione delle modifiche e visualizzazione dei registri

Ora quando effettui il commit, puoi specificare un bug che il commit risolve.Questo tipo di ti costringe a impegnarti dopo aver corretto ogni bug...

specifying bug addressed when commiting

Quando visualizzi il registro (fai clic con il pulsante destro del mouse sulla radice del progetto, TortoiseSVN > mostra registro) puoi vedere l'ID del bug a cui corrisponde ogni controllo (1) e puoi fare clic sul numero dell'ID del bug da portare su fogbugz per visualizzare quel bug automaticamente se stai guardando il messaggio di registro effettivo.Abbastanza carino!


Migrazione delle proprietà tra progetti

  1. Fare clic con il tasto destro su un progetto che ha già la configurazione Proprietà corretta

  2. Seleziona "TortoiseSVN > Proprietà" (dal menu contestuale del passaggio 1)

  3. Evidenzia tutte le proprietà desiderate

  4. Fai clic su "Esporta"

  5. Assegna un nome al file in base alla proprietà e inseriscilo in una directory facilmente accessibile (io ho inserito il mio con i file hook)

save properties dialogue

  1. Fare clic con il tasto destro sulla directory principale del progetto estratto per cui sono necessarie le proprietà impostate.

  2. Fai clic su "Importa"

  3. Seleziona il file che hai esportato nel passaggio 4 sopra

  4. Fare clic su Apri

Perché non puoi semplicemente installare un server Subversion?Se scarichi Server VisualSVN, che è gratuito, ottieni un server http per il tuo codice sorgente e puoi quindi utilizzare gli script FogBugz per integrare i due.

Il motivo per cui lo chiedo è perché tutti gli script e la documentazione finora presuppongono che tu abbia il server, gli script lato client sono troppo nuovi perché FogBugz abbia modelli per loro, quindi sei praticamente lasciato ai tuoi dispositivi.

Il problema è che FogBugz si collegherà a una pagina web e file:///etc non è una pagina web.Per ottenere l'integrazione in due modi, è necessario un server Web per il repository di subversion.Configura Apache o qualcos'altro che possa ospitare queste cose nel modo corretto.

Non sono sicuro di seguirti.Hai i repository sulla rete o sul tuo disco C:\?Secondo due dei tuoi post, li hai entrambi, o nessuno dei due, o uno dei due, o...

Non è possibile fare in modo che VisualSVN o Apache servano in modo sicuro i repository da una condivisione di rete.Dato che inizialmente avevi detto di avere i repository sul tuo disco C:\, è per questo che ricevi consigli.Se hai una configurazione diversa, devi comunicarcelo.

Se hai i repository sul tuo disco rigido locale, installerei VisualSVN o lo integrerei in Apache.VisualSVN può funzionare bene insieme ad Apache, quindi se segui questa strada devi solo installarlo.I tuoi repository esistenti possono anche essere semplicemente copiati nella directory root del repository di VisualSVN e sei pronto e funzionante.

Non sono sicuro del motivo per cui quel grosso post qui sia etichettato come incompleto, poiché descrive in dettaglio i passaggi necessari per impostare uno script di hook per informare FogBugz sulle nuove revisioni collegate ai casi, che dovrebbero essere ciò che incompleto il messaggio dice che non va bene.Non funziona?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top