Welches SCM benutzt ihr?



  • Man sollte nicht unterschätzen, welchen Einfluss das VCS auf die Entwicklungsgepflogenheiten hat. Sicher gibt es Leute, die alle VCS gleich (schlecht) benutzen, dann macht es keinen Unterschied. Aber nach meiner Erfahrung läuft die Entwicklung von Projekten chaotischer ab, die ein VCS benutzen, bei dem Branchen/Mergen kompliziert ist (zB CVS oder SVN). Dort läuft die Entwicklung dann einfach in Trunk/der main-Branch ab und es kommt nicht selten vor, dass Trunk in einem nicht benutzbaren Zustand ist (von Buggy bis kompiliert nicht mal). Bei Minorreleases wird dann nicht selten einfach der aktuelle Zustand von Trunk verpackt, auch wenn da drastischere Änderungen bei sind. Bei Projekten wo ein VCS benutzt wird, bei dem Branchen/Mergen einfacher ist, wird dagegen eher sauber getrennt entwickelt und man kann die Entwicklung einzelner Features besser nachvollziehen. Ähnlich ist es bei einem VCS das immer über einen zentralen Server geht. Da commiten die Entwickler nach meiner Erfahrung eher seltener und einzelne commits enthalten oft viele verschiedene Änderungen. Bei einem lokalen VCS (ala git, mercurial oder monotone) commiten die Leute öfter und commits erhalten eben nur zusammengehörende Änderungen. Dies erlaubt es dann besser die history zu verstehen und es ist einfacher automatisiert die Quelle für Bugs zu finden (wie MrN schon angesprochen hat).

    Natürlich heißt es nicht, dass sich die Entwicklungsgepflogenheiten ändern, sobald man auf ein bestimmtes VCS umstellt. Wer z.B. in SVN keine Branches kennt, wird die auch nicht sofort in git benutzen.

    ;fricky schrieb:

    CSL schrieb:

    whygitisbetterthenx ist auch nur so ein Marketing blabla, sowas kann jede Software von sich behaupten.
    Andere gut funktionierende Systeme haben es nicht nötig sich derart zu Profilieren
    Ist wie Windows vs Linux.

    ja, das finde ich auch ziemlich kurios, zumal das zeug völlig kostenlos ist, wie SVN und CVS auch. einige aus der szene haben wohl so'ne art sendungsbewusstsein und wollen die welt verbessern o.ä. es herrscht krieg unter den open-source entwicklern *fg*. soll doch jeder das VCS benutzen, wovon er meint, dass es für seine belange am besten passt.
    🙂

    Das Sendungsbewusstsein kommt einfach daher, dass man sich ja leider regelmäßig mit anderen VCS' rumschlagen muss. Da entwickelt man halt schnell eine harte Meinung was das Thema anbelangt. Mir ist es egal, welches VCS die Leute benutzen, solange ich nicht darauf zugreifen muss :).



  • Wenn wir schon dabei sind. Wie benutzt ihr git? - Über die Konsole?
    Ich habe es jetzt mal ausprobiert und naja..
    Ich muss sagen, dass ich das eigentlich schrecklich finde. Imo unübersichtlich, und User unfreundlich ohnegleichen. Und als plötzlich für den commit vim aufging hing ich ca. ne Stunde fest, bis ich rausgefunden habe, wie das Ding funktioniert und bedient werden muss. (nachdem ich die schrekliche Doku aufgesucht habe und schlussendlich einen Linux User gefragt habe, der mir auch nur eine Antwort geben konnte, nachdem er jemand anderen gefragt hat..)
    Ich habe natürlich Tortoise Git ebenfalls geladen, aber ich wollte es halt mal auf diese Weise benutzen und finds ehrlich gesagt schrecklich. 🙂

    CSL schrieb:

    Wer sagt das ich Git ablehne?
    Ich teste das sogar gerade 😉 Konnte aber bisher kein vorteil zu SVN erkennen.

    Ein wesentlicher Vorteil von Git soll die Geschwindigkeit meim branchen und mergen sein. (siehe/höre Podcast).



  • Bashar schrieb:

    byto schrieb:

    Was wäre denn die Alternative? Die Sourcen liegen nur auf dem Rechner des Entwicklers. Ist der mal krank oder weg, kommt niemand an die Sourcen ran. Raucht die Festplatte ab, sind die Sourcen weg, ausser es wurden mal händisch Backups gezogen. Die sind dann aber sicher nicht mehr auf dem aktuellsten Stand.

    Backups machen ist orthogonal zu Versionsverwaltung. Diese ganzen Probleme hast du z.B. exakt genauso, wenn du lokal ein SCM verwendest.

    Nicht wirklich. Der Vorteil von Distributet SCMs (vor allem Git) ist ja, dass jeder Entwickler einen vollständigen Backup hat. Mit Git haben alle Commits einen Sha-Hash, somit ist auch sichergestellt das keiner den Backup manipuliert hat. Wenn z.B. Linus morgen alle seine Backups verliert, kann er zu dir, Bashar, gehen und einen Klon vom Linux Kernel ziehen. Dank der Sha-Hashwerte kann er auch sichergehen, dass du nichts manipuliert hast.



  • Mich würd mal interessieren, ob hier jemand zusätzlich zu VCS einen Continous Integration Server benutzt?

    Werde demnächst in ein Projekt wechseln, wo TeamCity verwendet wird und freu mich schon drauf. 😋

    http://www.jetbrains.com/teamcity/



  • Eigentlich macht MS die meiste Werbung, z.B. 2007 war es more than 20 percent of their annual revenue or $11.5 billion

    Shade Of Mine schrieb:

    CSL schrieb:

    Bei soviel Marketing muss ein Haken sein 😃

    Der einzige Haken an git ist, dass vor lauter Marketing keine vernünftige IDE integration zustande bekommen.

    Das ist auch der einzige Nachteil den git hat. Leider ein gravierender 😞

    Bin deshalb wieder auf svn zurück 😞

    Was bringt einem eine IDE Intergration? Ich benutzte in git 7 Befehle, die alle in Eclipse verfügbar sind.
    * git commit
    * git add
    * git merge
    * git push
    * git pull
    * git checkout
    * git diff

    Als Gui benutze ich noch die Standard Git Gui um mir die Branches anzuzeigen.



  • rüdiger schrieb:

    ... Wer z.B. in SVN keine Branches kennt, wird die auch nicht sofort in git benutzen. ...

    Entschuldige wenn ich es aus dem Context reiche, aber was soll das bedeuten?
    Ich benutze SVN und habe sehr wohl Branches.

    Meine Branching strategie für Private Projekte ist so:

    Es gibt einen main Branch, das beinhaltet alle releasten Versionen, auch gelabelt um jede Version zu finden.
    Ich selber entwickel in einem dev Branch, da submitte ich jeden Abend wenn ich den PC aus schalte die aktuelle änderungen, unabhängig davon ob es fertig ist oder gar baut.
    Sobald dann dev stable und fertig ist, Merge ich den dev Branch zurück zu main, Label das mit der korrekten Version und release das Ding.
    Hat sich mitlerweile bewährt 🙂



  • drakon schrieb:

    Wenn wir schon dabei sind. Wie benutzt ihr git? - Über die Konsole?

    Ja. Und über Magit. Ansonsten benutze ich gitk recht häufig. git gui nie.



  • drakon schrieb:

    Wenn wir schon dabei sind. Wie benutzt ihr git? - Über die Konsole?
    Ich habe es jetzt mal ausprobiert und naja..
    Ich muss sagen, dass ich das eigentlich schrecklich finde. Imo unübersichtlich, und User unfreundlich ohnegleichen. Und als plötzlich für den commit vim aufging hing ich ca. ne Stunde fest, bis ich rausgefunden habe, wie das Ding funktioniert und bedient werden muss. (nachdem ich die schrekliche Doku aufgesucht habe und schlussendlich einen Linux User gefragt habe, der mir auch nur eine Antwort geben konnte, nachdem er jemand anderen gefragt hat..)

    Der öffnet eben den Editor, den du als Standardeditor auf dem System eingestellt hast. Ich benutze git zum Größtenteil über magit, gitk und die Konsole.

    byto schrieb:

    Mich würd mal interessieren, ob hier jemand zusätzlich zu VCS einen Continous Integration Server benutzt?

    Was soll ein Continous Integration Server sein?

    CSL schrieb:

    Entschuldige wenn ich es aus dem Context reiche, aber was soll das bedeuten?

    Es soll bedeuten, dass viele Leute ein neues System exakt wie das alte benutzen. Wenn du Branches in SVN benutzt, dann ist das gut.

    Ich mach für jedes größere Feature an dem ich arbeite eine neue Branch auf. Rebase die aber regelmäßig auf den aktuellen master (um Konflikte früh zu erkennen oder Bugfixes zu nutzen). Wenn das Feature dann gut genug ist merge ich es in den Master. Für jede logisch trennbare Veränderung versuche ich ein eigenes commit zu machen.



  • drakon schrieb:

    Wenn wir schon dabei sind. Wie benutzt ihr git? - Über die Konsole?

    Nutze msysgit aus Powershell heraus mit notepad2 als editor. Funktioniert super. Zum Teufel mit den GUIs. 👍



  • DEvent schrieb:

    Was bringt einem eine IDE Intergration? Ich benutzte in git 7 Befehle, die alle in Eclipse verfügbar sind...

    Ich habe vorhin für CVS gestimmt und finde die Integration von CVS in Eclipse ganz gut. Benutze in Eclipse folgende "Funktionen" von CVS: "Einchecken", "Auschecken", "Tag" setzen, Vergleichen, "History" zeigen. Wären also 5, weiss aber nicht, wie sie auf der Kommandozeile wären... Vergleichen finde ich ganz praktisch.
    Meinst Du, git ist in Eclipse genauso gut integriert wie CVS?



  • rüdiger schrieb:

    drakon schrieb:

    Wenn wir schon dabei sind. Wie benutzt ihr git? - Über die Konsole?
    Ich habe es jetzt mal ausprobiert und naja..
    Ich muss sagen, dass ich das eigentlich schrecklich finde. Imo unübersichtlich, und User unfreundlich ohnegleichen. Und als plötzlich für den commit vim aufging hing ich ca. ne Stunde fest, bis ich rausgefunden habe, wie das Ding funktioniert und bedient werden muss. (nachdem ich die schrekliche Doku aufgesucht habe und schlussendlich einen Linux User gefragt habe, der mir auch nur eine Antwort geben konnte, nachdem er jemand anderen gefragt hat..)

    Der öffnet eben den Editor, den du als Standardeditor auf dem System eingestellt hast.

    Das ist bestimmt nicht Vim. 😉 - Aber wahrscheinlich ist das von dem Programm her der Standardedtior, ja.

    @abc.w
    Wie es mit git aussieht weiss ich nicht (bezweifle es aber), aber SVN ist ganz ordentlich integriert. Auf jeden Fall hast du die genannten 5 Befehle ebenfalls drin. 😉

    @rest:
    Niemand benutzt TortoiseGit? - Falls doch gleich mal ne Frage dazu: Wie entfernt man denn da wieder einen erstellten Branch? Habe bis jetzt leider keine Möglichkeit mit TortoiseGit gefunden.. 😞

    Also bei SVN benutze ich hauptsächlich update und commit..



  • Mr. N schrieb:

    drakon schrieb:

    Wenn wir schon dabei sind. Wie benutzt ihr git? - Über die Konsole?

    Ja. Und über Magit. Ansonsten benutze ich gitk recht häufig. git gui nie.

    Cool, danke. Hier ist ein cheat-sheet. Kann man magit-mode automatisch starten lassen, wenn man in einem Repository ist?



  • abc.w schrieb:

    DEvent schrieb:

    Was bringt einem eine IDE Intergration? Ich benutzte in git 7 Befehle, die alle in Eclipse verfügbar sind...

    Ich habe vorhin für CVS gestimmt und finde die Integration von CVS in Eclipse ganz gut. Benutze in Eclipse folgende "Funktionen" von CVS: "Einchecken", "Auschecken", "Tag" setzen, Vergleichen, "History" zeigen. Wären also 5, weiss aber nicht, wie sie auf der Kommandozeile wären... Vergleichen finde ich ganz praktisch.
    Meinst Du, git ist in Eclipse genauso gut integriert wie CVS?

    Da ich immer eine Konsole eh offen habe, habe ich keine Ahnung wozu eine Integration gut sein soll. Eine Konsole mit Auto-Verfollständigung und rekursive Suche des letzten Befehls, wie es jede Linux Konsole ist, ist es um einiges schneller als den Menupunkt zu finden.

    Aber wie gesagt, du kannst die 7 Befehle (und mehr) und ein Diff in Eclise machen.



  • drakon schrieb:

    Das ist bestimmt nicht Vim. 😉 - Aber wahrscheinlich ist das von dem Programm her der Standardedtior, ja.

    Ne, wenn du git nicht explizit sagst etwas anderes zu benutzen, dann nimmt er den Standardeditor und ich gehe mal davon aus, dass du nicht explizit auf vim gestellt hast :). Vermutlich hast du den Standardeditor nicht umgestellt. (zB export EDITOR=<editordeinerwahl> in .bashrc hinzufügen)

    http://www.kernel.org/pub/software/scm/git/docs/git-commit.html#_environment_and_configuration_variables

    @DEvent
    Ich habe mir magit-status auf C-c m gelegt. Wenn ich mit magit interagieren will, dann springe ich zum status screen und wenn magit noch nicht gestartet ist, wird es automatisch geladen

    (autoload 'magit-status "magit" "git status" t)
    (define-key global-map "\C-cm" 'magit-status)

    Hier ist n magit screencast:
    http://www.vimeo.com/2871241



  • rüdiger schrieb:

    (autoload 'magit-status "magit" "git status" t)
    (define-key global-map "\C-cm" 'magit-status)

    Wenn du mir noch sagst, was ich damit machen soll 🙂



  • rüdiger schrieb:

    drakon schrieb:

    Das ist bestimmt nicht Vim. 😉 - Aber wahrscheinlich ist das von dem Programm her der Standardedtior, ja.

    Ne, wenn du git nicht explizit sagst etwas anderes zu benutzen, dann nimmt er den Standardeditor und ich gehe mal davon aus, dass du nicht explizit auf vim gestellt hast :). Vermutlich hast du den Standardeditor nicht umgestellt. (zB export EDITOR=<editordeinerwahl> in .bashrc hinzufügen)

    http://www.kernel.org/pub/software/scm/git/docs/git-commit.html#_environment_and_configuration_variables

    Ehm. Ich habe Windows XP und ich bezweifle, dass Vim da vorinstalliert ist, geschweige denn, dass ich den als Standareditor eingstellt habe. Vor allem, da ich den Heute das erste mal gesehen habe. 😉

    @DEvent
    Rein Befehle eintippen geht wahrscheinlich je nach dem schon schneller, aber wie siehts aus mit History anschauen? Oder mit Diffs auflösen? Das wirst du ja alles nicht in der Konsole machen..
    Oder aber auch Files auswählen, welche commitet werden. Ich würde da nicht jedes einzelne File dadurch auswählen wollen, indem ich den Namen eintipppen muss..



  • drakon schrieb:

    Ehm. Ich habe Windows XP und ich bezweifle, dass Vim da vorinstalliert ist, geschweige denn, dass ich den als Standareditor eingstellt habe. Vor allem, da ich den Heute das erste mal gesehen habe. 😉

    VIM kommt mit dem Mingw Git. Du kannst den Editor aber auch ändern (siehe Doku), oder mit -m eine Nachricht übergeben. Beispiel:

    git commit -a -m "This commit has a very nice commit message"
    

    Oder du verwendest ein GUI-Tool. Aber da kann ich nix empfehlen, weil das nicht meine Sache ist.



  • DEvent schrieb:

    rüdiger schrieb:

    (autoload 'magit-status "magit" "git status" t)
    (define-key global-map "\C-cm" 'magit-status)

    Wenn du mir noch sagst, was ich damit machen soll 🙂

    In die ~/.emacs schreiben. Vielleicht noch vorher mit (add-to-list 'load-path "PFAD") den Pfad zum load-path hinzufügen, wo du magit.el(c) installiert hast.

    drakon schrieb:

    rüdiger schrieb:

    drakon schrieb:

    Das ist bestimmt nicht Vim. 😉 - Aber wahrscheinlich ist das von dem Programm her der Standardedtior, ja.

    Ne, wenn du git nicht explizit sagst etwas anderes zu benutzen, dann nimmt er den Standardeditor und ich gehe mal davon aus, dass du nicht explizit auf vim gestellt hast :). Vermutlich hast du den Standardeditor nicht umgestellt. (zB export EDITOR=<editordeinerwahl> in .bashrc hinzufügen)

    http://www.kernel.org/pub/software/scm/git/docs/git-commit.html#_environment_and_configuration_variables

    Ehm. Ich habe Windows XP und ich bezweifle, dass Vim da vorinstalliert ist, geschweige denn, dass ich den als Standareditor eingstellt habe. Vor allem, da ich den Heute das erste mal gesehen habe. 😉

    Komisch, dann hast du irgend ein Git-Windows-Paket gezogen, wo wohl jemand Vim dazu gepackt hat. Hätte nicht gedacht, dass das jemand so etwas macht. Aber das hängt eben mit den Leuten zusammen, die das Paket gemacht haben und nicht mit git direkt.



  • Mr. N schrieb:

    drakon schrieb:

    Ehm. Ich habe Windows XP und ich bezweifle, dass Vim da vorinstalliert ist, geschweige denn, dass ich den als Standareditor eingstellt habe. Vor allem, da ich den Heute das erste mal gesehen habe. 😉

    VIM kommt mit dem Mingw Git. Du kannst den Editor aber auch ändern (siehe Doku), oder mit -m eine Nachricht übergeben. Beispiel:

    git commit -a -m "This commit has a very nice commit message"
    

    Oder du verwendest ein GUI-Tool. Aber da kann ich nix empfehlen, weil das nicht meine Sache ist.

    Klar kann ich was anderes nehmen. Werde ich auch, aber ich wollte da halt nur sagen, dass ich sowas einfach schreklich zu benutzen finde. Ich will nicht erst ein Manual lesen müssen, bevor ich einen Textedtior benutze.. 🙄

    @rüdiger
    Scheint so, ja. Ich habs von da:
    http://code.google.com/p/msysgit/



  • drakon schrieb:

    Rein Befehle eintippen geht wahrscheinlich je nach dem schon schneller, aber wie siehts aus mit History anschauen? Oder mit Diffs auflösen? Das wirst du ja alles nicht in der Konsole machen..
    Oder aber auch Files auswählen, welche commitet werden. Ich würde da nicht jedes einzelne File dadurch auswählen wollen, indem ich den Namen eintipppen muss..

    git mergetool öffnet dir ein Merge-Tool für jeden merge-Konflikt. git diff und git log ist in der Konsole auch ganz gut. git log --graph zeigt dir auch ein Graph der Branches und Logs an.

    Mit git config --global color.ui true hast du auch Farbe.


Anmelden zum Antworten