Git für persönliche (Ein-Mann-) Projekte. Overkill?

84

Ich kenne und verwende zwei Versionskontrollsysteme: Subversion und Git. Subversion wird ab sofort für persönliche Projekte verwendet, bei denen ich der einzige Entwickler bin, und Git wird für Open-Source-Projekte und Projekte verwendet, bei denen meines Erachtens andere ebenfalls an dem Projekt arbeiten werden. Dies liegt hauptsächlich an den erstaunlichen Möglichkeiten von git zum Forken und Zusammenführen, bei denen jeder an seinem eigenen Zweig arbeiten kann. sehr praktisch.

Jetzt benutze ich Subversion für persönliche Projekte, da ich denke, dass git dort wenig Sinn macht. Es scheint ein bisschen übertrieben zu sein. Es ist in Ordnung für mich, wenn es zentralisiert ist (normalerweise auf meinem Heimserver), wenn ich der einzige Entwickler bin. Ich mache sowieso regelmäßige Backups. Ich brauche nicht die Fähigkeit, einen eigenen Zweig zu gründen, der Hauptzweig ist mein Zweig. Ja, SVN hat eine einfache Unterstützung für Verzweigungen, aber eine viel leistungsfähigere Unterstützung macht meiner Meinung nach keinen Sinn. Verschmelzung kann ein Schmerz sein, oder zumindest aus meiner kleinen Erfahrung.

Gibt es einen guten Grund für mich, git für persönliche Projekte zu verwenden, oder ist es einfach übertrieben?

Anto
quelle
61
Nein, ich benutze git und hg für persönliche Projekte. Lokale Revisionskontrolle ist ein Glücksfall.
wkl
7
Git ist in vielerlei Hinsicht besser für alle Projekte, egal ob sie eine große Anzahl von Mitwirkenden haben oder nicht: git komprimiert Inhalte viel, viel effizienter als svn (und ist um Größenordnungen schneller!), Git macht Backups trivial und git nicht ein Hindernis sein, wenn jemand anderes dazu beitragen will.
Artefact2
4
Ich verwende die Versionskontrolle, um meinen Code entweder an Github oder Bitbucket zu senden, er dient als Backup für mich, und vielleicht schreibe ich eines Tages tatsächlich etwas, an dem die Leute wirklich interessiert sind.
Mahmoud Hossam
8
"Ich brauche nicht die Fähigkeit, meinen eigenen Zweig zu gründen, der Hauptzweig ist mein Zweig." Viele Leute sagten dasselbe, undoals es sich um eine relativ neue Funktion in Anwendungen handelte. Jetzt merkt jeder, dass er es die ganze Zeit gebraucht hat. Sie müssen sich verzweigen, Sie wissen es einfach nicht.
Dan Rosenstark
1
@rtperson Ja, das kannst du, aber ich mag Quecksilber mehr, obwohl ich Github mehr mag als Bitbucket.
Mahmoud Hossam

Antworten:

155

Es ist nicht übertrieben. Der Hauptgrund, warum ich angefangen habe, Git und Mercurial über Subversion für persönliche Projekte zu verwenden, ist, dass das Initiieren eines Repositorys so viel einfacher ist.

Willst du ein neues Projekt starten?

> git init

BAM! Es ist nicht erforderlich, einen Repository-Server einzurichten oder eine Ordnerstruktur einzuchecken, um das Verzweigen und Markieren in ein Subversion-Repository zu unterstützen.

Das spätere Teilen Ihres Projekts ist nur eine Frage von: git push(außer einem Remote-Repository). Versuche das schnell mit Subversion zu machen!

Spoike
quelle
24
Akzeptiert. Ich hätte nicht falscher sein können als das;)
Anto
7
Steve341: Normalerweise behalte ich alle Quellcode-Projekte in einem Ordner mit dem Namen "projects". Dort behalte ich alle Repositorys, eines für jedes Quellcode-Projekt. Ich musste nie mehrere Projekte zusammen in ein und demselben VCS-Repository verfolgen. Dafür gibt es Abhängigkeitsmanagementsysteme wie Ivy oder Maven.
Spoike
3
@ Steve341 Wie ist es schwer, den Überblick zu behalten? Sie haben nur einen Ordner, der alle Ihre Repos enthält. Es ist nicht anders als Ihr System, abgesehen von der Tatsache, dass Ihr System eine extrem schlechte Praxis ist, wenn Sie Git verwenden ...
Alternative
2
@ Steve314:echo 'for dir in projects/*; do cd "$dir"; git push; cd ..; done' > update_all; chmod +x update_all
André Paramés
2
git initund bam! Oh ja und dann cp ../the-other-project/.gitignore .vor dem ersten Commit. Bam!
Dan Rosenstark
46

Ich würde behaupten, dass die Verwendung von Subversion für lokale persönliche Projekte übertrieben ist, während Git dies definitiv nicht ist. Git nimmt weniger Platz in Anspruch (aufgrund des ineffizienten "Revisions" -Konzepts von SVN im Vergleich zu Gits Objekt-Snapshots), erfordert weniger Setup (im git initVergleich zu einem Dutzend svnadminBefehlen und dem Einrichten von Berechtigungen usw.) und ist einfacher zu sichern ( git clone --bare[oder git push originwenn Sie Github verwenden) o.ä.] und Sie sind fertig) und haben bessere Tools für die Verwaltung Ihres Codes (die Verzweigung ist kostenlos und das Zusammenführen ist einfacher und sauberer). Nur weil niemand anderes einen Klon Ihres Repositorys hat, bedeutet dies nicht, dass die Vorteile eines DVCS "übertrieben" sind.

Außerdem würde ich sagen, dass die Verzweigungsunterstützung von Git weniger komplex als die von SVN ist und größere Belohnungen bietet.

greyfade
quelle
Ich denke, ich hätte "leistungsstark" anstelle von "komplex" verwenden sollen
Anto
3
@ Anto: Egal. Ich würde im Grunde immer noch dasselbe sagen: Gits überlegene Verzweigung hat einfach keine Nachteile im Vergleich zu SVN.
greyfade
3
Git "verschmutzt" auch nicht Ihren Quellbaum mit Verfolgungsdateien in jedem Unterverzeichnis.
WarrenT
4
@WarrenT Der Source Tree "Pollution" tritt in svn-Versionen 1.7 und höher nicht auf.
Pllee
4
Das Erstellen eines Dateisystem-Repositorys in Subversion besteht aus einem Befehl ( svnadmin createplus einem Befehl zum erstmaligen Auschecken oder Importieren), ohne dass Berechtigungen eingerichtet werden müssen und so weiter. Ich bestreite nicht, dass Git oft ein besseres Tool ist, aber Ungenauigkeiten in Bezug auf Subversion sind nicht hilfreich.
Josh Kelley
34

Zu denken, dass Sie niemals Ihren eigenen Code verzweigen werden, ist ein wenig kurzsichtig. Ich habe meinen eigenen Code mehrmals verzweigt, besonders als ich mit einem neuen Ansatz experimentierte, von dem ich noch nicht ganz überzeugt war. Sie werden schließlich die Funktion wollen.

Dies kommt von einem langjährigen Subversion-Benutzer. Die Konsolidierung auf ein Tool kann Ihnen das Leben erheblich erleichtern.

Berin Loritsch
quelle
2
Ja, ich glaube, das ist der Punkt der Verzweigungen, des Experimentierens. Das war meine erste Reservierung, als ich Ops Frage las. Wenn Sie nicht in Ihrem Repository verzweigen, "verzweigen" Sie in Ihrem Kopf, und dies ist nur sinnlos, wenn Sie die Versionskontrolle eingerichtet haben.
Chris
3
Sie können mit Subversion verzweigen. Und verschmelzen. Art von. Das einzige Mal, als ich es versuchte, hatte ich ein beschädigtes Repository, mit dem ich nicht mehr arbeiten konnte, und das Wiederherstellen von einem Backup (mit dem bereits angewendeten Zweig) half nicht starte ein neues repository ... aber ich habe das auf den umstieg von 1.4. auf 1,5 (ich denke - es war vor ein paar Jahren). Wahrscheinlich funktioniert das Verzweigen und Zusammenführen wirklich. Wenn Sie mutig genug sind, es zu versuchen. Wenn ich damals von svn dump gewusst hätte, hätte ich das Problem natürlich mit einigem Aufwand beheben können.
Steve314
@ Chris, ich habe gerne eine funktionierende Version, auf die ich jederzeit zurückgreifen kann. Sicher, Sie können dies mit Tags erreichen, aber manchmal ist eine Verzweigung durchaus sinnvoll. Vergessen Sie auch nicht die anderen Vorteile von git / mercurial.
Berin Loritsch
9

Übermaß ist vorbehalten, wenn durch die "Lösung" ein Kollateralschaden entsteht. Wenn Sie eine Fliege mit einer Waffe töten, bedeutet dies, dass die Kugel Schaden an einem anderen Ort verursacht. Es ist übertrieben. Etwas Stärkeres als das Notwendige zu verwenden, das kein Problem verursacht, ist nicht übertrieben und kann eine gute Sache sein, wenn es Ihnen hilft, Ihren Entwicklungsprozess zu rationalisieren. Dies schadet nicht und ermöglicht es Ihnen, nur einen Satz von Software anstelle von zwei zu aktualisieren. Warum also zwei Systeme statt eines?

Steinmetalle
quelle
Es könnte übertrieben sein (ja, mit dieser Definition), wenn das System Ihnen in die Quere kommt. Ich frage mich, ob es eine gute Idee ist, Git für persönliche Projekte zu verwenden. Könnten Sie mir bitte sagen, welche spezifischen Vorteile es gibt? Diese Antwort spricht das nicht an. Ich sehe git als ein mächtigeres System und zu mächtig für persönliche Projekte. Das muss aber nicht unbedingt schaden, solange es dir nicht in den Weg kommt. Könnten Sie vielleicht Ihre Antwort erweitern?
Anto
1
Overkill wird auch verwendet, wenn der Aufwand zum Auftragen der Lösung unverhältnismäßig ist. Wenn Sie Subversion bereits für lokale Projekte verwenden, ist der Aufwand zum Erlernen von Git oder was auch immer möglicherweise zu hoch. Oder vielleicht eine nützliche Lektion, um übertragbare Fähigkeiten zu entwickeln. Ich persönlich benutze immer noch Subversion - es hat mich ein paar Mal gebissen, aber nur kleine Narben hinterlassen. Ich bin daran interessiert, Git zu lernen, aber jedes Mal, wenn ich mich umsah, waren die Tutorials, die ich fand, kryptisch oder ich konnte keine stabilen Tools für Windows bekommen, oder es gab eine andere Straßensperre, die alles so aussah, als wäre es übertrieben.
Steve314
7

Ich benutze Git für meine Ein-Mann-Projekte und ich liebe es. Ich habe zuvor Subversion verwendet und bisher noch keinen Nachteil bei der Verwendung von Git festgestellt. Es ist mächtiger, aber nicht in einer Weise, die einfache Dinge komplizierter macht. Machen Sie einfache Dinge unnötig kompliziert / teuer / langsam / etc. ist meiner Meinung nach eine notwendige Bedingung, um etwas Overkill zu nennen. Außerdem habe ich auf Github die früheren Ein-Mann-Projekte anderer Leute gegabelt, um eine Funktion hinzuzufügen, die ich wollte, und ihnen dann Pull-Anfragen gesendet. Ich finde es ziemlich cool, wenn jemand, der sich für meine Projekte interessiert, das Gleiche tut.

dsimcha
quelle
7

Ich habe die Quellcodeverwaltung vor DVCS noch nie für persönliche Projekte verwendet, daher ist es etwas seltsam, sich vorzustellen, dass jemand die gegenteilige Ansicht vertritt. Einige meiner Gründe sind:

  • Einfach auf- und abzubauen. Zum Beispiel hat mir ein Kollege letzte Woche ein Programmierpuzzle gegeben, das ich in mehreren kleinen Schritten gelöst habe. Ich machte ein Git-Repo, das 45 Minuten dauerte, um meine Arbeit zu halten, und dann war es weg. Ich weiß nicht, wie einfach so etwas in Subversion ist, aber ich habe noch nie von jemandem gehört, der es tut.
  • Getrennt. Für mich ist die Möglichkeit, offline zu arbeiten, für ein Hobbyprojekt viel mehr ein Vorteil als für die Arbeit. Ich muss kein Loch in meine Heim-Firewall stechen oder ein Projekt öffentlich hosten. Ich kann ein Repo vorübergehend auf einem USB-Stick oder einem Laptop ablegen und trotzdem alles synchronisieren.
  • Alles zusammen. Wenn Repo und Arbeitsbaum zusammenarbeiten, ist es für kleine Projekte einfacher, den Überblick zu behalten, wenn beispielsweise das Betriebssystem aktualisiert wird.
  • Leistungsstarke Funktionen. Klar, ich brauche die Energie nicht die ganze Zeit, aber sie ist da, wenn ich sie brauche, und verbraucht keine Ressourcen, wenn ich sie nicht brauche.
Karl Bielefeldt
quelle
6

Mir wurde gesagt, dass dies git-bisectsehr hilfreich ist, um das genaue Commit zu finden, das ein bestimmtes Verhalten ausgelöst hat, indem Sie je nach Eingabe in Commits vor- und zurücknavigieren.

Sie werden das eines Tages für Dinge tun müssen, die Sie einfach nicht herausfinden können, was passiert ist.


BEARBEITEN: Auch die Fähigkeit zum Verzweigen ist sehr wichtig, wenn Sie in alten Versionen, die Kunden verwenden, Bugfixes durchführen müssen. Sie müssen in der Lage sein zu verwalten, "nur dieses winzige Problem zu beheben, aber ich möchte nicht die neueste Version, weil ich es jetzt nicht noch einmal testen möchte".


quelle
2

Es hängt davon ab, wie ernst Sie es mit der Versionierung Ihres eigenen Codes nehmen möchten. Wenn Sie beispielsweise eine einfache Bibliothek erstellen, die immer nur die aktuelle Version enthält (oder so lange dies zutrifft), würde ich persönlich nur eine einfache Sicherungsoption wie Dropbox verwenden. Wenn Sie Ihren gesamten Code verlieren, können Sie ihn aus dem Internet wiederherstellen, und Dropbox bietet ein 30-Tage-Backup, falls Sie wirklich etwas Dummes tun.

Wenn Sie zum Beispiel Produktions- und Entwicklungszweige pflegen müssen, ist git ein großartiges Tool - und verdammt viel schneller als svn. Beachten Sie jedoch das Risiko eines Festplattenausfalls, wenn Sie die Daten nur lokal speichern.

Chris Moschini
quelle
1
Ja, ich benutze DropBox für persönliche Projekte. Die Versionierung ist bei weitem nicht so anspruchsvoll wie ein echter VCS , aber es ist für kleinere Projekte in Ordnung ich in meiner Freizeit tun, und es erfordert keine Aufmerksamkeit überhaupt (zB kein verpflichtet, Dateien nur aktualisieren , wie Sie an ihnen arbeiten..)
jhocking
ach und nebenbei, da ich Spiele entwickle, haben meine Projekte in der Regel viele Binärdateien (Bilddateien, Audioclips usw.) und die meisten Versionskontrollsysteme sind eigentlich nur für Quellcode gedacht.
jhocking
Git funktioniert gut mit Binärdateien, die Unterschiede sind weniger interessant. Glücklicherweise sind Unterschiede in Git nicht genau festgelegt. Wenn Sie ein beliebtes binäres Diff-Tool finden, können Sie es mit Git ganz einfach (von der Befehlszeile aus) verwenden
Chris Moschini,
Mir wurde gesagt, dass Git viel Speicherplatz für die Versionierung von Binärdateien verschwendet, aber was mir gesagt wurde, ist möglicherweise falsch. Grundsätzlich wurde mir gesagt, dass die meisten binären Assets (ich nehme an, nicht alle binären Dateien, sondern die Bilder und Sounds, die in ein Spiel einfließen) in jeder Version komplett neu gespeichert werden müssen und Git Ihre Festplatte mit dem lokalen Repository auffüllt.
jhocking
Es ist nur verschwenderisch, wenn Sie nicht vorhatten, die Binärdateien zu versionieren. Wenn Sie sie versionieren müssen, wird der Versionsverlauf nicht verschwendet. Ich denke, sie deuten versehentlich an, dass Git seinen Versionsverlauf beim Verfolgen von Binärdateien aufbläht - das ist falsch. git.wiki.kernel.org/index.php/GitSvnComparsion
Chris Moschini
2

Ich würde immer, immer, immer ein Versionskontrollsystem für jede Art von Entwicklungsprojekt verwenden. Groß oder klein ist wirklich egal. Ob ich zu Hause mit einer neuen Technologie spiele, einen kleinen Helfer schreibe, um mein Leben zu erleichtern, oder mich professionell in einem großen und verteilten Team weiterentwickle - ich möchte immer ein Versionskontrollsystem, das mich unterstützt.

Sicher, die meiste Zeit für kleine persönliche Projekte werden Sie die meisten Funktionen nicht nutzen, aber ein Git-Repository (oder sogar ein lokales Subversion-Repository) einzurichten ist keine große Sache. Und bevor Sie es wissen, werden Sie wissen wollen, "verdammt, was war der Inhalt von Datei X letzten Freitag?". Ohne Versionskontrolle - viel Glück ;-)

Es spielt also keine Rolle, ob Sie git oder SVN verwenden - ich persönlich beginne, immer mehr Dinge von SVN nach git zu migrieren, aber die Hauptsache ist, die Versionskontrolle überhaupt zu verwenden - auch für die kleinen Dinge.

perdian
quelle
1

Nur weil es niemand erwähnt hat: Für persönliche Projekte ist darcs wirklich gut und weniger involviert als git für die einfache Versionskontrolle. Es ist nicht so schnell für größere Projekte, aber Subversion auch nicht!

wlangstroth
quelle
1
Das hört sich irgendwie danach an, wie gut du Darcs kennst. Ich habe es nie benutzt, aber ich habe viel git benutzt. Für mich ist git sehr einfach, aber ich wette, ich würde mir den Kopf kratzen, wenn ich darcs verwenden würde.
Sam
1
Wenn Sie die verrückte Benutzeroberfläche von git bereits beherrschen, wären darcs ein Kinderspiel.
Wlangstroth
1
kannst du bitte erklären, warum darcs für kleine projekte besser ist als git?
Shabunc
0

Es kann ein starker mentaler Paradigmenwechsel sein, zu verstehen, dass wir experimentieren. Ein billiges / einfaches Tool, das dies unterstützt, verbessert Ihre Fähigkeit, sich vorwärts zu bewegen, zum Teil, weil es Ihre Fähigkeit verbessert, aus einem Experiment auszusteigen, wenn es sich als schlecht herausstellt.

Viele Entwickler sagen: Ich mache nur Kopien meines Codes. Diese Kopien werden jedoch schwierig zu verwalten und führen zu Unordnung. Sie haben mehrere Kopien und können sich nicht merken, welche für was kopiert wurde. Versuchen Sie dann herauszufinden, wann das Löschen sicher ist.

All dies wird noch wertvoller, wenn das Experiment koordinierte Änderungen über mehrere Dateien hinweg beinhaltet. Und wenn es sich um ein Solo-Projekt handelt, wird die Verwendung von Git noch einfacher.

Anstatt zu überlegen, ob ich es für ein Soloprojekt verwenden soll, denke ich jetzt, was für eine Schande, dass ich das nicht früher entdeckt hatte.

WarrenT
quelle
Sehen Sie sich