Versionsverwaltungssystem gesucht
-
Wir suchen ein neues Versionverwaltungssystem, weil wir mit unserem PVCS Vers. 6.5 schon seit längerer Zeit nicht glücklich werden.
Wenn man so die Feature-Listen durchgeht, wird einem auch nicht wirklich klarer, ob das jetzt das ist, was man braucht. Deshalb wollt ich Euch mal fragen, was bei Euch in der Arbeit verwendet wird, wie zufrieden Ihr damit seid, und ob das ganze unseren Anforderungen genügen würde.
Insgesamt möchten wir ein System, in dem nicht so sehr die einzelnen Dateien im Vordergrund stehen, sondern ein Projekt, d.h. die Dateien und wie sie zusammengehören.
Folgendes sind unsere Anforderungen:
1. Wir wollen dem System nich jede einzelne Datei sagen, die es verwalten soll. Ich möchte Ihm ein Verzeichnis sagen, und dann soll es dafür sorgen, dass alle Dateien darin (ggf. mit Wildcards beschrieben, ggf. rekursiv über Unterverzeichnisse) eingecheckt und Versioniert sind. Auch Dateien, die zu dem Projekt neu hinzugekommen sind, solleh automatisch erfasst werden.
Es soll nicht sein, dass man, wenn man eine neue cpp-Datei erstellt, diese nicht versioniert und gesichert wird, nur weil man vergisst, dem Versionierungssystem diese Datei bekannt zu machen. Wenn man dem System jede bei Java-Web-Projekten mit 100en von kleinen Dateien ist es unmöglich jede Datei einzeln anzugeben und händisch die Verzeichnisstruktur nachzubauen.
2. Man soll Labels über mehrer Projekte verteilen können. Es muss Referenzen von einem Projekt auf ein anderes Projekt geben, wenn ersteres zweiteres benötigt. Ein- und Auschecken muss für diese Referenzen automatisch erfolgen, wenn man etwas an einem Projekt macht.
Wir haben z.B. zwei Applikationen A1 und A2, die eine Bibliothek B - in verschiedenen Versionen verwenden. Wir liefern A1 aus und vergeben einen Label ('A1 für Kunde xyz, Vers. 1.0) für das Projekt A1 und den Stand der Bibliothek B. An B wird weitergearbeitet, an A2 wird weitergearbeitet und ein paar Monate später soll die damals ausgelieferte Version von A1, mitsamt dem Korrekten Stand von B wieder ausgecheckt werden. Und zwar so, dass ich nur nur sage, dass A1 Stand 'A1 für Kunde xyz, Vers. 1.0' geholt werden soll. Dass da das entsprechende B dazugehört, weiß das System aus einmaliger Konfiguration. Weder beim ein noch beim auschecken muss ich an Bibliothek B denken.
3. Das Ding muss komplett scriptsteuerbar sein. D.h. normalerweise klick ich abends nur auf die 'checke_projekt_xyz_ein.bat' klicken und es werden alle geänderten Dateien versioniert und gesichert
4. Das Ding soll eine anständiges, zügig zu bedienendes GUI haben. Je schlechter und langsamer die Bedienung ist, desto schlampiger werden die Entwickler bei der Handhabung des Werkzeugs.
Wichtigkeit von 1 (wichtig) bis 4 (auch wichtig, aber vielleicht ein bisschen weniger)
-
Du mischt hier einiges Durcheinander. Ein Kriterium für ein Versionsverwaltungssystem ist nicht, dass es ein GUI hat, sondern dass es funktioniert. Dann kann es dazu Kommandozeilen- und GUI-Clients geben. Nimm Subversion. Subversion hat Power. Ein Client mit gutem GUI ist TortoiseSVN.
-
Ich wollte nur sagen, dass es dafür auch ne gute GUI geben soll. Ob die nun als Client direkt zum Versionsverwaltungssystem gehört (Wie bei MS-Source-Safe) oder obs nur ne Shell für einen Kommandozeilen-Client ist (Subversion) ist egal.
Wichtig ist, dass die Entwickler nicht keinen Bock haben das Teil zu verwenden, weil jeder Klick 20 sec dauert (wie z.T. in unserer PVCS-Version).> Nimm Subversion
Hat das i.V.m. tortoiseSVN die angeprochenen Funktionalitäten (v.a. das 'bitte immer alle cpp-Dateien in d:\promjekte\tollesProjekte\src einchecken')?
Was uns an Subversion nicht gefällt, ist, dass es die Dateien nicht zur Bearbeitung sperrt, wenn jemand anderes sie ausgecheckt hat.
-
kartoffelsack schrieb:
Was uns an Subversion nicht gefällt, ist, dass es die Dateien nicht zur Bearbeitung sperrt, wenn jemand anderes sie ausgecheckt hat.
Hä?
Das ist doch gerade eines der tollsten Features an modernen VCS. (Naja, "modern" stimmt vielleicht nicht, das gibt es seit CVS.)
Mehrere Personen können gleichzeitig eine Datei bearbeiten, und solange nicht durchs bearbeiten irgendwelche Konflikte entstehen (die gleiche Stelle in der Datei wird mehrfach bearbeitet) löst Subversion das auf. Wenn Konflikte entstehen, dann braucht es Hilfe, geht aber auch nicht viel unbequemer.
-
Auch Dateien, die zu dem Projekt neu hinzugekommen sind, solleh automatisch erfasst werden.
Automatisches Commit für ein Verzeichnis ist nicht dabei (Edit: Überhaupt gilt es aktiv Dateien einzuchecken, das System schaut nicht nach *hey das directory fehlt mir noch*). Aber das ist auch nicht Aufgabe eines CVS. Viele (alle) Clients können ganze Verzeichnisse committen, da sind dann auch die neuen Dateien mit an Board.
-> TortoiseSVN ist ein Client der sich in den Windows-Explorer integriert, sehr pratkisch.
-> Subclipse ist ein Plugin für Eclipse und funktioniert dort wie das CVS-Tool.
-> AnkhSVN wär zB ein Plugin für MSVCAlso Sorgen um einen praktischen Client würd ich mir bei SVN keine machen.
Wir haben z.B. zwei Applikationen A1 und A2, die eine Bibliothek B - in verschiedenen Versionen verwenden. Wir liefern A1 aus und vergeben einen Label...
Klingt nach Tags bzw. Branches. Such mal im Internet das "SVN RedBook", ein OpenBook das SVN durch und durch detailliert beschreibt.
Was uns an Subversion nicht gefällt, ist, dass es die Dateien nicht zur Bearbeitung sperrt, wenn jemand anderes sie ausgecheckt hat.
Das steht bei denen auf der Feature-Liste ;). Ist aber wie gesagt kein Problem, nicht denken, dass sich die Beiden dann anrufen müssen -> arbeiten sie an verschiedenen Stellen in der Datei erkennt SVN-Merge das automatisch und erledit das Problem von selbst. Ein kurzes Telefonat ist nur bei Arbeiten an der selben Stelle nötig - kommt aber bei guter Aufgabenverteilung sowieso nie vor.
Mehr (Alles) über Subversion findest du hier in diesem OpenBook http://svnbook.red-bean.com/ - sehr empfehlenswert
MfG SideWinder
-
Hallo,
für Windows bzw. Visual Studio-Leute soll SourceGear Vault sehr gut sein. Viel kann ich dazu aber nicht sagen, da ich Vault bisher nur kurz während eines Praktikums benutzt habe. Da kam es mir zumindest nie in die Quere und das Share-Feature ist mir positiv aufgefallen.
-
Es gibt jetzt übrigens bei Subversion die Möglichkeit, Dateien zu locken. Das sollte man jedoch für Quellcode-Dateien nicht machen (wie gesagt: it's a feature). Es gibt jedoch auch Dateitypen, die man nicht gut mergen kann, z.B. Bilder. Diese kann man dann locken.
-
CVSNT + Schildkröte + WinMerge = zufreiden
-
Also Subversion ist der inoffizielle Nachfolger von CVS, kein Grund mehr CVS zu benützen. Vor allem wenn man sich die Vorteile von SVN gegenüber CVS ansieht.
MfG SideWinder
-
kartoffelsack schrieb:
Was uns an Subversion nicht gefällt, ist, dass es die Dateien nicht zur Bearbeitung sperrt, wenn jemand anderes sie ausgecheckt hat.Hä?
Das ist doch gerade eines der tollsten Features an modernen VCS.Naja, kommt auf die Dateien an ...
AberEs gibt jetzt übrigens bei Subversion die Möglichkeit, Dateien zu locken.
Aus Anleitung für TortoiseSVN (sorry, find jetzt den Link nicht mehr)
Neue Datei dem Projekt hinzufügen
Um neue Dateien ins Projekt aufzunehmen, müssen diese über die Funktion Add hinzugefügt
werden.
1. Selektieren Sie die neue(n) Datei(en) und wählen Sie aus dem Kontextmenu <TortoiseSVN>/ <Add>
2. Im erscheinenden Dialog kann noch mal gewählt werden, welche Dateien hinzugefügt werden
sollen. Drücken Sie <OK>, um den Vorgang zu starten.Genau das wolln wir nicht.
Viele (alle) Clients können ganze Verzeichnisse committen, da sind dann auch die neuen Dateien mit an Board.
WELCHE können es. Unser PVCS kanns nicht, bei TortoiseSVN kann ichs aus der Doku auch nicht ersehen. Könntet Ihr mal Clients posten, von denen Ihr persönlich wisst, dass es funzt. Von denen können wir dann mal ein paar testweise installieren
-
Ich arbeite hier mit MKS... ist ein komplettes system mit einem sehr starken Client.
Was allerdings gewissen Anforderungen betrifft, so sind dies lachhafte Ausflüchte die ich nur zu gut kenne. (War schon öfters an der Einführung von Verwaltungswerkzeugen beteiligt)
Kartoffelsack: Du solltest dir mal Gedanken darüber machen, wozu ein solches Werkzeug überhaupt gedacht ist.
Die Ausreden wie "Das sind zuviele Klicks", "Das System soll selber merken..." zeugen von Unverständnis und dem typischen Verhalten eines "Chaotischen" Entwicklers, der sich auf den Standpunkt stellt "Solange es mich nicht tangiert, soll es machen was es will".
Richtig wäre aber die Arbeitstechnik anzupassen. - Kein unkoordiniertes Hacken mehr, keine wilden "Au ich muss noch schnell ein Modul..."-Module mehr.
-
Ahja, noch was zu deinen Anforderungen aus MKS Sicht:
1. Wir wollen dem System nich jede einzelne Datei sagen, die es verwalten soll. Ich möchte Ihm ein Verzeichnis sagen, und dann soll es dafür sorgen, dass alle Dateien darin (ggf. mit Wildcards beschrieben, ggf. rekursiv über Unterverzeichnisse) eingecheckt und Versioniert sind.
Das klappt soweit. Allerdings müssen neue Dateien explizit hinzugefügt werden. Was aber nicht weiter Schlecht ist. Massenhaft Dateien müssen eh nur beim Projekt-Init eingecheckt werden.
Es soll nicht sein, dass man, wenn man eine neue cpp-Datei erstellt, diese nicht versioniert und gesichert wird, nur weil man vergisst, dem Versionierungssystem diese Datei bekannt zu machen.
Das ist ein Fehler im Entwicklungsprozess und nicht des Tools. Es darf nicht vergessen werden! Es ist schlicht ein Umdenken nötig: Wenn ich ein neues Modul erstelle, wird es bekannt gemacht. Fertig.
Wenn man dem System jede bei Java-Web-Projekten mit 100en von kleinen Dateien ist es unmöglich jede Datei einzeln anzugeben und händisch die Verzeichnisstruktur nachzubauen.
Versteh ich nicht. Das bezieht sich auf den Projekt-Setup oder?
2. Man soll Labels über mehrer Projekte verteilen können. Es muss Referenzen von einem Projekt auf ein anderes Projekt geben, wenn ersteres zweiteres benötigt. Ein- und Auschecken muss für diese Referenzen automatisch erfolgen, wenn man etwas an einem Projekt macht.[...]
Das ist meines Erachtens eine Frage der Projektorganisation. Bei MKS hier, kann ich "Unterprojekte" in mein Projekt einklinken, welche ich dann auf einem bestimmten Stand festnageln kann, oder aber auch einfach immer die aktuellste Version mitnehmen kann.
3. Das Ding muss komplett scriptsteuerbar sein. D.h. normalerweise klick ich abends nur auf die 'checke_projekt_xyz_ein.bat' klicken und es werden alle geänderten Dateien versioniert und gesichert
Und morgens dann auch noch "checke_projekt_xyz_aus.bat" als kleiner LInk, damit man die Dateien nicht auszuchecken braucht?
Und dann vielleicht noch ein Häckchen wo man verhindern kann, dass die Dateiversion hochgezählt wird?
Ein weiteres Indiz dafür, das nicht mit dem System gearbeitet wird, sondern einfach nur aus unverständnis alles gemacht wird, damit das System nicht schreit, aber bloss nichts an den gwohnheiten ändern.
4. Das Ding soll eine anständiges, zügig zu bedienendes GUI haben. Je schlechter und langsamer die Bedienung ist, desto schlampiger werden die Entwickler bei der Handhabung des Werkzeugs.
...kanns noch schlampiger werden? SCNR (o;
Versteh ich natürlich das Argument. Denke das ist bei MKS grösstenteils erfüllt. Man hätte auch die Möglichkeit über die Kommandozeile zu gehen um es in andere Tools einzubinden...
-
Hi
Wir arbeiten hier auch seit kurtzem ( so knapp ein Jahr ) mit MKS. Sehr leistungsstarteks Tool, was auch so seine Macken hat. die Integrationen funktionieren bei uns nicht hundertprozentig. ( die MKS Symbole fehlen ) Wass aber auch Entwicklungsumgebeung liegen könnte.
Was ich sehr brauchbar ist, das man Subprojekte oder generell Projekte in anderen Projekten wieder als SubProjekt einklinken kann. Gerade wenn man z.B. in java mit vielen externen libs arbeitet. Alle unter Common reinstellen. Entsprechend der Versionsnummern ein Label setzen und dann im Projekt reinziehen. Wenns was neueres git kann man dan nachziehen, muss aber nicht.
Ich weis nur nicht in wie weit sowas über SVN nachbildbar ist. mit CheapCopyauf einen CheapCopy aus dem Versions zweig?
Was aber auch brauchbar ist ist der IM. damit kann man dann gleich seine ganzen Bugs und ChangeRequests usw gleich mitverwalten.
nur nicht ganz billig das Tool
gruss
-
Termite schrieb:
nur nicht ganz billig das Tool
In der Tat nicht (o;
Naja das mit den Integrationen kann ich schlecht beurteilen. Arbeite hier mit IAR-Produkten und die haben leider etwas Probleme...
-
1. Wir wollen dem System nich jede einzelne Datei sagen, die es verwalten soll. Ich möchte Ihm ein Verzeichnis sagen, und dann soll es dafür sorgen, dass alle Dateien darin (ggf. mit Wildcards beschrieben, ggf. rekursiv über Unterverzeichnisse) eingecheckt und Versioniert sind.
Das klappt soweit. Allerdings müssen neue Dateien explizit hinzugefügt werden. Was aber nicht weiter Schlecht ist. Massenhaft Dateien müssen eh nur beim Projekt-Init eingecheckt werden.Zitat:
Es soll nicht sein, dass man, wenn man eine neue cpp-Datei erstellt, diese nicht versioniert und gesichert wird, nur weil man vergisst, dem Versionierungssystem diese Datei bekannt zu machen.
Das ist ein Fehler im Entwicklungsprozess und nicht des Tools. Es darf nicht vergessen werden! Es ist schlicht ein Umdenken nötig: Wenn ich ein neues Modul erstelle, wird es bekannt gemacht. Fertig.Sorry, die Argumentation versteh ich nicht. Ich mach eine neue Klasse in einem neuen Cpp/h-File. Diese Klasse ist noch nicht mal neu, weil ich vorher nicht anständig spezifiziert und meine Klassen identifiziert habe, sondern weil ich von mir aus feststelle, dass eine Klasse zu fett designed ist und ichs gern aufteilen würde. Nun vergess ichs im Eifer des Gefechts, selbige dem Projekt hinzuzufügen. Keine Warnung kein nichts, 5 Monate später will ich das Projekt wiederherstellen -> upsala.
Ich mein, was spricht dagegen, wenn einen das System auf sowas aufmerksam macht: 'Achtung neue Datei blabla. Soll sie hinzugefügt werden?'. Es könnte mich nach einem Eincheck-Kommentar fragen etc. und es ist sichergestellt, dass alles Konsistent ist. Ich mein, klar, wenn ich keinen Fehler mache und immer sauber Arbeite brauch ichs nicht. Aber ich bin ein Mensch. Der Compiler sagt mir auch Fehler. Was hab ich davon, wenn ich mich einfach nochmal zu der Datei durchklicken muss um sie einzeln hinzuzufügen? Computer sind doch dazu da, sowas zu automatisieren.
Zitat:
3. Das Ding muss komplett scriptsteuerbar sein. D.h. normalerweise klick ich abends nur auf die 'checke_projekt_xyz_ein.bat' klicken und es werden alle geänderten Dateien versioniert und gesichert
Und morgens dann auch noch "checke_projekt_xyz_aus.bat" als kleiner LInk, damit man die Dateien nicht auszuchecken braucht?Ich weiß ja nicht, wie geordnet das alles bei Euch läuft, aber bei mir kommt es schon mal vor, dass ich an mehreren Dateien 'gleichzeitig' ändere. Wenn ich was ändern muss, check ich die Datei aus und arbeite fröhlich weiter. Und wenn ich fertig bin, spätestens, wenn ich heim geh, möchte ich sicher gehen, dass ich nicht eine einzelne Datei vergesse. Kann mich ja bei jeder Datei nach Kommentar etc. fragen. Aber ich würde halt nichts übersehen. Mir passiert sowas. Euch nicht?
-
Und wenn ich fertig bin, spätestens, wenn ich heim geh, möchte ich sicher gehen, dass ich nicht eine einzelne Datei vergesse.
Ich kenne - in Ermangelung einer funktionierenden Windows-Installation - tortoisesvn nicht, aber das kann höchstwahrscheinlich jeder SVN-Client in irgendeiner Form.
Normalerweise verwendet man dafür einfach "svn status" oä, insofern bestimmt kein Problem.
-
Die Ausgabe von svn status ist auch schön parsbar, so daß es sicher kein Problem ist ein Programm zu schreiben, daß dann vorschlägt nicht versionierte cpps und Header noch hinzuzufügen.
Aber wenn man mit TortoiseSVN arbeitet und das in den Explorer integriert sieht man das eigentlich auch schon an den Icons, ob was versioniert ist oder nicht.
-
Ich versteh die Aufregung nicht, wenn ich mein gesamtes Source-Unterverzeichnis für das ich zuständig bin committe zeigt er mir die noch nicht versionierten Dateien schön aufgelistet an. Ich drücke "Select All" und fertig. Das bringt ja selbst der faulste Entwickler noch hin *g*
MfG SideWinder
-
Die Aufregung ist auch nicht zu verstehen. Der Threadersteller sollte es IMHO einfach mal mit TortoiseSVN versuchen. Ich habe doch schon gesagt, dass es Power hat.
-
kartoffelsack schrieb:
Sorry, die Argumentation versteh ich nicht. Ich mach eine neue Klasse in einem neuen Cpp/h-File. Diese Klasse ist noch nicht mal neu, weil ich vorher nicht anständig spezifiziert und meine Klassen identifiziert habe, sondern weil ich von mir aus feststelle, dass eine Klasse zu fett designed ist und ichs gern aufteilen würde. Nun vergess ichs im Eifer des Gefechts, selbige dem Projekt hinzuzufügen.
Bei einem korrekten Entwicklungsprozess und konsequenten verwenden und der damit einhergehenden Akzeptanz des Werkzeugs würde dir das nicht passieren. Denn du würdest die Datei sofort auch dem Versionssystem bekannt machen.
kartoffelsack schrieb:
Keine Warnung kein nichts, 5 Monate später will ich das Projekt wiederherstellen -> upsala.
Um genau sowas zu vermeiden kann man auch vor dem erstellen einer finalen Version, diese noch testen, indem man eine neue Sandbox erstellt und testet, ob der Build noch funktioniert.
kartoffelsack schrieb:
Ich mein, was spricht dagegen, wenn einen das System auf sowas aufmerksam macht: 'Achtung neue Datei blabla. Soll sie hinzugefügt werden?'. Es könnte mich nach einem Eincheck-Kommentar fragen etc. und es ist sichergestellt, dass alles Konsistent ist.
Ich sage nicht, die Idee generell sei schlecht. Aber der, zusammen mit anderen Wünschen, gibt mir, das Gefühl, bei euch ist das Versionsverwaltungssystem irgendwie noch als Fremdkörper betrachtet.
Bewusstes Arbeiten mit einem solchen Werkzeug hilft der strukturierten Bearbeitung von Projekten.
Ich weiß ja nicht, wie geordnet das alles bei Euch läuft, aber bei mir kommt es schon mal vor, dass ich an mehreren Dateien 'gleichzeitig' ändere. Wenn ich was ändern muss, check ich die Datei aus und arbeite fröhlich weiter. Und wenn ich fertig bin, spätestens, wenn ich heim geh, möchte ich sicher gehen, dass ich nicht eine einzelne Datei vergesse.
Werden bei dir deine LOcks (Checkouts) nicht angezeigt? Ich kann die als liste haben, wo alle Änderungen angezeigt werden. Das zeigt mir dann auch immer, wie sauber ich gearbeitet habe. Die liste schnell markieren, Checkin, und selbstverständlich den Revisionskommentar nicht vergessen...
Mir passiert sowas. Euch nicht?
Nein.