Vă mulțumim pentru susținere

Cum sincronizez numărul de revizie SVN cu site-ul meu ASP.NET?

Stack Overflow are un număr de versiune subversiune în partea de jos:

Revizia svn: 679

Vreau să utilizez o astfel de versiune automată cu codul meu .NET Web / Application , Windows Forms, proiecte / soluții WPD.

Cum implementez acest lucru?

0
adăugat editat
@Balloon Dacă utilizați TortoiseSVN, puteți utiliza SubWCRev program. Se întreabă o copie de lucru și vă spune doar cel mai mare număr de revizie. Desigur, aceasta pare a fi o abordare pe partea clientului la o problemă a serverului, dar, din moment ce este un program de linie de comandă, ar trebui să puteți captura rezultatele sale pentru utilizare destul de ușor.
adăugat autor nickf
Dacă nu utilizați TortoiseSVN pentru SubWCRev cum am spus aici , puteți utiliza svnversion care face același lucru.
adăugat autor nickf

7 răspunsuri

Puteți face acest lucru adăugând următoarele oriunde în codul dvs.

$Id:$

De exemplu, @Jeff a făcut:

svn revision: $Id:$

și când a fost bifată în server, a înlocuit $ Id: $ cu numărul actual de revizie. De asemenea, am găsit această referință .

There is also $Date:$, $Rev:$, $Revision:$

0
adăugat
Trebuie să vă asigurați că fișierele au setul atributului svn: keywords, altfel $ id $ etc. nu sunt înlocuite automat. Consultați această pagină. (Derulați în jos la svn: cuvinte cheie)
adăugat autor Michael Stum
Tocmai am încercat acest lucru folosind $ Rev $ și funcționează - într-o oarecare măsură. Problema este că pare să actualizeze doar cuvântul cheie atunci când fișierul în care apare este schimbat. Aceasta înseamnă că, dacă se fac modificări ale proiectului care nu afectează fișierul cu $ Rev $ în el (în cazul meu, pagina principală ASP.NET), proiectul va avea o revizuire mai mare decât este afișată utilizatorului . Are cineva vreo idee despre asta? Există o modalitate de a obține SVN pentru mereu actualizarea cuvintelor cheie din fișier?
adăugat autor Chris Roberts
Nu va introduce doar numărul de revizie al ultimei modificări în fișierul respectiv? Am încercat să instalez un depozit cu două fișiere și l-am schimbat și am încercat atât export, cât și verificare, iar celălalt fișier a rămas la 1 în ambele cazuri.
adăugat autor Lasse Vågsæther Karl
Ai dreptate, trebuie să folosești un mecanism diferit.
adăugat autor Lasse Vågsæther Karl
Folosind VisualSVN și TortoiseSVN, adăugarea lui $ Id: $ tocmai a cauzat afișarea paginii "$ Id: $". Ar putea fi util să notați la ce server / client funcționează acest răspuns.
adăugat autor Travis
De asemenea, trebuie să adăugați fișierului svn: keywords proprietatea Subversiune și asigurați-vă că include valoarea Id . Cu toate acestea, este puțin folos: acest fișier ar putea să nu fi fost modificat.
adăugat autor Álvaro González
lassevk este corect, aceasta se modifică numai când fișierul în sine se schimbă.
adăugat autor Bruno Lopes

Se pare că Jeff utilizează CruiseControl.NET bazat pe unii frunze prin intermediul transcrierilor podcast. Aceasta pare să aibă capacități automate de implementare de la controlul sursei până la producție. Ar putea fi locul unde se întâmplă inserția?

0
adăugat
link-ul este rupt @saint_groceon
adăugat autor Cacho Santa
Dacă nu utilizați CruiseControl.Net, atunci verificați răspunsul meu (plug-in nerușinat!) - stackoverflow.com/questions/163/… o)
adăugat autor Andrew

$rev and others like it are revisions for the individual files, so they won't change unless the file changes. The number on the webpage is (most likely, I'm assuming here) the svn revision number for the whole project. That is different than the file revisions, which others have been pointing to.

În acest caz, presupun că CCNET trage numărul de revizuire al proiectului și rescriind o parte a paginii web cu numărul respectiv. Orice soluție CI ar trebui să poată face acest lucru, așezându-mă singur cu CCNET și Teamcity (deși nu pagini web, ci versiuni automate ale versiunilor de implementare / asamblare).

Pentru a face acest lucru, utilizați o soluție CI care o acceptă sau utilizați procesul de construire (MSbuild / Nant) pentru a stoca acea versiune și ao scrie în fișiere înainte de ao "implementa".

0
adăugat

To add to @BradWilson's answer: "You could also get your source control provider to provide the source revision number if you want"

Pentru a conecta Subversion și MSBuild: Proiectul MSBuild Community Tasks

0
adăugat

@Balon Dacă utilizați TortoiseSVN, puteți utiliza programul SubWCRev . Se întreabă o copie de lucru și vă spune doar cel mai mare număr de revizie. Desigur, aceasta pare a fi o abordare pe partea clientului la o problemă a serverului, dar, din moment ce este un program de linie de comandă, ar trebui să puteți captura rezultatele sale pentru utilizare destul de ușor.

0
adăugat

Noi facem acest lucru cu xUnit.net pentru construcțiile noastre automate. Noi folosim CruiseControl.net (și încercăm TeamCity). Sarcina MSBuild pe care o executam pentru integrarea continuă schimbă automat numărul de construcție pentru noi, astfel încât fișierul ZIP care rezultă din construire să conțină un set corect de versiuni DLL și EXE.

Our MSBuild file contains a UsingTask reference for a DLL which does regular expression replacements: (you're welcome to use this DLL, as it's covered by the MS-PL license as well)

  

Apoi, extragem numărul de construire, care este furnizat automat de sistemul CI. De asemenea, ați putea obține furnizorului dvs. de control al sursei să furnizeze numărul de revizuire a sursei dacă doriți, dar am constatat că construirea # în sistemul CI a fost mai utilă, deoarece nu numai că poate vedea rezultatele integrării prin numărul de construcție CI, care oferă de asemenea conectați-vă la seturile de modificări care au fost incluse în construire.

 

 
   $(BUILD_NUMBER)
 
 
   $(ccnetlabel)
 
 
   0
 

(Încercăm BUILD_NUMBER, care este de la TeamCity, apoi ccnetlabel, care este din CC.net, iar dacă nici unul nu este prezent, ne implicit la 0, astfel încât să putem testa scriptul de construire automată.)

Apoi, avem o sarcină care stabilește numărul de construire într-un fișier GlobalAssemblyInfo.cs pe care îl legăm în toate proiectele noastre:

 
   
   
 

Acesta găsește atributul AssemblyVersion și înlocuiește numărul versiunii a.b.c.d cu a.b.c.BuildNumber. Vom lăsa de obicei sursa verificată în copac cu primele trei părți ale numărului constructorului fixat, iar al patrulea la zero (de exemplu, astăzi este 1.0.2.0).

În procesul de construire, asigurați-vă că sarcina SetVersionNumber precede sarcina dvs. de a construi. În final, folosim sarcina noastră Zip pentru a obține rezultate zilnice, astfel încât să avem o istorie a binarelor pentru fiecare construcție automatizată.

0
adăugat

Dacă utilizați ASV.Net MVC (cum face StackOverflow), am scris un ușor de urmat în trei pași de ghidare a modului pentru a obține automat și pentru a afișa cea mai recentă versiune SVN . Ghidul a fost inspirat de a mă gândi la această întrebare! : O)

0
adăugat
link-ul este rupt, sau site-ul este în jos
adăugat autor Cacho Santa
Multumesc @cacho, fix - a fost o eroare de server [sic]; o)
adăugat autor Andrew
Fix! multumesc pentru ca mi-ati dat seama: o)
adăugat autor Andrew
Sună grozav, Link rupt!
adăugat autor Peter C
Aceasta a fost o soluție excelentă pentru a automatiza afișarea unei versiuni bazate pe revizuirile SVN. Un avantaj este că nu necesită un apel către serverul dvs. SVN.
adăugat autor Ben Elder