In den letzten Jahren habe ich mit verschiedenen Versionskontrollsystemen gearbeitet. Für mich war einer der grundlegenden Unterschiede zwischen ihnen, ob sie Dateien einzeln versionieren (jede Datei hat eine eigene Versionsnummer und einen eigenen Verlauf) oder das Repository als Ganzes (ein "Commit" oder eine Version stellt eine Momentaufnahme des gesamten Repository dar). .
Einige "Per-File" -Versionskontrollsysteme:
- CVS
- Klarer Fall
- Visual SourceSafe
Einige Versionskontrollsysteme für das gesamte Repository:
- SVN
- Git
- Mercurial
Meiner Erfahrung nach haben die Versionskontrollsysteme pro Datei nur zu Problemen geführt und erfordern viel mehr Konfiguration und Wartung, um sie korrekt zu verwenden (z. B. "Konfigurationsspezifikationen" in ClearCase). Ich hatte viele Fälle, in denen ein Mitarbeiter eine nicht zusammenhängende Datei änderte und eine idealerweise isolierte Entwicklungslinie durchbrach.
Was sind die Vorteile dieser Dateiversionskontrollsysteme? Welche Probleme haben Versionskontrollsysteme mit "gesamtem Repository", die Dateiversionskontrollsysteme nicht haben?
quelle
Antworten:
Meiner Erfahrung nach gibt es keine: "Gesamtes Repository" VCS dominiert strikt das "Pro-Datei" -VCS.
quelle
Pro Datei ist von Vorteil, wenn Sie Produktlinien (mehrere Softwareprodukte) aus demselben Repository erstellen.
In einigen Vertragsumgebungen von Kunden ist der Nachweis erforderlich, dass in ihrem Code-Drop NUR die gewünschten Änderungen enthalten sind, nicht jedoch andere Änderungen. Dies ist ziemlich einfach, wenn die Dateiversionsnummern immer noch alle gleich sind.
Und dies ist kein zufälliges Beispiel, das ich aus der Luft gezogen habe.
Dies geschah, als ich das letzte Mal Softwareaktualisierungen für ein System an die US-Armee verschickte, das sie in großen Mengen von meinem früheren Arbeitgeber gekauft hatten. Der Dollarwert der Verträge wurde in Bruchteilen von Milliarden Dollar gemessen (damals, als US-Dollar viel mehr wert waren).
Also hilft es manchmal.
Seltsamerweise: Wo ich jetzt arbeite, versenden wir jeden Kunden auch mit einem anderen Liefergegenstand. (Und das habe ich nicht entschieden, falls Sie sich fragen.)
Ich vermute, dass es im Verteidigungs- / Luftfahrtbereich weitaus häufiger vorkommt als in Shrink-Wrap- oder Web-Apps.
quelle
git
Sie können sogar zwischen Autor und Committer unterscheiden, sodass Sie ein "geprüftes" Repository führen können, in dem Sie sowohl wissen, wer den Patch erstellt hat (der Autor) als auch wer ihn geprüft hat (der Committer). Geben Sie uns eine beispielhafte Situation und ich werde meine -1 umkehren.Die Dateiversionierung bietet keinerlei Vorteile.
Die Nachteile hingegen sind zahlreich und offenkundig.
quelle
Ich könnte sagen, dass die "Per-File" -Versionskontrollsysteme außer der Implementierung des VCS keine klaren Vorteile haben. Die VCS-Codierer würden gerne codieren, wenn es sich um eine "Pro-Datei" -Version handelte. Ich stimme dem Punkt zu, dass es historisch aufgetaucht ist.
quelle
Wenn Sie über verwandte Dateien verfügen, bietet der Ansatz pro Datei keinen Vorteil. Welches ist der häufigste Fall in einer Entwicklungseinstellungen.
In einigen besonderen Fällen - / etc oder. Dateien in Ihrem Home-Verzeichnis in Unix sind die einzigen, über die ich routinemäßig verfüge - Sie bearbeiten (meistens) nicht verwandte Dateien. Und dann kann es ein Ärgernis sein, ein System zu haben, das darauf besteht, nicht in Beziehung stehende Änderungen synchron zu halten.
quelle