it-swarm-eu.dev

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

Ich kenne und benutze 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 meiner Meinung nach auch andere an dem Projekt arbeiten werden. Dies liegt hauptsächlich an den erstaunlichen Funktionen von git zum Verzweigen 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 für mich in Ordnung, 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, meinen eigenen Zweig zu erstellen, den Hauptzweig is mein Zweig. Ja, SVN bietet eine einfache Unterstützung für die Verzweigung, aber eine viel leistungsfähigere Unterstützung macht meines Erachtens keinen Sinn. Das Zusammenführen 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?

87
Anto

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

Willst du ein neues Projekt starten?

> git init

BAM! Sie müssen weder einen Repository-Server einrichten noch eine Ordnerstruktur einchecken, um Verzweigungen und Tags in ein Subversion-Repository zu unterstützen.

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

157
Spoike

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 benötigt weniger Speicherplatz (aufgrund des ineffizienten "Revisions" -Konzepts von SVN im Vergleich zu den Objekt-Snapshots von Git) und erfordert weniger Setup (git init versus ein Dutzend svnadmin Befehle und das Einrichten von Berechtigungen usw. ist einfacher zu sichern (git clone --bare [oder git Push Origin wenn Sie Github oder ähnliches verwenden] und Sie sind fertig) und verfügt über bessere Tools zum Verwalten Ihres Codes (die Verzweigung ist kostenlos und das Zusammenführen ist einfacher und sauberer). Nur weil niemand sonst 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 ist als die von SVN, mit größeren Belohnungen.

46
greyfade

Zu denken, dass Sie niemals Ihren eigenen Code verzweigen werden, ist ein wenig kurzsichtig. Ich habe meinen eigenen Code mehrmals verzweigt, insbesondere 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 einem Tool kann Ihnen das Leben wirklich erleichtern.

34
Berin Loritsch

Overkill ist reserviert, wenn durch die "Lösung" Kollateralschäden verursacht werden. Die Verwendung einer Waffe zum Töten einer Fliege bedeutet, dass die Kugel Schaden verursacht, wenn sie woanders hingeht. Es ist übertrieben. Die Verwendung von etwas Stärkerem als Notwendigem, das kein Problem verursacht, ist nicht übertrieben und kann eine gute Sache sein, wenn es Ihnen hilft, Ihren Entwicklungsprozess zu rationalisieren. Es verursacht keinen Schaden und ermöglicht es Ihnen, nur einen Satz Software anstelle von zwei zu aktualisieren. Warum also zwei statt eines Systems?

9
stonemetal

Ich benutze Git für meine Ein-Mann-Projekte und ich liebe es. Ich habe zuvor Subversion verwendet und habe noch keinen Nachteil bei der Verwendung von Git gesehen. Es ist mächtiger, aber nicht so, dass einfache Dinge komplizierter werden. 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 gewünschte Funktion hinzuzufügen, und ihnen dann Pull-Anfragen gesendet. Ich finde es ziemlich cool, wenn jemand, der sich für meine Projekte interessiert, dasselbe tut.

7
dsimcha

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

  • Einfach aufzubauen und abzureißen. 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. Offline arbeiten zu können, ist für mich für ein Hobbyprojekt viel mehr von Vorteil als für die Arbeit. Ich muss kein Loch in meine Home-Firewall stecken oder ein Projekt öffentlich hosten. Ich kann vorübergehend ein Repo auf einen USB-Stick oder einen Laptop legen und trotzdem alles synchron halten.
  • Alles kolokalisiert. Wenn Sie das Repo und den Arbeitsbaum zusammen haben, können Sie kleine Projekte leichter verfolgen, beispielsweise bei Betriebssystem-Upgrades.
  • Leistungsstarke Funktionen. Klar, ich brauche nicht die ganze Zeit Strom, aber er ist da, wenn ich ihn brauche, und verbraucht keine Ressourcen, wenn ich ihn nicht brauche.
7
Karl Bielefeldt

Mir wurde gesagt, dass git-bisect ist wirklich gut, um das genaue Commit zu finden, das ein bestimmtes Verhalten eingeführt hat, indem Sie in Commits abhängig von Ihrer Eingabe hin und her navigieren.

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


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

6
user1249

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

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

2
Chris Moschini

Ich würde immer, immer, immer ein Versionskontrollsystem für jede Art von Entwicklungsprojekt verwenden. Groß oder klein spielt wirklich keine Rolle. Egal, ob ich zu Hause mit einer neuen Technologie spiele, einen kleinen Helfer schreibe, um mein Leben zu erleichtern, oder mich in einem großen und verteilten Team professionell entwickle - 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 das Einrichten eines Git-Repositorys (oder sogar eines lokalen Subversion-Repositorys) ist keine große Sache. Und bevor Sie es wissen, möchten Sie wissen, "verdammt noch mal, was war der Inhalt von Datei X letzten Freitag?". Ohne Versionskontrolle - viel Glück ;-)

Es ist also wirklich egal, ob Sie Git oder SVN verwenden - ich persönlich beginne immer mehr Dinge von SVN auf Git zu migrieren, aber die Hauptsache ist, überhaupt die Versionskontrolle zu verwenden - auch für die kleinen Dinge.

2
perdian

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

1
wlangstroth

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, jedes Experiment zu beenden, wenn es sich als schlecht herausstellt.

Viele Entwickler sagen: Nun, 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 erinnern, welche Kopie für welche verwendet 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 mich zu fragen, ob ich es für ein Solo-Projekt verwenden soll, denke ich jetzt, was für eine Schande, dass ich das nicht früher entdeckt hatte.

0
WarrenT