Verwenden Sie ein verteiltes Versionskontrollsystem wie git und speichern Sie das Referenz-Repository auf Ihrem Computer mit freigegebenen Ordnern. Hier ist der Grund:
Jeder Klon ist ein Backup
Wenn die Serverfestplatte abstürzt, verfügt jeder über eine Kopie, die auf einem neuen Laufwerk oder Server bereitgestellt werden kann. Da Ihre Firma die Versionskontrolle nicht ernst meint, ist dies bei Backups wahrscheinlich nicht anders.
Gemeinsame Referenz
Wenn Sie ein Hauptrepository mit einem Hauptzweig haben, können Sie die Version ermitteln, die das letzte Wort enthält. Dies löst das Problem "Sie haben Ihre Änderungen gegen Francks Version getestet, aber hatten Sie auch John? Und wie haben Sie sie zusammengeführt?".
Liefern Sie bequemer
Der Kunde möchte heute eine Alpha-Version? Nun, Sie können testen, ob der Master stabil genug ist, und diesen ausliefern. Wenn dies nicht der Fall ist und Sie nicht die Zeit haben, es zu beheben, gehen Sie einfach in die Vergangenheit und holen Sie sich eine ältere, aber stabilere Version. Das können Sie nicht, wenn Sie nur die neueste Version haben.
Reise in die Vergangenheit und behebe deine Fehler
Ihre manuelle Zusammenführung hatte Probleme, die Sie erst nach ein paar Tagen sahen, aber Sie haben bereits den Inhalt Ihrer freigegebenen Ordner überschrieben? Ohne einen VSC haben Sie keine Vorgeschichte, so dass Sie nicht einfach zu einem Punkt zurückkehren können, an dem Sie die von Ihnen gemachten Fehler überprüfen und beheben können. Code ist nicht wie ein Bild, sondern wie ein Film: Er entwickelt sich mit der Zeit. Sie können ein Bild aus einem Film extrahieren. Sie können keinen Film aus einem Bild extrahieren.
Lokalisieren Sie Bugs einfacher
Es ist ein Fehler aufgetreten, den Sie jedoch zum Zeitpunkt der Einführung nicht wirklich bemerkt haben. Sie konnten ihn also nicht beheben, solange der Code "heiß" war. Jetzt wissen Sie nicht wirklich, welche Änderung sie eingeführt hat, sodass sie von verschiedenen Stellen im Code stammen kann. Es wird Stunden dauern, um herauszufinden, wo Sie suchen müssen. Mit git hätten Sie einfach einen Test entwickeln können, git bissect
um festzustellen , ob der Fehler in einer bestimmten Version auftritt, und anhand dessen Sie das genaue Commit ermitteln können, das den Fehler verursacht hat. Anstatt nach Tausenden von Codezeilen zu suchen, wissen Sie jetzt, dass sich diese 10 Zeilen ändern, und Sie können den Test in Ihrer Testsuite behalten, um sicherzustellen, dass der Fehler nicht erneut auftritt.
Jeder Entwickler ist für seine eigene Arbeit verantwortlich
Wenn Sie der Teamleiter sind und kein VCS haben, müssen Sie höchstwahrscheinlich die Drecksarbeit erledigen, die Zusammenführungen. Wenn Sie es alleine machen, wissen Sie wahrscheinlich nicht alles über alle Änderungen und können Fehler verursachen. Im Gegenteil, wenn Sie immer die Personen, die den Code geschrieben haben, bitten, sich bei jeder Code-Zusammenführung mit Ihnen zu versammeln, wird diese Zeit nicht dazu verwendet, neuen Code zu erstellen.
Mit einem VCS muss sich der Entwickler in einem einfachen Workflow nur um seine Arbeit und eine externe Änderungsquelle kümmern: den Master-Zweig. Es können 1 oder 100 Personen in der Hauptniederlassung sein, das ist dasselbe. Um Änderungen vornehmen zu können, muss er sie an die neuesten Änderungen anpassen, die von anderen vorgenommen wurden. Es scheint, als würde es länger dauern, den Code zu pushen, aber das liegt daran, dass Sie auch die Zusammenführung durchführen, die ohnehin einige Zeit in Anspruch genommen hätte.
Der Unterschied besteht darin, dass die Zusammenführung von der Person vorgenommen wird, die die Änderungen vorgenommen hat. Diese Person kennt den Code am besten, weil sie ihn geschrieben hat.
Wer hat diesen Code geschrieben?
Es gibt diesen Fehler hier, aber wer hat diese bestimmte Codezeile geschrieben? Es ist schwer zu merken, besonders wenn das Projekt mehrere Monate dauert. git blame
hätte dir gesagt, wer und wann diese Zeile geschrieben wurde, also kannst du die richtige Person fragen, und es gibt kein "Ich erinnere mich nicht, dass ich das geschrieben habe".
Das Projekt wird größer
Der Kunde möchte mehr Funktionen und Sie sind ein Team zu klein, Sie benötigen einen anderen Entwickler. Wie bewältigen Sie die erhöhte Zusammenführungskomplexität ohne VSC?
Dringende Änderungen
Der Kunde hat angerufen und um eine kritische Fehlerbehebung für die Produktion gebeten, aber Sie haben gerade an einer neuen Funktion gearbeitet. Sie müssen nur git stash
Ihre Änderungen beiseite legen oder in einer neuen Filiale festschreiben und die Änderungen vorantreiben, und schon können Sie an der dringenden Lösung arbeiten, ohne befürchten zu müssen, Ihre ausstehende Arbeit zu verlieren.
Es hat vor 10 Minuten funktioniert
Sie nehmen einige Änderungen vor Ort vor und etwas, das vor 10 Minuten funktioniert hat, funktioniert nicht mehr. Ohne ein VCS starrst du entweder auf den Code oder machst bestenfalls eine Kopie der Referenzversion und diff, um zu sehen, was du änderst. Oh warte, die Referenz hat sich geändert, seit ich angefangen habe zu arbeiten, also kann ich nicht mehr unterscheiden. Und ich dachte nicht daran, eine makellose Kopie des Codes aufzubewahren, auf dem ich meine Änderungen basierte.
Mit einem VCS machen Sie einfach etwas wie git diff
sofort und haben Ihre Änderungen im Vergleich zur richtigen Version des Codes, auf dem Sie basieren.
Ich muss meine Debug-Protokolle aufbewahren
Also bist du ein böser Kerl und benutzt keine Protokollierung? Sie mussten printf
s in all Ihre Codebasis streuen, bis Sie all diese Teile dieses bösen Insekts gefunden haben? Jetzt haben Sie einen gefunden, den Fehler behoben, möchten aber Ihren sorgfältig ausgearbeiteten Debugging-Code beibehalten, um verbleibende Probleme zu beheben.
Ohne ein VCS müssen Sie entweder die Dateien kopieren, den Debugging-Code (der möglicherweise einige Bearbeitungsfehler hinzufügt) löschen, diesen pushen und Ihre gesicherten Dateien zurückschreiben. Oh, aber es scheint, als wäre trotzdem ein Debug-Code reingekommen.
Mit git git add --patch
wählen Sie einfach die wenigen Codezeilen aus, die Sie in Ihr Commit einfügen möchten, und können nur diese festschreiben . Dann nehmen Sie Ihre Arbeit wieder auf und haben immer noch Ihren Debugging-Code. Sie mussten den Code nicht berühren, daher kein Kopier- / Einfügefehler.
Der große Schlammball
Ohne ein VCS arbeiten die Leute auf ihrer Seite und geben Ihnen eine Reihe von Änderungen, manchmal ohne Beziehung. Wenn zu viel Code zum Überprüfen vorhanden ist, ist es schwierig, einen Fehler zu finden.
Mit einem VCS können Sie kleine, inkrementelle Änderungen vornehmen und ein Änderungsprotokoll erstellen. Das Changelog ist wichtig: Die Leute müssen dort erklären, warum sie die Änderung vornehmen , nicht was die Änderung ist ( welche Frage wird bereits durch die Codeänderung selbst beantwortet). Das heißt, wenn Sie beispielsweise einen Code einer neuen Funktion überprüfen, müssen Sie nicht viele nicht zusammenhängende gemischte Änderungen wie nicht zusammenhängende Bugfixes lesen. Dies hilft, sich auf den Code zu konzentrieren, den Sie interessieren.
Wenn ich dir 1 zu 1 100 Kartoffeln gebe und eine verfault ist, wirst du sie sofort finden. Wenn ich jetzt 100 Kartoffeln vor dir abwerfe und dich bitte, die faule zu finden, ist das nicht die gleiche Aufgabe.
Vertiefung
Ich hoffe, Sie haben eine gute Kodierungsrichtlinie. Andernfalls werden Änderungen an Einrückungen verrückt, wenn Sie von Hand zusammenführen. Natürlich können Sie Leerzeichen in den Änderungen ignorieren (aber nicht in Sprachen, wenn Einrückungen zählen, wie Python). Aber dann werden Sie merkwürdig aussehenden Code schwer zu lesen bekommen.
Sie sind der Projektleiter
Wenn Sie der Anführer sind, bedeutet dies, dass Sie die Schuld bekommen, wenn die Dinge nicht funktionieren. Wenn Sie sich mit der Situation nicht vertraut machen können, weil Ihr Chef immer noch nicht versteht, dass es sich lohnt, das richtige Werkzeug für den richtigen Job zu verwenden, dann würde ich mich zumindest weigern, der Anführer eines vorhersehbaren Fehlers zu werden.