CVS oder SVN?
-
Siassei schrieb:
Erst bei Änderungsanfragen (merge, commit, ...) muss eine Verbindung zum zentralen Repository bestehen.
Und für alles, was irgendwie mit Versionsgeschichte zu tun hat. Somit braucht man also für "svn log", Blame und Bisect Serververbindungen. Und die entsprechenden Anfragen sind dann auch quälend langsam.
-
Kann ich nur empfehlen: http://chaosradio.ccc.de/cre130.html
-
Hab frueher auch SVN verwendet und bin jetzt bei git. Der Umstieg brachte keine Nachteile, keine Vorteile mit sich. Wenn du "frisch" anfaengst, gibts echt absolut keinen Grund, bei sowas Altem wie SVN zu bleiben.
-
Es gibt mit Sicherheit auch Szenarien, die eher fuer svn sprechen.
Und für alles, was irgendwie mit Versionsgeschichte zu tun hat. Somit braucht man also für "svn log", Blame und Bisect Serververbindungen. Und die entsprechenden Anfragen sind dann auch quälend langsam.
Muss ich bedingt zustimmen, aber wir haben bisher noch keine andere alternative wirklich ausmachen koennen.
Unsere Anforderungen z.b.:
- Defizieles RechteManagment
- Kommunikation ueber nur bestimmte protokolle fuer externe zugriffe. FTP/SFTP faellt raus wegen Sicherheitsapekte, direktzugriff (SSH, telnet ... ) faellt raus wegen Sicherheitsaspekte ... nfs/cifs(smb) no chance ... das einzige was geht ist http/https
- zentrales Managment vs. dezentrales. Wenn man die Projecte und zustaendigkeiten klar abgrenzen kann, iss nen dezentrales sicher besser. Hat man viele Anteile, wo fuer eine Datei z.b. viele Maintainer zustaendig sind, laeufst eh schnell in Probleme. Da iss nen klassisches zentrales System mit onlinezwang eher positiv.
Wenn ich bei einem so einen Project mal 3 Tage ned Comitte, bin ich hinterher locker schneller wenn ich meine Aenderungen verwerfe und in den aktuellen Stand komplett neu einpflege, als wie wenn ich die Kollisionen bearbeite ....
Klar, das Projectmanagment an der STelle iss ned so optimal, geht aber manchmal ned anders ...Ciao ...
-
nman schrieb:
SolidOffline schrieb:
Ich habe mein privates Repository z.B. auf einem Stick liegen (zum lässigen Wechseln zwischen PC, Notebook und Arbeit).
Den brauchst Du auch, wenn Du keinen Server betreiben möchtest und trotzdem von mehreren Rechnern aus bequem SVN verwenden möchtest. Und wenn der Stick kaputtgeht, ist die gesamte Versionsgeschichte weg, sofern Du sie nicht irgendwohin synchronisiert hast.
Und wenn ich ausschliesslich auf einem Rechner arbeite und git verwende und dann meine Festplatte abraucht, dann ist bei git die Versionsgesschichte etwa nicht weg? Ein Versionsverwaltungssystem ist kein Ersatz für ein Backup.
Man kann mit svn sehr viel machen. Dass mit git mehr geht, ist sicher so, aber wenn svn reicht, dann reicht svn.
-
Vielleicht könnte man sich darauf einigen, dass folgende Aussagen in Bezug auf SVN falsch sind:
- git und mercurial sind besser weil: Beide System laufen lokal auf deinem Rechner und somit funktionieren beide auch dann, wenn du mal keine Internetverbindung hast. Wenn eine Verbindung besteht, kannst du die Änderungen mit dem Server abgleichen.
Aussage falsch, weil: SVN ebenfalls lokal läuft und ebenfalls auch dann bestens funktioniert, wenn keine Internetverbindung besteht.
- ... CVS und SVN beide einen Server benötigen, den Du irgendwo installieren musst, zB. bei Dir zuhause.
Aussage falsch, weil: SVN keinen Server benötigt, den man irgendwo installieren muss.
Alles unter der Annahme, dass ein Server nicht mit einem Verzeichnis gleichzusetzen ist.
Vielleicht könnte man sich dann darauf einigen, dass folgende Aussage wahr und unmissverständlich ist:
- Für SVN wird ein zentrales Repository benötigt (sofern man auch mal commiten möchte
), was dann einen Unterschied zu z.B. git oder mercurial darstellt, sobald man auf mehr als einem Rechner arbeiten möchte.
Zur "privaten Nutzung" kann ich SVN also auch ohne Internetverbindung und Server empfehlen.
Das Repository sollte (wie eigentlich alle Daten) natürlich regelmäßig gesichert werden.
-
ich bins schrieb:
nman schrieb:
SolidOffline schrieb:
Ich habe mein privates Repository z.B. auf einem Stick liegen (zum lässigen Wechseln zwischen PC, Notebook und Arbeit).
Den brauchst Du auch, wenn Du keinen Server betreiben möchtest und trotzdem von mehreren Rechnern aus bequem SVN verwenden möchtest. Und wenn der Stick kaputtgeht, ist die gesamte Versionsgeschichte weg, sofern Du sie nicht irgendwohin synchronisiert hast.
Und wenn ich ausschliesslich auf einem Rechner arbeite und git verwende und dann meine Festplatte abraucht, dann ist bei git die Versionsgesschichte etwa nicht weg? Ein Versionsverwaltungssystem ist kein Ersatz für ein Backup.
Stimmt schon, nur Git hat ein Automatisches "Backup".
Jeder der aus checkt hat es, wenn deine Platte ab raucht, frag jemanden der es noch aus gecheckt hat ob er dir sein Repo geben kann, schon ist alles wieder da.@SolidOffline
Was ist wenn du Online sowie Offline arbeiten können willst? Dann musst du immer das Repo lokal und auf den Server manuell Synchronisieren, mit History und alles -> Viel Spaß.Mit "Server" ist ein zentrales Repository gemeint.
-
Nochmal: die ersten zwei Aussagen bzgl. SVN waren falsch. Nicht mehr und nicht weniger. Und genau darauf habe ich hingewiesen.
Mein zentrales Repository liegt auf einem USB-Stick. Das ist weder ein Server, noch hat das irgendwas mit Internet oder Online und Offline zu tun, noch muss ich das mit einem anderen Repository synchronisieren, weil es IST das zentrale Repository.
Es wird ausschließlich von mir PRIVAT auf mehreren Rechnern genutzt, nie von mehreren Benutzern gleichzeitig.
Deshalb meine gewagte Aussage "SVN kann ich zur privaten Nutzung empfehlen".
Dass andere VCS evtl. besser, schneller, zuverlässiger sind, will ich nicht bestreiten, ist mir auch relativ egal, da SVN für mich zur privaten Nutzung völlig ausreicht und sich auch noch schön mit Ankh im Visual Studio eingliedert, nebenbei bemerkt.
-
Ich war vor kurzem noch bei SVN, habe dann Git ausprobiert und später Mercurial. Alle neuen Projekte fange ich nun mit Mercurial an. Gibt da auch eine wunderbare Integration in Windows: TortoiseHg.
Meine 4 bisherigen wesentlichen Vorteile gegenüber lokales SVN sind die folgenden:
1. SVN ist sogar lokal verdammt schnarch langsam. Hg und Git sind wesentlich schneller.
2. SVN setzt überall einen blöden ".svn" Ordner ab. Bei Hg und Git ist dieser nur im obersten Ordner vorhanden und sonst nirgends.
3. Branching, Merging, usw. sind deutlich einfacher über Hg und Git. Es ist so einfach, dass es etwas ganz natürliches wird. Bei SVN habe ich mich immer wenn möglich darum gedrückt.
4. Die dezentrale Möglichkeit von Git und Hg sind einfach der Hammer. Musste ein paar Wochen weg, wollte die Arbeit mitnehmen. Schnell auf einer USB HD ein Repository erstellt, einen Pull durchgeführt, unterwegs gearbeitet, zurückgekommen, einen Push durchgeführt und ich konnte wieder lokal weiterarbeiten. Das geht äusserst leicht von der Hand. Ich möchte dies unbedingt mal im Team verwenden. Da könnte man zum Beispiel ein zentrales Repository machen und jeder arbeitet zuerst lokal auf seinem Repository. Wenn gewisse Ziele erreicht sind, kann man einen Push auf das zentrale Repository machen. Unglaublich Geschwindigkeit garantiert und man muss nicht gleich alle Branches und co allen anderen bekannt machen, sondern kann wirklich lokal bei sich arbeiten und dann am Ende nur das übertragen, was auch Sinn macht.Noch kurz was zu Mercurial vs Git:
Ich persönlich verwende Mercurial aus zwei Gründen. Zum einen finde ich die Integration auf Windows irgendwie reifer und besser. Git ist immer noch zu stark auf Linux orientiert und das Windows Team scheint immer noch zu klein zu sein. Mercurial dagegen scheint einen recht guten Windows Support zu haben.
Der zweite Grund, wieso ich mich für Mercurial entschied, ist dessen Einfachheit gegenüber Git. Ich kam in Mercurial wesentlich schneller rein als in Git. Git ist einfach ein Monstrum an Möglichkeiten. Man hat eine grosse Vielfalt und dadurch eben auch viel zum lernen und verstehen. Mercurial scheint mir da einfach etwas schlanker zu sein und reicht für meine Bedürfnisse absolut. Das war/ist aber vor allem ein sehr subjektives Empfinden.Grüssli
-
Zu all den "SVN reicht auch"-Posts: Natürlich kann man auch mit schlechten Werkzeugen arbeiten. Ich löte auch immer noch mit einem 10€-Lötkolben und habe ganz brauchbare Resultate. Allerdings würde ich wenn ich ohne finanziellen Aufwand für zuhause eine der hübschen Weller-Stationen, die wir auf der Uni haben, bekommen könnte ohne zu zögern eine nehmen. Meine Elektronikprojekte würden dadurch nicht zwangsläufig besser, aber die Arbeit an sich wäre definitiv angenehmer, wenn ich nicht immer ewig warten müsste, bis das Eisen heiß ist oder mich über die ungleichmäßige Temperaturverteilung und die ständig oxidierende Spitze ärgern müsste.
SolidOffline schrieb:
- git und mercurial sind besser weil: Beide System laufen lokal auf deinem Rechner und somit funktionieren beide auch dann, wenn du mal keine Internetverbindung hast. Wenn eine Verbindung besteht, kannst du die Änderungen mit dem Server abgleichen.
Aussage falsch, weil: SVN ebenfalls lokal läuft und ebenfalls auch dann bestens funktioniert, wenn keine Internetverbindung besteht.
- ... CVS und SVN beide einen Server benötigen, den Du irgendwo installieren musst, zB. bei Dir zuhause.
Aussage falsch, weil: SVN keinen Server benötigt, den man irgendwo installieren muss.
Die Aussagen sind nur dann falsch, wenn Du davon ausgehst, dass Du Dich a) beim Entwickeln immer auf einen Rechner beschränken kannst und b) immer alleine arbeitest.
Ich weiß nicht, wie häufig das bei Dir der Fall ist, aber bei mir kommt a) bei jedem Projekt irgendwann der Zeitpunkt, an dem ich gerne vom Laptop aus arbeiten möchte oder auf der Uni im Labor oä. und b) arbeite ich an der überwiegenden Mehrzahl meiner Projekte nicht alleine, weswegen Kollegen der Verweis auf den USB-Stick, auf dem mein Repo liegt, nicht viel hilft.
Dravere: Dass der Einstieg mit Mercurial leichter ist, als mit Git, würde mich nicht wundern. Ich habe bis jetzt wenig mit Mercurial gemacht, früher aber häufig darcs verwendet. Um Git richtig gut verwenden zu können, ist IMO ein bisschen mehr Wissen über Interna nötig, als bei Mercurial oder darcs. Die beiden (besonders darcs) skalieren besser nach unten. (Die staging area bei Git zB. ist ein tolles Feature, war anfangs aber etwas verwirrend.
Wie gesagt, ob Git oder Mercurial halte ich für Geschmackssache; beide sind verteilt, schnell, haben kompakte Repos, brauchbares Branching und sind so zuverlässig, dass man seinen Tools wirklich trauen kann. (Bei Subversion mit BDB ist es verdammt leicht, sich versehentlich ein Repo zu zerschießen, was mir mit Git und Mercurial noch nie passiert ist.)
-
RHBaum schrieb:
Unsere Anforderungen z.b.:
- Defizieles RechteManagmentDiffizil? Inwiefern?
(Ja, alles wo userspezifische Zugriffsrechte innerhalb eines Projekts für unterschiedliche Files unterschiedlich sein sollen, ist anstrengend. Meinst Du das?)
- Kommunikation ueber nur bestimmte protokolle fuer externe zugriffe. FTP/SFTP faellt raus wegen Sicherheitsapekte, direktzugriff (SSH, telnet ... ) faellt raus wegen Sicherheitsaspekte ... nfs/cifs(smb) no chance ... das einzige was geht ist http/https
SSH in Sachen Sicherheit mit telnet gleichzusetzen, finde ich schon hart.
SSH ist eine moderne Remote-Shell, die sich sehr gut für solche Aufgaben eignet. Ansonsten ist Schreibzugriff über HTTP in Git auch kein Problem.
Wenn ich bei einem so einen Project mal 3 Tage ned Comitte, bin ich hinterher locker schneller wenn ich meine Aenderungen verwerfe und in den aktuellen Stand komplett neu einpflege, als wie wenn ich die Kollisionen bearbeite ....
Aber doch nur deswegen, weil das Merging bei älteren Versionskontrollsystemen so mies ist. Ich höre oft "Branching ist doch ganz einfach" und das stimmt auch. Nur verwendet es niemand, weil das Merging so ein Riesenkrampf ist.
Moderne verteilte VCS haben für genau solche Einsatzzwecke richtig gutes Branching und Merging, das funktioniert wunderbar für solche Einsatzzwecke. Ist natürlich aber kein Ersatz dafür, hin und wieder miteinander zu reden.
-
Als weitere verteilte SVN-Alternative gibt es noch Bazaar
-
nman schrieb:
[...]
SolidOffline schrieb:
- git und mercurial sind besser weil: Beide System laufen lokal auf deinem Rechner und somit funktionieren beide auch dann, wenn du mal keine Internetverbindung hast. Wenn eine Verbindung besteht, kannst du die Änderungen mit dem Server abgleichen.
Aussage falsch, weil: SVN ebenfalls lokal läuft und ebenfalls auch dann bestens funktioniert, wenn keine Internetverbindung besteht.
- ... CVS und SVN beide einen Server benötigen, den Du irgendwo installieren musst, zB. bei Dir zuhause.
Aussage falsch, weil: SVN keinen Server benötigt, den man irgendwo installieren muss.
Die Aussagen sind nur dann falsch, wenn Du davon ausgehst, dass Du Dich a) beim Entwickeln immer auf einen Rechner beschränken kannst und b) immer alleine arbeitest.
Ich weiß nicht, wie häufig das bei Dir der Fall ist, aber bei mir kommt a) bei jedem Projekt irgendwann der Zeitpunkt, an dem ich gerne vom Laptop aus arbeiten möchte oder auf der Uni im Labor oä. und b) arbeite ich an der überwiegenden Mehrzahl meiner Projekte nicht alleine, weswegen Kollegen der Verweis auf den USB-Stick, auf dem mein Repo liegt, nicht viel hilft.
[...]
Da die Aussagen diese Einschränkung nicht machten und leider nunmal so allgemein gehalten waren, sind sie falsch. Du wirst mir sicher zustimmen, dass auch die Aussage "ein Ferrari ist langsam" falsch ist, wenn ich nicht schon in der Aussage die Einschränkung mache, dass ich einen von einem Moped abgeschleppten Ferrari meine.
Der Threadersteller sprach ausdrücklich von privater Nutzung. Ich denke da kann man einen Multi-User Betrieb (zumindest gleichzeitig) ausschließen. Dass auch ein Mehrrechnerbetrieb kein Problem ist, habe ich schon dargestellt -> zentrales Repository auf Stick, auf Netzlaufwerk oder ähnliches. Auch ein Multiuser-Betrieb (wenn nicht gleichzeitig) ist so ohne Probleme möglich.
An meinen privaten Projekten arbeite ich eigentlich immer alleine (wenn auch auf verschiedenen Rechnern mit verschiedenen Usern), maximal verwende ich einige Libraries auch auf arbeit, an denen ich privat fummle --> USB-Stick.
Aber eigentlich möchte ich gar nicht in die Ecke, in der die SVN-Verfechter sitzen.
Ich benutze SVN privat, weil es läuft und für mich völlig ausreicht, dass es bessere und modernere VCS gibt, habe ich nie bestritten. Ich habe bloß zwei Aussagen korrigiert bzw. der Korrektur zugestimmt, weil sie nunmal tatsächlich falsch waren.
Wenn ich noch kein VCS verwenden würde, würde ich wahrscheinlich ebenfalls git oder mercurial nehmen, sofern es für diese gute Addins für Visual Studio gibt. Das ändert aber immer noch nichts an der Tatsache, dass ich SVN für private Zwecke auch ohne extra Server, Internet oder wasauchimmer empfehlen kann, weil ich's halt auch so benutze.
Spricht ja nichts dagegen, dass Andere andere VCS empfehlen, nur dann bitte halt nicht aus den ersten zwei genannten falschen Gründen heraus, denn die Annahme, wenn jemand von privater Nutzung spricht, sollte eben nicht auf einen simultanen Multi-User Betrieb hinzielen.
Davon ab denke ich, dass der Troll (Threadersteller) nun satt sein dürfte.
-
SolidOffline schrieb:
Der Threadersteller sprach ausdrücklich von privater Nutzung.
Und offensichtlich hast Du andere Vorstellungen von "privater Nutzung" als ich. Meine privaten Projekte involvieren nämlich häufig andere Entwickler. Mit diesen anderen Entwicklern teile ich mir typischerweise keinen Zugang zu USB-Sticks, Samba-Shares oä., weil sie eben nicht eine Tür weiter sitzen.
(Mal ganz davon abgesehen dass sich private Projekte häufig recht fließend zu weniger privaten Projekten entwickeln.)
Deine "Ferrari ist langsam"-Analogie hinkt daher ein wenig. Nimm als Analogie lieber "Sind Ferraris alltagstauglich?". Ich würde darauf mit nein antworten, weil ich häufig in der Stadt Parkplätze suche und auf holprigen Landstraßen unterwegs bin, während Du das anders siehst, weil Du mit Deinem nur Autobahn fährst. Zugrunde liegt eben ein unterschiedliches Verständnis von alltagstauglich, nicht eine falsche Aussage.
-
Beide Aussagen sind für sich gesehen falsch, da sie die Einschränkungen/Annahmen, die sie zu wahren Aussagen machen würden nicht enthalten.
Aber ich stimme dir insofern zu, als dass die Annahme ein simultanter Multi-User Betrieb würde benötigt, implizit durch dein Verständnis von "privater Nutzung" vorgegeben war. Nach meinem Verständnis "privater Nutzung" waren die Aussagen dann natürlich falsch.
Sei noch angemerkt, dass ich mir mercurial wohl demnächst zumindest mal anschauen werde. Kann ich damit auch noch meine SVN-Projekte weiter verwalten und taugt das Visiual-Studio Addin (glaube hgSCC heißt es?) was?
-
PS: Heute morgen musste ich feststellen, dass ich meinen USB-Stick auf Arbeit vergessen habe. Hmmm...
-
Genau das ist ja der vorteil von den Verteilten Systemen.
Wenn man sein Stick vergessen hat geht es ja noch, da hängt alles halt nur eine gewisse Zeit.Aber was ist wenn man den Stick verliert, oder die Daten irreparabel beschädigt werden, oder versehentlich das Repo auf den Stick versehentlich gelöscht wurde.
Dann ist alles weg bis zum letzten Backup.
Bei den Verteilten System kann man immer Problemlos vom/zum Stick Pullen und Pushen, und wenn mit dem Stick was ist, einfach neu Pushen und fertig, alles wieder da
-
SolidOffline schrieb:
Kann ich damit auch noch meine SVN-Projekte weiter verwalten ...
Es gibt zumindest eine Erweiterung, welche dies erlauben soll. Ich habe damit allerdings keine Erfahrungen gemacht, nur davon gehört/gelesen, dass es sehr gut gehe:
hgsubversion
Integration mit TortoiseHgSolidOffline schrieb:
und taugt das Visiual-Studio Addin (glaube hgSCC heißt es?) was?
Es heisst HgSccPackage. Erfahrungen damit habe ich auch keine. Ich verbinde solche Dinge nicht gerne mit der IDE. Auch bei SVN habe ich das ganze immer extern gemacht. Ich verwalte schliesslich nicht nur Code und dazugehörige Ressourcen über ein VCS. Meistens kommen da noch verschiedene andere Dokumente, Scripts oder sonstige Files dazu, von welchen meine IDE nichts weiss.
Grüssli
-
Ok, danke, ich werd's mir bei Gelegenheit mal ansehen. Eine schöne IDE-Integration ist bei mir ein Muss und Zucker wäre natürlich, wenn ich meine SVN-Projekte dann auch noch weiter verwalten könnte.
Schaumermal.
-
CSL schrieb:
Stimmt schon, nur Git hat ein Automatisches "Backup".
Jeder der aus checkt hat es, wenn deine Platte ab raucht, frag jemanden der es noch aus gecheckt hat ob er dir sein Repo geben kann, schon ist alles wieder da.Das ist quatsch. Hört auf so einen gefährlichen unsinn zu verbreiten. Ein verteiltes system kann ein backup NICHT ersetzen. Denn das würde voraussetzen, dass es immer jemanden gibt die den aktuellsten stand hat. Und das ist nicht garantiert. Denn wenn deine platte abraucht, nachdem sich das letzte mal vor 3 wochen jemand eine kopie gezogen hat, dann ist alle arbeit der letzten 3 wochen im eimer. Man sollte auf dem boden der tatsachen bleiben, wenn man sein system übern klee lobt.
Ein punkt würde mich bei git mal interessieren:
Kann ich bei git eine lesbare brauchbare revision bekommen? Also etwas was man auch kunden per telefon durchgeben lassen kann ("version 36182")? Oder geht nix ausser diesen hashes, wahrscheinlich konzeptbedingt? Auch ein punkt, der durchaus gegen so ein system sprechen kann.