Welches VCS (version control system)

Developer-Tools, Entwicklungsumgebungen und alles andere, was sich installieren lässt
Antworten
Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Welches VCS (version control system)

Beitrag von Kerli » Do Mär 05, 2009 6:58 pm

Ein VCS (version control system) ist vor allem beim Programmieren eine sehr praktische Sache. Deshalb tue ich auch immer mehr Projekte mit einem VCS verwalten, auch wenn ich allein daran arbeite. Dafür habe ich eigentlich bis jetzt immer Subversion verwendet. Dafür braucht man aber einen zentralen Server, was mir aber nicht so gefällt, da ich erstens keinen Server habe, und mir zweitens das System mit einem zentralen System nicht immer sinnvoll erscheint.

Was kann ich zum Beispiel machen wenn ich zwei Rechner habe und zwischen ihnen Daten zb. über einen USB-Stick austauschen möchte, da ich zum Beispiel ein Programm am Desktop und zwischendurch am Laptop weiterarbeite. So etwas ist mit Subversion nicht möglich. Aus diesem Grund habe ich mich nach Alternativen umgestoßen und bin zuerst auf git und dann aber weiter auf Bazaar gestoßen. git wurde von Linus Torvalds ins Leben gerufen und Bazaar wird von Canonical, der Firma hinter Ubuntu, entwickelt.

Da mit beiden Systemen große Softwareprojekte verwaltet werden, dürften sie doch eine gewisse Qualität aufweisen. Zurzeit tendiere ich eher zu Bazaar, aber mich würde interessieren ob ihr schon damit oder ev. auch mit einem anderen VCS Erfahrungen gesammelt habt und wie eure Meinungen dazu sind.
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Welches VCS (version control system)

Beitrag von Dirty Oerti » Do Mär 05, 2009 7:42 pm

Kerli hat geschrieben:So etwas ist mit Subversion nicht möglich.
Hä?

Du hast 2 Computer?
Sagen wir einen "Computer" und einen "Laptop" ?.

Du erstellst auf dem Computer ein SVN-Repository (SVN-admin). Das kannst du nun sowohl vom Computer als auch vom Laptop aus auschecken.
Wenn du mit dem Laptop unterwegs warst und Änderungen vorgenommen hast, dann machst du einfach ein commit, sobald Laptop und Computer wieder Kontakt haben?

Oder verstehe ich was falsch?
Du kannst das nat. auch (zusätzlich) über einen USB-Stick lösen.
Vom Computer auf den USB-Stick auschecken, USB-Stick mitnehmen und damit machen was immer du willst. Beim "Zurückkommen" USB-Stick wieder an den Computer, und commit. Fertig.

MfG
Daniel
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: Welches VCS (version control system)

Beitrag von fat-lobyte » Do Mär 05, 2009 8:05 pm

Dirty Oerti hat geschrieben:Du kannst das nat. auch (zusätzlich) über einen USB-Stick lösen.
Also die Variante mit dem USB- Stick hatte ich eigentlich auch immer...
svnadmin create,

Auf dem USB stick ausgecheckt, auf der Arbeit gecodet, abends eingecheckt, auf dem PC upgedatet. Da war SVN wirklich eine super hilfe..
Probleme gabs wenn ich vergessen habe auszuchecken und dann trotzdem was verändert hab. Dann war SVN merge angesagt...

Also konkret dieses Problem kann man auch mit SVN Lösen, aber ich würde übrigens auch gerne was über andere VCS' hören.
Haters gonna hate, potatoes gonna potate.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Welches VCS (version control system)

Beitrag von Xin » Do Mär 05, 2009 9:16 pm

Kerli hat geschrieben:Was kann ich zum Beispiel machen wenn ich zwei Rechner habe und zwischen ihnen Daten zb. über einen USB-Stick austauschen möchte, da ich zum Beispiel ein Programm am Desktop und zwischendurch am Laptop weiterarbeite. So etwas ist mit Subversion nicht möglich.
Das ist möglich.

Code: Alles auswählen

svn co file:////mnt/usbstick/repository
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: Welches VCS (version control system)

Beitrag von Kerli » Fr Mär 06, 2009 12:20 am

Dirty Oerti hat geschrieben:Du hast 2 Computer?
Sagen wir einen "Computer" und einen "Laptop" ?.

Du erstellst auf dem Computer ein SVN-Repository (SVN-admin). Das kannst du nun sowohl vom Computer als auch vom Laptop aus auschecken.
Wenn du mit dem Laptop unterwegs warst und Änderungen vorgenommen hast, dann machst du einfach ein commit, sobald Laptop und Computer wieder Kontakt haben?
Das Beispiel ist vielleicht etwas zu einfach gewählt. Das "Problem" an Subversion ist das es sehr zentralisiert ausgelegt ist. Es gibt also immer einen zentralen Server. Und für ein Checkout müsste ich auch sonst immer den kompletten Sourcecode kopieren. Mit Bazaar nimm ich einfach nur eine patchdatei mit. Da die sehr klein ist kann man sie durchaus sehr gut über email verschicken, was ich auch recht gerne mache. Es ist nämlich sehr einfach ein Email an mich selbst zu schreiben, da brauch ich dann nicht einmal an einen Stick denken.

Und wenn ich mehrere gleich- und vollwertige Repositiories habe, dann kann auch bei einem Serverdefekt nichts verloren gehen, da jeder Rechner auch alle Daten mit der gesamten Versionhistorie haben kann.

Weiters kann ich mit Bazaar mehrere gleichwertige Repositiories auf mehreren Rechnern haben. Dabei ist keines der Hauptzweig, sondern alle sind gleichwertig. Ich kann dann einfach auch zb mit send einen Patch auf die neuere Version erzeugen und am anderen Rechner wieder importieren. Mit SVN wird es zum Beispiel glaube ich nicht möglich sein auf zwei Rechnern einen Server laufen haben. Und wenn ich gerade den Rechner ohne Server laufen habe, dann müsste ich extra den anderen Rechner zum commiten einschalten. So kann ich mir zb einfach ein Email mit dem Patch schicken, oder ihn schnell auf einen Stick kopieren und dann am anderen Rechner nur mehr importieren.

Und wenn ich dann doch einmal auch den Sourcecode auf meinem Webspace bereitstellen möchte, dann reicht ein einfacher ftp-Zugang, über den ich alle Daten hochladen kann. Ich könnte dort sogar auch falls ich es brauchen sollte einen zentralen Zweig des Projektes anlegen.

Das ist überhaupt auch ein weiteres sehr gutes Konzept. Die Zweige oder besser auf Englisch Branches. Man kann sich von einem Repository einfache ein Kopie in einem zweiten Branch anlegen und dort an einem bestimmten Problem arbeiten. Man kann dabei beliebig viele Branches anlegen und nachher mit einem merge wieder vereinen. So kann man an mehreren Problemen arbeiten ohne die anderen dabei zu beinflussen.

Was mir ebenfalls sehr gut gefällt ist, dass es nur mehr im root-Verzeichnis einen .bzr Ordner gibt und nicht wie bei Subversion in jedem Unterordner einen .svn Ordner. Außerdem ist der Speicherplatzbedarf mit Bazaar deutlich geringer.

Ich möchte damit jetzt nicht unbedingt sagen, dass Subversion schlecht ist - ich verwende es auch noch für manche Projekte - aber Bazaar bietet doch einige nicht zu verachtende Vorteile. Außerdem kann Bazaar auch mit Subversion umgehen. Das sollte also kein Hindernis sein ;)

edit:

Und was ich noch vergessen habe: Es ist auch problemlos möglich Dateien und Ordner umzubenennen. Sogar wenn jemand später noch Änderungen für einen Datei bringt, die jetzt eigentlich nicht mehr existiert, da sie umbenannt wurde, weis Bazaar wo sie zu finden ist.
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: Welches VCS (version control system)

Beitrag von fat-lobyte » Fr Mär 06, 2009 9:38 am

Gut, nachdem was ich jetzt in deinem Post gelesen habe muss ich sagen du hast schon recht. SVN hat doch seine tücken, nämlich seine Zentralisierte Natur.
Branching und Merging gefällt mir bei SVN auch nicht sehr gut.
Ich habe mir Git ein wenig angesehen, und soweit ich das mitbekommen habe sieht es ziemlich interessant aus.
Es ermöglicht ebenfalls gleichwertige Repositories (die den ganze Revision History enthält), einfaches Branching/Merging, soll recht effizient sein und jede Revision hat einen eigenen kryptographische "Hash", der auch die Revision- Geschichte miteinbezieht.
Ich sehs mir mal genauer an, aber bis jetzt werde ich glaube ich mein Projekt auf Git umstellen.
Haters gonna hate, potatoes gonna potate.

Antworten