Wie verwenden professionelle Anwendungsentwickler Versionskontrollsysteme wie GIT und Subversion?

9

Ich bin ein Anfänger-Entwickler und habe mich von Anfang an gefragt, wie professionelle Tools wie GIT und Subversion (ich habe kein sehr gutes Verständnis für diese Tools) die Anforderungen ihres Projekts erfüllen können. Wenn sie es benutzen, wie würde ich so etwas einrichten?

Meine Bewerbungen sind nicht so groß und ich arbeite noch nicht in einem Team. Würden sie mir sehr helfen?

Auf dieser Website gibt es Fragen zur Verwendung der Tools, aber ich benötige Unterstützung für Anfänger.

Wolfi
quelle
5
Git und Subversion werden mit Anweisungen geliefert. Sie sind im Grunde ein Repository, in dem Entwicklungscode strukturiert gespeichert wird. Einzelne Entwickler profitieren von einer vollständigen Aufzeichnung der Codeänderungen und einer robusten Sicherungsfunktion. Projektteams profitieren von der Möglichkeit, dasselbe Quellcode-Repository gemeinsam zu nutzen und Änderungen zwischen Arbeitsstationen synchron zu halten.
Robert Harvey

Antworten:

13

Die Quellcodeverwaltung ist allgegenwärtig - man könnte sogar sagen, dass Sie sich nicht als professioneller Entwickler bezeichnen können, wenn Sie sie nicht verwenden. Selbst wenn Sie sich alleine entwickeln, bietet die Quellcodeverwaltung noch einige Vorteile. Am Ende bietet es sowohl einen Verlauf als auch einen umfangreichen Rückgängig-Pfad. Sie können auch viel mehr experimentieren, da Sie sicher sind, dass Sie jederzeit zu dem zurückkehren können, was Ihnen zuvor gefallen hat, wenn Ihnen die neue Version nicht gefällt.

Trotzdem variieren die Workflows selbst innerhalb eines Versionsverwaltungssystems wie Subversion oder Git von Team zu Team erheblich. Der beste Ausgangspunkt ist wahrscheinlich, ein Versionsverwaltungssystem auszuwählen und sich mit dessen Standard-Workflows vertraut zu machen (im Kopf zu behalten, dass Sie während Ihres Berufslebens die Workflows wechseln müssen).

Für den Einstieg würde ich Git empfehlen. Ich bin ein Git-Fan, aber wenn Sie sich für Git entscheiden, können Sie zunächst ohne Server arbeiten und nur dann einen Server einrichten, wenn dies für Sie sinnvoll ist. Subversion erfordert andererseits einen Server, und das Einrichten eines Servers ist zwar nicht besonders schwierig, aber entmutigend, wenn Sie mit solchen Dingen nicht vertraut sind.

Hier ist ein guter Überblick über einige gute Faustregeln für die Quellcodeverwaltung im Allgemeinen: http://scottonwriting.net/sowblog/archive/2008/11/13/163320.aspx

Wenn Sie alleine arbeiten, benötigen Sie nicht viel Workflow. Früh festlegen, häufig festlegen. Wenn Sie mit der Einführung von Versionen beginnen, markieren Sie Ihre Releases. Erstellen Sie Zweige für Experimente oder lange abweichende Arbeiten (Git macht dies billiger und einfacher als Subversion).

Michael
quelle
1
Gute Antwort bis auf einen Punkt. Ich würde definitiv keine Subversion auswählen, die einen Server benötigt, da dies der größte Nachteil ist, auch weil ich ihn tatsächlich ziemlich oft ohne einen verwendet habe. Das Repository kann sich in einem lokalen Verzeichnis befinden und dann ist das Setup ein einzelner Befehl. Der Hauptunterschied zwischen Git und Subversion besteht darin, dass die verteilten Systeme wie Git viel flexibler sind als die zentralisierten wie Subversion.
Jan Hudec
5

Mit Quellcodeverwaltungssystemen (SVN, Git usw.) können Sie auf einer sehr vereinfachten Ebene den Änderungsverlauf von Dateien beibehalten. Auf diese Weise können Sie sehen, wie sich Ihr Code im Laufe der Zeit geändert hat, und Änderungen rückgängig machen, die Sie möglicherweise nicht möchten (z. B. funktioniert die Änderung nicht wie erwartet, Sie können den Code in einen zuvor bekannten Zustand zurücksetzen). Dies ist etwas, das selbst für Sie von unschätzbarem Wert ist, sobald Sie es verwenden.

Sobald Sie mit anderen Personen in einem Team zusammenarbeiten, erhöhen sich die Vorteile noch mehr, da mehrere Personen dieselbe Datei ändern können. Wenn die Änderungen nicht in Konflikt stehen (z. B. wenn zwei Personen unterschiedliche Abschnitte der Datei ändern), werden die Änderungen zusammengeführt automatisch. Wenn es Konflikte gibt, können Sie Ihre Änderungen neben Ihren Kollegen sehen und mit ihnen besprechen, wie die Änderungen zusammengeführt werden können.

Sie können auch Snapshots der Codebasis (normalerweise als Tag bezeichnet) erstellen, wenn Sie eine Version des Codes veröffentlichen, damit Sie Probleme problemlos beheben können, obwohl die Hauptquelle mit neuen Funktionen fortgefahren ist, die möglicherweise noch nicht veröffentlicht wurden.

Hier sind einige nützliche Ressourcen:

Starten und Ausführen von Subversion und Tortoise SVN mit Visual Studio und .NET

Versionskontrolle mit Subversion

Trevor Pilley
quelle
1
Keine +1 geben, weil das Erlernen von Subversion als erstes System heutzutage kontraproduktiv ist, wenn alle auf verteilte Systeme umsteigen.
Jan Hudec
3

Tutorials für Anfänger

Es gibt großartige Tutorials (Video und Text), die Ihnen helfen können, von einer sehr einfachen Ebene aus zu beginnen. Git scheint einen großartigen Ansatz zu haben, um das Thema für Anfänger auf sanfte Weise einzuführen. Er erklärt Ihnen zuerst das Warum und verwendet Wiederholungen, Definitionen und Grafiken, um sich an die Namen und Funktionen von Tastenbefehlen zu erinnern.

SVN

SVN sollte CVS besser gemacht werden. CVS (Concurrent Version System) arbeitete jeweils an einer Datei, SVN arbeitete normalerweise an einem Verzeichnis oder einer Verzeichnisstruktur. SVN (und CVS oder andere Systeme) können wichtig sein, wenn Sie es bei der Arbeit verwenden. Meiner Meinung nach verbessern wir jedoch alle paar Jahre unser Verständnis für die Quellcodeverwaltung erheblich, so wie Sie ein spätes Modell bevorzugen würden Computer sollten Sie ein spätes Modell Quellcodeverwaltungstool bevorzugen. Es ist eine enorme Investition, Systeme zu ändern, und der Codeverlauf kann verloren gehen, obwohl es für viele Systeme Konverter gibt, mit denen Sie Ihren Code sowie den Verlauf und andere Artefakte, die durch das System im Ruhestand erstellt wurden, migrieren können.

Professionelle Quellcodeverwaltung erfüllt professionelle Anforderungen

Ihre Frage "Wie setzen Profis Tools wie GIT und Subversion ein, um die Anforderungen ihres Projekts zu erfüllen?" hängt eng mit der Frage zusammen: "Wie arbeiten Teams zusammen, ohne sich gegenseitig in die Quere zu kommen, während sie noch so schnell wie möglich arbeiten?"

Der Code ändert sich häufig, da einige Entwickler Code erstellen, den andere Entwickler verwenden, und eine Vielzahl von Stakeholdern unterschiedliche Stabilitäts- und Innovationsniveaus benötigen. Versionsverwaltungssysteme helfen, indem sie Code zur Verwendung durch das Team speichern und jede Änderung im Kontext mit Versionen halten, die sich mit der Zeit ändern, und häufig auch mit Zweigen, die kontrollierte Kopien des Codes sind, die dazu dienen, Gruppen von Änderungen von anderen Gruppen von Änderungen zu isolieren.

Das Zusammenführen der Dinge und das Zusammenführen der Arbeit vieler Teammitglieder ist eine Aufgabe, die in SVN und älteren Systemen zentralisiert und schwierig war. Für Teams, die Git verwenden, wird das Zusammenführen einfacher und für den Einfluss des gesamten Teams zugänglicher als für einige wenige Experten. In SVN konnte das Verzweigen eine persönliche Angelegenheit sein, aber das Zusammenführen hatte oft schmerzhafte Auswirkungen auf das Team, und das Zurückschieben von Code in die Hauptzeile konnte unter dem Gesichtspunkt der Erlaubnis, der Vermeidung von Brüchen und des für die Aufgabe erforderlichen Aufwands schmerzhaft sein .

Über ein etabliertes Quellcodeverwaltungs-Repository können Fachleute andere Anforderungen erfüllen, z. B. die Diagnose von Problemen anhand ihrer Grundursache. Wenn es Versionen des Codes gab, die früher funktionierten, und neu gefundene Probleme, die in der aktuellen Version auftreten, ist es möglich, im Verlauf vorwärts und rückwärts zu gehen, um genau zu bestimmen, wann das Problem aufgetreten ist. In SVN ist diese Funktion noch nicht ausgereift, aber in Git wird die Suche nach der letzten funktionierenden / ersten fehlerhaften Version durch einen Befehl namens git bisect unterstützt. Das Problem wird durch eine der Quelländerungen zwischen den beiden Versionen verursacht, was möglicherweise eine viel einfachere Diagnose darstellt als eine Suche in der gesamten Codebasis.

Es tut uns leid, aber ich hoffe, dies hilft Ihnen auf Ihrem Weg zur Verwendung der Quellcodeverwaltung.

DeveloperDon
quelle
0

Mein Team verwendet ein selbst entwickeltes Team-Versionskontrollsystem. (Leider scheint Git noch nicht mit "nativen" IBM i-Quelldateien zu funktionieren.) Aber persönlich, nachdem ich die Quelle von diesem System abgerufen habe, verwende ich Git während meiner Entwicklung, bis das Projekt abgeschlossen ist und ich es wieder in die einchecke Team VCS.

Wie sie bei der Abstimmung sagen ... früh verpflichten, oft verpflichten. Während ich an neuen Funktionen arbeite, verpflichte ich mich. Ich verpflichte mich zwischen Kompilierungen und bei jedem Versuch, Compilerfehler zu korrigieren, jedes Mal, wenn ich während des Testens und Debuggens Änderungen vornehme. Dies macht es einfacher, mehrere Variationen eines Themas auszuprobieren und es bei Bedarf einfach wieder zu entfernen, insbesondere wenn eine Änderung über mehrere Dateien hinweg koordiniert wird.

Git hat meine Herangehensweise an die Entwicklung verbessert.

WarrenT
quelle
'Git scheint noch nicht auf "nativen" IBM i-Quelldateien zu funktionieren)' - Git sollte auf jeder Datei funktionieren. Was ist das Problem hier?
Marnen Laibow-Koser
@ MarnenLaibow-Koser Die meisten IBM i-Entwickler arbeiten mit Quelldateien mit dem sogenannten nativen (Legacy-) Dateisystem QSYS, bei dem Quelldateien ein integriertes Format fester Länge haben. Jede Zeile beginnt mit einer 6-stelligen Sequenznummer, einem 6-stelligen Änderungsdatum und der Quellcode-Textzeile. Reihenfolge und Änderungsdatum können sich ändern, obwohl sich der Quellcode in einer Zeile nicht geändert hat. Lösungen wurden möglicherweise in jüngerer Zeit entwickelt. IBM und andere unterstützen jetzt Git auf IBM i. Und es sollte kein Problem mit der Quelle in "normalen" Stream-Dateien in anderen IFS-Dateisystemen unter IBM i sein.
WarrenT
Oh Gott, ich erinnere mich vage daran, dass ich vor 20 Jahren AS / 400 entwickelt habe. Aber ich denke, es gibt keinen Grund, warum Git mit solchen Dateien nicht funktionieren würde. Möglicherweise müssen Sie einen Zusammenführungstreiber schreiben, der die Zeilennummern reduziert, dies sollte jedoch einfach sein. (Ich frage mich, ob IBM das getan hat ...)
Marnen Laibow-Koser
Wenn Sie jedoch die Zeilennummern und das Datum des Zeilenwechsels entfernen, haben Sie sie verloren, wenn Sie etwas aus Git zurückchecken. Es ist nicht einfach, einige Leute davon zu überzeugen, dass sie diese Daten nicht mehr benötigen, nachdem sie sich vielleicht drei Jahrzehnte lang auf sie verlassen haben. Ja, ich weiß, dass Git-Schuld das Gleiche bietet, aber die Leute zögern, etwas aufzugeben, von dem sie so lange abhängig waren, auch wenn es nicht unbedingt ein logisches Argument ist.
WarrenT
Sie könnten tatsächlich einen Git-Clean / Smudge-Filter erstellen, um das Datum von Git-Schuld wiederherzustellen. :)
Marnen Laibow-Koser