# CVS: Revisionsnummer wie bei Subversion



## tuxedo (21. Mrz 2006)

Hi,
Subversion generiert für das ganze Repository eine Revisionsnummer, eine Art Timestamp für das ganze Projekt. 

Ich benutze aber noch CVS und möchte auch dabei bleiben. Allerdings gefällt mir das mit der Revisionsnumer für das ganze Projekt in SVN klasse.

Lässt sich sowas in CVS nachbilden? 

Mein Ziel:
Mittels ANT Script in Eclipse die aktuelle Versionsnummer des gesamten Programms in eine Config-File schreiben und dies dann im Programm verwenden.

Kennt ihr von vielen anderen Programmen. Unter Info gibts da immer eine "build" Nummer die den Projektstand eindeutig identifiziert. 
Hab noch keinen richtigen Ansatz wie man sowas mit CVS nachbildet.
Erste naive Idee: Alle Versionsnummer aller Files im Projekt addieren. Sobald sich dann eine Datei ändert ändert sich die Gesamtrevision. Nachteil: Ich glaub das dauert bei großen Projekten ziemlich lange..

Hat sowas schonmal jemand gemacht oder hat nen Tipp für mich ?

Gruß
Alex


----------



## AlArenal (21. Mrz 2006)

Ist keine direkte Antwort auf deine Frage, aber ich würde direkt auf SVN umsteigen. CVS Repositorys kann man in SVN umwandeln/importieren, getestet habe ich das allerdings noch nicht, da ich eh nur mit SVN arbeite.


----------



## tuxedo (21. Mrz 2006)

Jo, hab ich mir auch überlegt, aber da ich nen recht großen Server betreibe mit rund 15..20 Repositorys und SVN bei meinen Tests um einiges langsamer beim commit/update war bleib ich vorerst bei CVS...
Was mir bei SVn auch noch nicht gefällt: Ich hab kein gescheites INterface zum administrieren der vielen User und Gruppen... Auch das anlegen von Hand mach ich nur ungern.

Kannst du mir in der Hinsicht vllt ein Tool/Interface empfehlen ?

Die CVS-Problem-Frage steht noch offen..

- Alex


----------



## kama (21. Mrz 2006)

Hi,



			
				alex0801 hat gesagt.:
			
		

> Jo, hab ich mir auch überlegt, aber da ich nen recht großen Server betreibe mit rund 15..20 Repositorys und SVN bei meinen Tests um einiges langsamer beim commit/update war bleib ich vorerst bei CVS...


Wie getestet? Welches Backend in Subversion gewählt? Welches OS?

Command Line ?



			
				alex0801 hat gesagt.:
			
		

> Was mir bei SVn auch noch nicht gefällt: Ich hab kein gescheites INterface zum administrieren der vielen User und Gruppen... Auch das anlegen von Hand mach ich nur ungern.


Viele User oder viele Gruppen?
Abgesehen davon, kann man in Subversion das Ganze per Apache lösen (LDAP?) etc.




			
				alex0801 hat gesagt.:
			
		

> Mein Ziel:
> Mittels ANT Script in Eclipse die aktuelle Versionsnummer des gesamten Programms in eine Config-File schreiben und dies dann im Programm verwenden.


Die Versionsnummer für ein CVS Projekt ist ein Tag in CVS und nichts anderes. Das kann man dann in einem Ant Script entsprechend verarbeiten und/oder per CruiseControl automatisieren

MfG
Karl Heinz Marbaise


----------



## tuxedo (21. Mrz 2006)

kama hat gesagt.:
			
		

> Hi,
> 
> Wie getestet? Welches Backend in Subversion gewählt? Welches OS?
> 
> ...



Hi,

zu 1)
SVN via Apache WebDAV, wie man es eben häufig im Netz vorfindet.
OS: Debian Sarge 3.1


zu 2) 
War das ne Frage ode rne Feststellung? Ja, ich hab pro Repository ein bis zwei Gruppen (lesen+schreiben & nur lesen) und aktuell etwa 20 Benutzer die in solche Gruppen eingeteilt sind. Apache selbst stellt nur den Webserver dar. Die Password-Files muss ich aktuell noch per Commandozeile anlegen. 
Was ich für das SVN Management wünschenswert fände:
Ein Frontend (web, consolen-anwendung,...) mit dem man "bequem" neue Repositorys anlegen kann, Benutzer verwalten und verschieden projekten zuteilen kann.
Aktuell sieht's so auss dass ich in der webdav-config für svn von apache Einträge hinzufügen muss, Passwort Dateien anlegen und Passwörter per Console generieren muss. 

Dass ein Tag eine Versionsnummer darstellt weiß ich, betrifft jedoch nicht meine Frage. Ich will ja nicht jedes Commit taggen müssen nur um eine Versionsnummer für das gesmate Projekt zu erhalten.

Wär schön wenn wir zurück zu Thema kommen könnten. 
Ein "Ja, da gibts ein 'work-around', du könntest mal <hier> nachschauen" oder ein "Nein, da gibts nix was auch für große Projekte gut läuft" würde mir reichen.

- Alex


----------



## kama (23. Mrz 2006)

Hi,


			
				alex0801 hat gesagt.:
			
		

> kama hat gesagt.:
> 
> 
> 
> ...


Welches Backend? Berkeley DB oder FSF ?
BerkeleyDB ist schon mal ein wenig langsam, da hilft dann die Nutzung von FSF...seit 1.2.0 default ...




			
				alex0801 hat gesagt.:
			
		

> zu 2)
> War das ne Frage ode rne Feststellung? Ja, ich hab pro Repository ein bis zwei Gruppen (lesen+schreiben & nur lesen) und aktuell etwa 20 Benutzer die in solche Gruppen eingeteilt sind. Apache selbst stellt nur den Webserver dar. Die Password-Files muss ich aktuell noch per Commandozeile anlegen.
> Was ich für das SVN Management wünschenswert fände:
> Ein Frontend (web, consolen-anwendung,...) mit dem man "bequem" neue Repositorys anlegen kann, Benutzer verwalten und verschieden projekten zuteilen kann.
> Aktuell sieht's so auss dass ich in der webdav-config für svn von apache Einträge hinzufügen muss, Passwort Dateien anlegen und Passwörter per Console generieren muss.


Stand-Alone fehlt mir so was auch nocht. Ich baue mir gerade was in der Art...

Wenn Du was haben möchtest, was dir das und einiges mehr bietet, dann wäre zu überlegen, ob Du so was wie GForge einsetzen möchtest? Das bietet genau sowas. Anlegen von Projekten, Repositories, Nutzern und Verwaltung. Zuordnung zu Projekten etc. Weiterhin auch die Möglichkeit noch ein Wiki zu nutzen, Foren etc.




			
				alex0801 hat gesagt.:
			
		

> Dass ein Tag eine Versionsnummer darstellt weiß ich, betrifft jedoch nicht meine Frage. Ich will ja nicht jedes Commit taggen müssen nur um eine Versionsnummer für das gesmate Projekt zu erhalten.


Wenn Du einen "Versionsnummer" für das gesamte Projekt haben willst ist in CVS nun mal der Weg per Tag der einzige der möglich ist!
In Subversion bekommt man den automatisch (eben die Revisionnummer). 



			
				alex0801 hat gesagt.:
			
		

> Wär schön wenn wir zurück zu Thema kommen könnten.
> Ein "Ja, da gibts ein 'work-around', du könntest mal <hier> nachschauen" oder ein "Nein, da gibts nix was auch für große Projekte gut läuft" würde mir reichen.
> - Alex


Um Dir genaue Infos zu liefern, muss ich bestimmte Dinge wissen. Ansonsten ist das ein Stochern im Nebel ;-)

MfG
Karl Heinz


----------



## tuxedo (23. Mrz 2006)

kama hat gesagt.:
			
		

> Hi,
> 
> 
> 
> ...



Steh ich aufm Schlauch oder wozu braucht Apache mit dem WevDAV für SVN eine DB? *überfragtbin*

Das mit GForge ist ne gute Idee. Mein Prof ist auch gerade dabei ein Server damit aufzusetzen.. Ich schau's mir mal an.

Alles taggen ist etwas doof finde ich. 

Meine erste und bisher einzigste Workaround-Idee wäre folgende gewesen:
Alle Versionsnummern aller Datein zusammenrechnen und das als Revision benutzen.. So hat man dann auch eine eindeutige Nummer für das ganze Projekt. Aber ich bin noch nicht drauf gekommen wie man das möglichst performant macht.

Denke, wenn GForge das hält was es verspricht dann werd ich das in Zukunft einsetzen. Aber erstmal anschauen.
Danke für die Hilfe.

- Alex


----------



## kama (23. Mrz 2006)

Hi,


> Steh ich aufm Schlauch oder wozu braucht Apache mit dem WevDAV für SVN eine DB? *überfragtbin*


Wie meinst Du denn, dass Subversion die Versionen verwaltet? Ok. genau genommen ist das von der Nutzerseite her 
eine DB. Berkeley DB wird als Backend verwendet bzw. kann als solches verwendet werden.
Per WebDAV kommen die Daten und werden an das mod_svn Modul weitergeleitet und dann in eine "DB" gespeichert bzw. transaktionsgesichert abgelegt. 

Schau Dir mal das Bild genau an.

Dann wird das warscheinlich klarer.


Zum Thema GForge kann ich nur sagen, dass ich gerade eine Vollständige Installation mit Migration (cvs => svn) für ca. 150 Entwickler und ca. 70 (bis dato) Projekt hinter mir habe.

Also ist GForge durchaus eine alternative...

Apropos wg. dem Taggen:

Wie errechnest Du denn die Versionsnummer? Was ist mit Branches? usw. 
Meiner Erfahrung nach (ca. 13 Jahre mit CVS) ist ein Tag das einzig Sinnvolle und vor allem eindeutige.
Abgesehen davon brauchst Du doch nicht für jede Version einen Tag sondern nur für eine Release, die dann z.B. in den Test etc. kommt. Ansonsten entwickelt man am Besten auf einem Branch etc. 

MfG
Karl Heinz Marbaise


----------



## tuxedo (24. Mrz 2006)

Na gut, hab mir Gforge auch mal angesehen. Ist ein recht mächtiges Werkzeug. 
Aber das kann ich meinem Root neben VHCS2 nicht auch noch antun.  

Wie SVN im Hintergrund funktioniert hab ich noch nicht nachgeschaut. Nur war es jedenfalls bis jetzt bei SVN wenn ich mittels http://url mit eclipse drauf zugegriffen hab recht langsam. Nicht nur bei meiner Testinstallation sondern auch bei diversen anderen Projekten. Vielleicht ist das aber subjektiv wie objektiv... 

Ich denke für mein System werd ich am einfachsten ein Admin-Werkzeug mit PHP schreiben. So viele Projekte und User werdens nichtmehr dass sich der Aufwand der GForge-Instalation in mein bestehendes VHCS lohnt.

Gruß
Alex


----------

