Welches SCM benutzt ihr?


  • Administrator

    @rüdiger, drakon & Mr.N,
    (Ich hoffe mal, dass ich mich an die richtigen Namen erinnert habe)
    Zum Thema VIM:
    Der Standardeditor bei GIT ist VIM. Und zwar VIM in der Konsole. Ich bin auch völlig erschrocken, als nach dem git commit plötzlich dieses seltsame Ding geöffnet hat, welches ich partout nicht mehr geschlossen bekommen habe. Und als ich dann auf das X gedrückt habe, ist der ganze Commit abgebrochen.

    Als ich dann in den Settings mein Notepad++ eintragen wollte, ging das gar nicht. Kein gültiger Editor oder sowas. Hätte mich auch überrascht, wie sollte dies schliesslich gehen?

    Bisheriger Eindruck von GIT: Kompliziert 🙂
    SVN kann man innert 30 Minuten ziemlich weitgehend lernen oder zumindest einen Überblick bekommen. Bei GIT ist mir das irgendwie noch nicht gelungen, ich habe noch nicht einmal eine annähernde Übersicht. Aber so langsam kommt es.

    Der Verlgeich zwischen GIT und x fand ich ganz interessant, aber bisher wegen der ganzen Komplexität von GIT noch nichts davon sehen können 😉
    Werde mich morgen nochmals, bzw. vielleicht einmal ein wenig länger, damit beschäftigen. Und dann vielleicht mal ein kleineres Projekt damit austesten. Derzeit bleibe ich noch bei SVN.

    Kurz noch was zur Komplexität:
    Die könnte durchaus auch daher kommen, dass GIT und Windows noch nicht so gut harmonisieren. Zum Beispiel funktioniert git diff mit GitExtension nicht, wodurch man wieder auf die Konsole wechselt und dann bei git commit sich wieder über GIT ärgert, weil dort dann dieses VIM kommt. Tools wo man hin und her wechseln muss, zwischen verschiedenen Oberflächen sind immer mühsam.

    Grüssli



  • Da sehe ich auch noch den Hauptnachteil (und den einzigen) in Git. Die Integration. Ich als Windows User bin es mich einfach nicht gewohnt alles mit der Konsole zu machen und bevorzuge halt nun einfach mal ein Gui und möchte nicht für jedes kleine Detail ein Manual hervorziehen.

    In dem Sinne ist nicht Git komplizierter, als andere SCM, sondern die Integration für Windows User ist nicht wirklich gut. Vor allem, wenn dann so Dinge, wie VIM aufgehen und man erstmal keine Ahung hat, was da abgeht.. ( kleiner Tipp für Dravere: ESC -> :q bringt dich wieder aus Vim raus. Mit :w kannst du speichern, am besten mal das über die Modi in Vim in der Doku nachlesen)

    In dem Sinne liegt das Problem ja nicht direkt an Git, sondern an den mangelnden Leuten, die Tools dafür für Windows schreiben. 🙂 - Aber eigentlich gehts mit TortoiseGit ja auch recht gut und reicht wohl für die üblichen Dinge.
    (ich wüsste z.B nicht, wie ich bei SVN speziellere Dinge machen kann. Bei Git weiss ich, dass ich aus der Konsole alles rausholen kann)



  • Dravere schrieb:

    Bisheriger Eindruck von GIT: Kompliziert 🙂
    SVN kann man innert 30 Minuten ziemlich weitgehend lernen oder zumindest einen Überblick bekommen. Bei GIT ist mir das irgendwie noch nicht gelungen, ich habe noch nicht einmal eine annähernde Übersicht. Aber so langsam kommt es.

    Das glaube ich dir aber jetzt nicht. http://git-scm.org/course/svn.html
    Fast alle Befehle sind identisch und die git Befehle sind konsistenter. Z.B. tag

    git tag -a name  	svn copy http://example.com/svn/trunk http://example.com/svn/tags/name
    

    Oder branchen:

    git branch branch
    git checkout branch 	svn copy http://example.com/svn/trunk http://example.com/svn/branches/branch
                            svn switch http://example.com/svn/branches/branch
    

    Oder gar mergen

    git merge branch  	(assuming the branch was created in revision 20 and you are inside a working copy of trunk)
    svn merge -r 20:HEAD http://example.com/svn/branches/branch
    

    drakon schrieb:

    DEvent schrieb:

    drakon schrieb:

    Hmm. Ich würde mal gern sehen, die du damit arbeitest. 🙂
    (das mein ich jetzt ernst, weil ich kanns mir iwie nicht richtig vorstellen, weil das halt mit GUI so viel einfacher ist..)

    z.B Das mit dem Graph. In der Konsole gibt es ja anscheinend eine Navigation mit der Tastatur. Wie genau das funktioniert weiss ich jetzt nicht. Müsste also im Manual naschauen. In der GUI ist das sofot klar, wie das geht.

    Was gibt es da groß zu arbeiten? 7 Befehle, die ich benutze, den Rest der Zeit programmiere ich. Vielleicht liegt es an Git, aber mehr als add, commit und push mache ich nicht (und checkout/merge je nach Lust und Laune).

    Ja, den grössten Teil der Zeit schon, aber sagen wir du möchtest mal schauen, was ein File so für eine Version zu einem bestimmten Zeitpunkt hatte. Das mit dem Graphen in der Konsole zu machen ist denke recht mühsam. Und wie die richtige Version dann ansteuerst weiss ich in der Konsole z.B auch nicht..

    Ist alles sehr einfach. Mit git-grep, git-log, git-show. Alle Parameter, die ein "tree" Objekt erwarten kannst du entweder mit dem (partiallen) Sha-Hash, mit HEAD oder mit ^^^HEAD ansteuern.

    Z.B. git log

    commit 6566cee3f9ecedd545aeb59f646880b9cf3ba616
    Author: Erwin Mueller <erwin.mueller@deventm.org>
    Date:   Sun Dec 13 18:36:50 2009 +1100
    
        Fix pom.xml
    

    git show 6566c

    commit 6566cee3f9ecedd545aeb59f646880b9cf3ba616
    Author: Erwin Mueller <erwin.mueller@deventm.org>
    Date:   Sun Dec 13 18:36:50 2009 +1100
    
        Fix pom.xml
    
    diff --git a/gs-calculator2-aboutdialog/pom.xml b/gs-calculator2-aboutdialog/pom.xm
    index db5515e..6526b43 100644
    --- a/gs-calculator2-aboutdialog/pom.xml
    +++ b/gs-calculator2-aboutdialog/pom.xml
    @@ -1,124 +1,110 @@
     <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20
    - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/mav
    - <modelVersion>4.0.0</modelVersion>
    - <groupId>com.deventm.gscalc</groupId>
    - <artifactId>gs-calculator2-aboutdialog</artifactId>
    - <version>0.0.1-SNAPSHOT</version>
    +    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/
    +    <modelVersion>4.0.0</modelVersion>
    

    Aber in einer GUI ist das natürlich viel bequemer. 🙂



  • Ich denke Dravere meinte vor allem das arbeiten mit der GUI.

    Ich kann dir sagen, wie ich SVN "gelernt" habe. Ich habe mir TortoiseSVN runtergeladen, mir das allgemeine Tutorial zu Versionierung angeschaut (kannte ich vorher gar nicht) und dann habe ich da ein wenig mit der GUI rumgespielt und das hat alles gut funktioniert. Und das ohne einen einzigen SVN Befehl kennen zu müssen, geschweigen denn Parameter usw. in einer Doku nachschlagen müssen.

    Wie gesagt ich wüsste bis jetzt nicht, wie ich etwas ausserhalb von TortoiseSVN machen könnte. Also Befehle direkt absetzen.. Braucht man in den meisten Fällen ja auch nicht.

    Aber in einer GUI ist das natürlich viel bequemer

    Ok. Das wollte ich eigentlich hören. 🙂
    Aber du benutzt dafür trotzdem keine GUI?



  • Dravere schrieb:

    @rüdiger, drakon & Mr.N,
    (Ich hoffe mal, dass ich mich an die richtigen Namen erinnert habe)
    Zum Thema VIM:
    Der Standardeditor bei GIT ist VIM. Und zwar VIM in der Konsole. Ich bin auch völlig erschrocken, als nach dem git commit plötzlich dieses seltsame Ding geöffnet hat, welches ich partout nicht mehr geschlossen bekommen habe. Und als ich dann auf das X gedrückt habe, ist der ganze Commit abgebrochen.

    Nein, VIM ist nicht der Standardeditor von GIT! Nur bei der Distribution, die du runtergeladen hast. msysgit packt eben noch alle möglichen anderen Sachen dazu. VIM gehört aber nicht zu GIT und ist nicht der Standardeditor von GIT. GIT hat keinen Standardeditor und öffnet einfach den Standardeditor den man einstellt.

    Schau dir vielleicht mal TortoiseGIT an. (Wobei ich nicht weiß, ob die nicht auch vim dazu packen. Aber ich hoffe mal nicht)

    Dravere schrieb:

    Kurz noch was zur Komplexität:
    Die könnte durchaus auch daher kommen, dass GIT und Windows noch nicht so gut harmonisieren. Zum Beispiel funktioniert git diff mit GitExtension nicht, wodurch man wieder auf die Konsole wechselt und dann bei git commit sich wieder über GIT ärgert, weil dort dann dieses VIM kommt. Tools wo man hin und her wechseln muss, zwischen verschiedenen Oberflächen sind immer mühsam.

    Das nehme ich an. Aber wie gesagt: Probier mal eine andere "GIT für Windows"-Distribution.

    @drakon
    Dann nimm doch eine GUI für GIT. TortoiseGIT oder ein Plugin für die IDE deiner Wahl. SVN ist auch eine Konsolengeschichte und TortoiseSVN und die Plugins sind nur GUIs dafür. Genauso wie bei GIT.



  • Also drakons Comment kann ich derzeit nicht verstehen.
    Ich arbeite bisher mit TortoiseSVN und habe mir zum testen TortoiseGit installiert.
    Die ähnlichkeit ist erstaunlich, funktioniert vieles in der handhabe identisch, sogar die Tools sind gleich.
    Brauchte die Konsole bisher nur zum löschen von Tags und Branches.

    Tipp: Shift gedrückt halten und dann rechtsklick, dann hat man mehr auswahl, und aus den Settings kann man noch mehr ein aus schalten.



  • Ich meinte halt die Angehensweise an Git ist anderst.
    Wenn ich einfach mal git bei google eingebe, dann komme ich natürlich auf die Hauptseite und da weiter kommt man nicht zu einer Gui Installation, sondern zur Konsolenversion und die ersten Schritte passieren in der Konsole.
    Bei SVN ist (zumindest bei mir) das anderst anbgelaufen. Ich kam irgendwie automatisch zu TortoiseSVN und auch gleich damit angefangen.

    Die Herangehensweise ist halt für jemanden, der sich Gui gewohnt ist anderst und am anfang wahrscheinlich ein wenig verwirrender.

    Klar benutze ich jetzt auch TortoiseGit, weil es halt ein paar Sachen einfacher macht.

    @CSL
    Was meinst du mit dem Shift? Ich habe keinen Unterschied festgestellt. Habe immer gleich viele Optionen..



  • Wenn ich svn bei Google eingebe, dann komm ich direkt zur alten SVN Seite (nicht TortoiseSVN) und auch auf der neuen SVN Seite erklärt die Doku den normalen SVN (=> Konsolenclient) und keine GUI.


  • Administrator

    DEvent schrieb:

    Das glaube ich dir aber jetzt nicht. http://git-scm.org/course/svn.html
    Fast alle Befehle sind identisch und die git Befehle sind konsistenter.

    Ich habe bisher keinen einzigen Befehl in SVN gekannt. Wozu auch? Erst jetzt durch die GIT Tutorials habe ich gelernt, dass es auch Befehle für SVN gibt 🙂

    Ich habe SVN auch gleich mit TortoiseSVN kennen gelernt. Ganz ursprünglich dachte ich auch, dass es kein SVN ohne Tortoise gibt, bzw. dass SVN von den Tortoise Leuten entwickelt wurde 😉
    Jedenfalls habe ich nie die SVN Befehle gelernt, immer nur TortoiseSVN verwendet und die paar Klicks zu lernen und was sie auslösen, ist wirklich keine Hexerei. Auch kann man vieles sehr einfach auf die Verzeichnisse abbilden. Eine Revision als einfache Zahl welche inkrementiert wird, ist deutlich verständlicher. Ein Tag und zack hat man eine neue Verzeichnisstruktur. Der Trunk ist da, der Branch dort usw. usf.
    Bei GIT ist alles versteckt. Was natürlich durchaus Vorteile hat, aber nicht gerade für das Verständnis förderlich ist. Auch die SHA1 Revisions sind sehr verwirrend, da man sie zu nichts in Bezug setzen kann. Und wenn man dann noch das Tutorial von GIT macht und bei einem git commit plötzlich ein VIM startet und im Tutorial nur steht, dass man den Kommentar eingeben soll und dann sei alles palletti, aber man gar keine Ahnung hat, wie man VIM bedienen soll ... ehm, ja 😮
    Auch das ganze mit dem Stage habe ich noch nicht ganz begriffen. Manchmal muss man commit machen, manchmal commit adment.

    Ich denke mal es sind zwei Dinge:
    1. Die Integration in Windows ist so la la.
    2. GIT kann mehr als SVN, wodurch es automatisch auch mehr zu lernen gibt.

    @rüdiger,
    Und was öffnet GIT auf Windows, wenn man keinen Standardeditor angibt und kein VIM installiert wurde? Und wie gibt man zum Beispiel Notepad++ an? Der will das irgendwie nicht fressen.

    Naja, wie gesagt, morgen nochmals anschauen.

    Grüssli



  • rüdiger schrieb:

    Wenn ich svn bei Google eingebe, dann komm ich direkt zur alten SVN Seite (nicht TortoiseSVN) und auch auf der neuen SVN Seite erklärt die Doku den normalen SVN (=> Konsolenclient) und keine GUI.

    Ja. Ich habs auch nomal probiert, aber wirklich das erste mal, wo ich das gemacht habe kam ich auf (über die richtige SVN Seite) auf TortoiseSVN.

    EDIT:
    Mir ging es genau so, wie Dravere. Darum war ich am Anfang ja auch so verwirrt von dem ganzen Versionnierungszeugs, weil ich halt nicht genau wusste, was denn jetzt SVN ist. Ich dachte zuerst, dass es halt ein System ist und nicht direkt an eine Implementierung gebunden ist und TortoiseSVN halt eine Art SVN ist. (So, wie halt SVN ein SCM ist. ;))



  • drakon schrieb:

    Aber in einer GUI ist das natürlich viel bequemer

    Ok. Das wollte ich eigentlich hören. 🙂
    Aber du benutzt dafür trotzdem keine GUI?

    Vielleicht um mir das Diff anzuschauen oder im Log zu blättern und KDiff um merge-conflict aufzulösen. Aber für add, commit, push geht Konsole viel schneller.

    Zu SVN, ich habe damals mit Windows SVN durch Konsole kennen gelernt. Später habe ich dann TortoiseSVN installiert. Ich fand alles sehr schwierig, vor allem weil man nicht einfach so Dateien/Verzeichnisse löschen oder umbenennen kann und man ständig eine Verbindung zum SVN Server braucht. Dann wird jedes Verzeichnis mit dem .svn Unterverzeichnisse ge-spammt. Wer sich so ein Misst wohl ausgedacht hat.



  • DEvent schrieb:

    drakon schrieb:

    Aber in einer GUI ist das natürlich viel bequemer

    Ok. Das wollte ich eigentlich hören. 🙂
    Aber du benutzt dafür trotzdem keine GUI?

    Vielleicht um mir das Diff anzuschauen oder im Log zu blättern und KDiff um merge-conflict aufzulösen. Aber für add, commit, push geht Konsole viel schneller.

    Eben. Dachte, dass sich diese Funktionen niemand freiwillig in der Konsole gibt. 😉



  • _matze schrieb:

    ;fricky schrieb:

    wenn man's nur mit fünf bis zehn kleinen programmen zu tun hat, an denen man alleine arbeitet, geht's natürlich auch ohne.

    Wir arbeiten in der Firma aber natürlich mit mehreren an einer halbwegs großen Software (ca. 500.000 LOC waren es mal, mittlerweile dürften es mehr sein) und mehreren kleineren Tools.

    Der Austausch per E-Mail funktioniert natürlich auch, klar. Aber allein schon Änderungen nachzuverfolgen ist ein Graus.

    Das soll jetzt ein Scherz sein, oder?



  • Gibt es einen objektiven Vergleich im Sinne von PROs & CONs bezüglich Subversion und Git?



  • DEvent schrieb:

    Zu SVN, ich habe damals mit Windows SVN durch Konsole kennen gelernt.

    kein wunder, dass du SVN dann doof findest. programme über konsolenbefehle zu bedienen ist doch immer nervig, egal welche, unter windows besonders.

    DEvent schrieb:

    Ich fand alles sehr schwierig ... und man ständig eine Verbindung zum SVN Server braucht.

    brauchste nur zum commit, update usw. nicht ständig.

    DEvent schrieb:

    Dann wird jedes Verzeichnis mit dem .svn Unterverzeichnisse ge-spammt. Wer sich so ein Misst wohl ausgedacht hat.

    wie machen das denn andere VCS? irgendwo müssen die ja auch infos unterbringen, dass irgendwas unter versionskontrolle ist.
    🙂



  • drakon schrieb:

    @CSL
    Was meinst du mit dem Shift? Ich habe keinen Unterschied festgestellt. Habe immer gleich viele Optionen..

    Wenn du Shift gedrückt hälst, und dann rechtsklick auf die Datei, hast du mehr Optionen, ist auch bei TortoiseSvn so.

    Ohne Shift:
    http://downloads.my-libraries.de/Pictures/TortoiseGit_1.png
    Mit gedrückten Shift:
    http://downloads.my-libraries.de/Pictures/TortoiseGit_2.png



  • ;fricky schrieb:

    DEvent schrieb:

    Ich fand alles sehr schwierig ... und man ständig eine Verbindung zum SVN Server braucht.

    brauchste nur zum commit, update usw. nicht ständig.

    Serververbindung beim Commiten und Commit=Publishing ist schon ziemlich tödlich. Das führt zu ziemlich unangenehmem Commit-Verhalten.

    Aber man braucht die Verbindung ja auch für diff und für bisect und log und viele andere Sachen, die man doch häufiger verwendet.

    DEvent schrieb:

    Dann wird jedes Verzeichnis mit dem .svn Unterverzeichnisse ge-spammt. Wer sich so ein Misst wohl ausgedacht hat.

    wie machen das denn andere VCS? irgendwo müssen die ja auch infos unterbringen, dass irgendwas unter versionskontrolle ist.
    🙂

    Die meisten, die ich kenne, haben ein einzelnes Verzeichnis im Projekt-Root. Git hat zB. ein einziges .git/, Darcs hat ein einziges _darcs/, etc. Eben nicht pro Subdir.



  • ;fricky schrieb:

    DEvent schrieb:

    Zu SVN, ich habe damals mit Windows SVN durch Konsole kennen gelernt.

    kein wunder, dass du SVN dann doof findest. programme über konsolenbefehle zu bedienen ist doch immer nervig, egal welche, unter windows besonders.

    Nö, nur unter Windows. In Linux ist Konsole sehr bequem.

    ;fricky schrieb:

    DEvent schrieb:

    Ich fand alles sehr schwierig ... und man ständig eine Verbindung zum SVN Server braucht.

    brauchste nur zum commit, update usw. nicht ständig.

    Also ständig. Unter git commite ich jede Änderung und wechsle sehr oft zwischen den branches.

    ;fricky schrieb:

    DEvent schrieb:

    Dann wird jedes Verzeichnis mit dem .svn Unterverzeichnisse ge-spammt. Wer sich so ein Misst wohl ausgedacht hat.

    wie machen das denn andere VCS? irgendwo müssen die ja auch infos unterbringen, dass irgendwas unter versionskontrolle ist.
    🙂

    Ein Verzeichnis reicht doch oder? Wie bei git, einfach ein .git Verzeichnis.



  • Erhard Henkes schrieb:

    Gibt es einen objektiven Vergleich im Sinne von PROs & CONs bezüglich Subversion und Git?

    Bemüh doch mal die Forensuche, wir hatten zu dem Thema schon x Threads.

    Und auch wenn Du es offensichtlich nicht für objektiv hältst, sieh Dir doch mal http://whygitisbetterthanx.com an und recherchiere ggf. selbst zu den angeführten Punkten.

    Meine Lieblingsargumente:
    - Git hat gutes Branching.
    - Ein Commit bedeutet bei Git nicht, dass Du diese Änderungen auch sofort veröffentlichen musst, dh. Du kannst lokal committen wann und wieviel Du möchtest, ohne den anderen Devs irgendwas kaputt zu machen.
    - Git funktioniert komplett Offline.
    - Git benötigt keinen Server, funktioniert aber auch mit Server bestens.
    - Git ist unheimlich schnell, Git-Repos sind unheimlich klein.

    Beliebte Contras aus diesem Thread:
    - Schlechte IDE-Integration, wenn Du nicht TortoiseGit oä verwenden möchtest.
    - Für SVN-User anfangs etwas unintuitiv zu bedienen.



  • Erhard Henkes schrieb:

    Gibt es einen objektiven Vergleich im Sinne von PROs & CONs bezüglich Subversion und Git?

    Ich empfehle auch den Podcast des CCC's sehr gerne. Der geht nicht über Git, sondern stellt alles ein wenig vor und was halt Git anderst macht, als SVN und alle anderen. Und da kommt man dann selbst drauf, warum man eigentlich Git nehmen sollte und nix anderes.

    @nman
    Die Kontras sind imo nicht wirklich Nachteile direkt von Git gegenüber SVN. SVN ist genau so schwer zu benutzen, wie Git. Es ist ganz klar ein Grund, warum die Leute bei SVN bleiben, aber in dem Sinne finde ich das fast ein "unfairen" Grund, weil es kein technischer Nachteil von Git ist. Aber Das ganze wird sich denke ich noch arg verbessern.

    Ein weiterer solchen "unfairen" Grund ist auch die Möglichkeit Projekte auf einem anderen Server zu hosten. Da wird es auch mehr Möglichkeiten für SVN geben, als für Git. Ist aber imo nur eine Frage der Zeit, bis sich das durchsetzt. (Auch im Businessbereich).


Anmelden zum Antworten