Come sincronizzare il numero di revisione SVN con il mio sito Web ASP.NET?

Stack Overflow ha un numero di versione di sovversione nella parte inferiore:

revisione svn: 679

Voglio utilizzare questo tipo di controllo automatico con il mio .NET Web Site/Application , Windows Form, progetti / soluzioni WPD.

Come posso implementarlo?

Sembra che Jeff stia utilizzando CruiseControl.NET basandosi su alcuni passaggi nelle trascrizioni dei podcast. Questo sembra avere funzionalità di distribuzione automatizzate dal controllo del codice sorgente alla produzione. Potrebbe essere questo il punto in cui sta avvenendo l’inserimento?

Lo facciamo con xUnit.net per le nostre build automatizzate. Usiamo CruiseControl.net (e stiamo provando TeamCity). L’attività MSBuild che eseguiamo per l’integrazione continua cambia automaticamente il numero di build per noi, quindi il file ZIP di build risultante contiene un set di DLL ed EXE correttamente versione.

Il nostro file MSBuild contiene un riferimento UsingTask per una DLL che sostituisce le espressioni regolari: (sei libero di usare questa DLL, poiché è coperta anche dalla licenza MS-PL)

   

Successivamente, estraiamo il numero di build, che viene fornito automaticamente dal sistema CI. Puoi anche ottenere il tuo provider di controllo del codice sorgente per fornire il numero di revisione del codice sorgente, ma abbiamo trovato che il numero di build nel sistema CI era più utile, perché non solo è ansible visualizzare i risultati dell’integrazione tramite il numero di build dell’elemento della configurazione, che fornisce anche un link al changeset (s) che sono stati inclusi nella build.

  

  
     $ (BUILD_NUMBER) 
  
  
     $ (ccnetlabel) 
  
  
     0 
  

(Proviamo BUILD_NUMBER, che proviene da TeamCity, quindi ccnetlabel, che proviene da CC.net e, se nessuno dei due è presente, viene impostato su 0, in modo da poter testare manualmente lo script di build automatico.)

Successivamente, abbiamo un’attività che imposta il numero di build in un file GlobalAssemblyInfo.cs che colleghiamo a tutti i nostri progetti:

  
    
    
  

Questo trova l’attributo AssemblyVersion e sostituisce il numero di versione abcd con abcBuildNumber. Di solito lasciamo la fonte controllata nell’albero con le prime tre parti del numero del costruttore fissate, e il quarto a zero (fe, oggi è 1.0.2.0).

Nel processo di compilazione, assicurarsi che l’attività SetVersionNumber preceda l’attività di compilazione. Alla fine, usiamo la nostra attività Zip per comprimere i risultati della compilazione in modo da avere una cronologia dei binari per ogni build automatizzata.

Puoi farlo aggiungendo quanto segue in qualsiasi parte del tuo codice

 $Id:$ 

Quindi, per esempio @Jeff ha fatto:

 
svn revision: $Id:$

e quando controllato nel server ha sostituito $ Id: $ con il numero di revisione corrente. Ho anche trovato questo riferimento .

C’è anche $ Date: $ , $ Rev: $ , $ Revision: $

Se si utilizza ASP.Net MVC (come fa StackOverflow), ho scritto una guida in 3 passaggi facile da seguire su come ottenere e visualizzare automaticamente l’ultima revisione SVN . La guida è stata ispirata pensando a me stesso su questa stessa domanda! : O)

@Balloon Se si utilizza TortoiseSVN, è ansible utilizzare il programma SubWCRev in pacchetto. Si interroga una copia di lavoro e ti dice solo il numero di revisione più alto. Evidentemente, questo sembra essere un approccio lato client per un problema lato server, ma dal momento che è un bel programma a riga di comando, dovresti essere in grado di catturare il suo output per l’uso abbastanza facilmente.

$rev e altri come se fossero revisioni per i singoli file, quindi non cambieranno a meno che il file non cambi. Il numero sulla pagina web è (molto probabilmente, sto assumendo qui) il numero di revisione svn per l’intero progetto. È diverso dalle revisioni dei file, a cui altri hanno puntato.

In questo caso presumo che CCNET stia tirando il numero di revisione del progetto e riscrivendo una parte della pagina web con quel numero. Qualsiasi soluzione CI dovrebbe essere in grado di farlo, installarlo da solo con CCNET e Teamcity (sebbene non con le pagine Web, ma con il controllo automatico delle versioni di implementazione / assemblaggio).

Per fare ciò, utilizzare una soluzione CI che supporti tale sistema o utilizzare il processo di compilazione (MSbuild / Nant) per memorizzare quella versione e scriverla nei file prima di “distribuirla”.

Per aggiungere alla risposta di @ BradWilson: “Puoi anche ottenere il tuo provider di controllo del codice sorgente per fornire il numero di revisione del codice sorgente, se lo desideri”

Per connettere Subversion e MSBuild: Progetto Attività comunità MSBuild