Beibehaltung des Versionsverlaufs der Versionskontrolle im Vergleich zu Refactoring und Dokumentation

11

Die Verwendung des vom Versionskontrollsystem verwalteten Festschreibungsverlaufs kostet fast nichts. Während eines größeren Projekts zur Umgestaltung (oder Reorganisation / Bereinigung) werden jedoch Funktionen und Klassen und sogar Namespaces verschoben. Manchmal werden mehrere Dateien zusammengeführt und andere Dateien werden aufgeteilt. Diese Änderungen führen häufig zum Verlust des ursprünglichen Festschreibungsverlaufs einiger Dateien.

Meiner persönlichen Meinung nach ist die Aufrechterhaltung der Organisation des Projekts wichtiger als die Aufrechterhaltung des Quellcodeverlaufs. Durch eine gute Projektorganisation können mit angemessenem Aufwand kontinuierlich neue Funktionen hinzugefügt werden, während der Wert des Quellcodeverlaufs zweifelhaft erscheint.

Darüber hinaus werden durch die Verwendung von Unit-Tests Regressionsprobleme schnell identifiziert. Müssen wir tatsächlich den Verlauf des Quellcodes beibehalten, solange die neueste Version alle Softwareanforderungen erfüllt?

Ich verstehe, dass jeder ausgelieferte Quellcode erhalten bleiben muss, da die Kunden unterstützt werden müssen, ohne dass sie ein größeres Versions-Upgrade durchführen müssen. Aber abgesehen davon, gibt es irgendeinen Wert, den Verlauf von Quellcode-Commits beizubehalten?

Spielt der Quellcode-Commit-Verlauf eine Rolle bei der Kommunikation zwischen Teammitgliedern? Was ist, wenn wir den Commit-Verlauf abschaffen, uns aber stattdessen auf "Quellcode" + "Unit-Test-Code" für die Kommunikation verlassen?

Macht das Vorhandensein eines Commit-Verlaufs die langfristige Dokumentation wichtiger Informationen über das Projekt, wie z. B. die wichtigsten Design- / Anforderungsänderungen und die Gedankenströme, die diese Änderungen ausgelöst haben, selbstgefällig?

rwong
quelle
3
Je nachdem, welches Quellcodesystem Sie verwenden, bleibt der Versionsverlauf auch bei Dateiverschiebungen und so weiter erhalten. Der Verlauf für gelöschte Dateien sollte weiterhin verfügbar sein. Und am Ende kommt es auf die Geschichte des Endergebnisses an. Klasse X kann eine Kombination der Klassen Y und Z sein, aber der Verlauf zeigt Ihnen dies (insbesondere, wenn Sie gute Check-in-Kommentare haben), und Sie können immer noch auf die Originale zurückgreifen. Vermisse ich hier etwas?
Adam Lear
1
These changes often lead to the loss of the original commit history of a few files.Schauen Sie sich zB "git tad" an - nichts geht verloren. Manchmal ist es etwas schwieriger zu finden, aber es ist immer da.
Maaartinus
1
Bei einem großen Refactoring lohnt es sich, sich etwas Zeit zu nehmen, um die Aktualisierungen der Quellcodeverwaltung zu überdenken und zu planen. Oft können mit minimalem oder geringem zusätzlichen Aufwand viel mehr Informationen erhalten bleiben. Wenn Sie beispielsweise eine Datei in drei Teile teilen, bewahren Sie zunächst das Kopieren des Originals auf jeden der drei Ersetzungen auf. dann verpflichtet sich weiter, die drei zu ändern ...
UuDdLrLrSs

Antworten:

5

Um den Commit-Verlauf für mehr als Kommentare vom Typ "vorgenommene Änderungen" oder "Fehler behoben" zu verwenden, sollte er mit Ihrem Problemverfolgungssystem verknüpft sein. Mit jeder Änderung, jedem Commit sollte ein Problem verbunden sein, damit Sie wissen, was sich von wem und warum geändert hat.

Müssen wir tatsächlich den Verlauf des Quellcodes beibehalten, solange die neueste Version alle Softwareanforderungen erfüllt?

Ausreichend komplexe Software hat selten alle Anforderungen implementiert und alle Fehler aus einer Vielzahl von Gründen behoben. Ich denke, Ihre Behauptung hier ist beispielsweise optimistisch.

Angenommen, Sie befinden sich in Version 7.8 Ihres Programms. Sie unterstützen jedoch vor Ort 12 verschiedene aktive Versionen wie 1.6, 2.2, 2.8 usw. Jedes dieser Elemente wird aus verschiedenen Gründen nicht auf die neueste Version aktualisiert. Daher unterstützen Sie alle mit Fehlerkorrekturen. Ein Kunde findet einen Fehler in Ihrer neuesten Version 7.8. Sie beheben es in 7.8. Woher wissen Sie, wie viele der anderen Releases repariert werden müssen? Ohne Quellverlauf und Problemverfolgung ist dies nicht der Fall.

Erik
quelle
7

Der Wert des Quellcodeverlaufs scheint zweifelhaft zu sein.

Ich habe Ingenieure mehrere Jahre lang im Quellcode nach Antworten suchen lassen, warum etwas so ist, wie es ist. Manchmal ist die Art und Weise, wie sich die Dinge im Laufe der Zeit entwickelt haben, wichtig, um einen Fehler zu verstehen, aber es ist nicht etwas, woran man normalerweise denkt, wenn man Dinge dokumentiert (und auch nicht unbedingt dokumentierbar).

Es kann auch sehr gute rechtliche Gründe geben, den Quellcode-Verlauf beizubehalten. Die meisten Quellcode-Müllcontainer-Tauchgänge, die ich (als Build- / SCM-Ingenieur) durchführen musste, wurden auf Anfrage der Rechtsabteilung meines Unternehmens durchgeführt.

ebneter
quelle
1
Persönlich finde ich, dass es zwar selten ist, die Geschichte überhaupt zu betrachten, aber in den Fällen, in denen dies erforderlich ist, die Fähigkeit dazu äußerst wertvoll ist. Deshalb bevorzuge ich es, die Geschichte zu bewahren, wenn es praktisch ist.
UuDdLrLrSs
3

Müssen wir tatsächlich den Verlauf des Quellcodes beibehalten, solange die neueste Version alle Softwareanforderungen erfüllt?

Aber abgesehen davon, gibt es irgendeinen Wert, den Verlauf von Quellcode-Commits beizubehalten?

Ja zu beiden. Es kann nützlich sein zu wissen, wann, von wem und warum etwas geändert wurde. Wenn Sie Ihre Historie verlieren, wird Ihre Fähigkeit dazu beeinträchtigt.

Spielt der Quellcode-Commit-Verlauf eine Rolle bei der Kommunikation zwischen Teammitgliedern? Was ist, wenn wir den Commit-Verlauf abschaffen, uns aber stattdessen auf "Quellcode" + "Unit-Test-Code" für die Kommunikation verlassen?

Ja tut es. Der Ansatz "Quellcode" + "Unit-Test-Code" sagt Ihnen nicht, wer / wann / warum.

Macht das Vorhandensein eines Commit-Verlaufs die langfristige Dokumentation wichtiger Informationen über das Projekt, wie z. B. die wichtigsten Design- / Anforderungsänderungen und die Gedankenströme, die diese Änderungen ausgelöst haben, selbstgefällig?

Ich nehme an, man könnte sagen, dass es so ist. Nur wenige Entwickler dokumentieren die Änderungen der Anforderungen / des Designs jemals gründlich. Und sicherlich zeichnet fast niemand den Gedankenstrom auf, der die anfängliche Entwicklung oder die nachfolgenden Modifikationen vorangetrieben hat. Wenn Sie den Festschreibungsverlauf (und insbesondere die Festschreibungsprotokollnachrichten) und Querverbindungen zum Problem- / Fehlerverfolgungssystem haben, haben Sie zumindest etwas zu bieten. Und das ist besser als nichts oder eine Reihe von Release-Schnappschüssen.

Stephen C.
quelle
1
+1 Wenn Sie sich für die Kommunikation auf Code verlassen, sind Informationen, die sich in der Historie befinden, auch in Kommentaren enthalten, was gegen DRY verstößt.
Larry Coleman
1
@ Larry - wahr. In Wirklichkeit besteht das Problem jedoch wahrscheinlich darin, dass zu wenig Informationen aufgezeichnet werden und nicht zu viele (oder doppelte) Informationen.
Stephen C