Wie benutze ich VCS-Lösungen wie SVN oder git, um die Version bestimmter Dateien zu kennzeichnen?

374
jake9115

Ich fange an, Versionskontrollsysteme (VCS) zu verwenden, um meine wachsenden Codehaufen zu verfolgen, und experimentiere mit SVN und git. Die grundlegenden Befehle sind sehr ähnlich, daher verwende ich einfach SVN als Beispiel.

Angenommen, ich habe ein Repo mit einigen Dateien. Nachdem ich eine Datei geändert habe, mache ich die Änderung folgendermaßen:

svn commit -m "altered the regex to parse properly" 

Dadurch werden meine Änderungen festgeschrieben und die Festschreibungsnachricht hinzugefügt. Was wäre jedoch, wenn ich nur drei verschiedene Skripts geändert hätte. Wie kann ich für jede der Dateien individuelle Commit-Nachrichten hinzufügen?

Ebenso möchte ich als Versionskontrollsystem die Versionsnummern von Skripts tatsächlich nachverfolgen. Angenommen, ich beginne mit Version 1.0.0. Wie kann ich mein geändertes Skript beim Commit als v1.0.1 bezeichnen?

Wenn mir also jemand sagen könnte, wie man Protokolldateien und Versionsänderungen für jede Datei beim Festhalten nachverfolgen kann, wäre ich sehr dankbar. Vielen Dank!

1

2 Antworten auf die Frage

5
Horn OK Please

Wenn Sie ein laufendes Änderungsprotokoll pro Datei beibehalten möchten, müssen Sie Folgendes tun:

  • Erstellen Sie eine ChangeLog-Nur-Text-Datei in Ihrer Quellstruktur, und geben Sie die erforderlichen Informationen (Datum, Uhrzeit, Commit-ID, Zusammenfassung usw.) für jede Datei ein

  • Geben Sie in jedem Commit immer nur eine Datei fest. Auf diese Weise können Sie in der Versionskontrolldatei einen Commit-Verlauf anzeigen, in dem die einzelnen Änderungen der einzelnen Dateien aufgeführt sind. Dies kann jedoch zu einem inkonsistenten Status Ihres Codes führen. Wenn Sie also zwei Dateien ändern, die voneinander abhängig sind und nur eine Datei geändert wird, führt dies zu fehlerhaften Commits im Code.

VCSes unterstützen normalerweise nicht nativ ein Commit-Protokoll pro Datei, während Commits immer noch mehrere Dateien enthalten. Sie können jedoch einfach eine neue Zeile zwischen die Beschreibung der Änderungen der einzelnen Dateien in einem Commit für mehrere Dateien einfügen. Etwas wie das:

Summary: Various bug fixes and updates for Flummox 1.5.2.  file1.c: Updated Flummox API for Flummox 1.5.2. file2.c: Fix a string formatting buffer overflow. file3.c: Use new Flummox Advanced Regex engine. 

Die meisten Benutzer legen jede logisch isolierte Änderung in einem Commit fest, unabhängig davon, ob sie 1 oder 1000 Dateien betrifft.

2
Zoredache

@allquixotic hat den zweiten Teil zu Ihrer Frage verpasst, der sich auf Versionsnummern bezieht. Hier ist eine Antwort auf diesen Teil.

Wie kann ich mein geändertes Skript beim Commit als v1.0.1 bezeichnen?

Sie bezeichnen Ihr Skript nicht wirklich als v.1.0.1. Sie würden wahrscheinlich ein Tag für dieses Commit mit dem Label v.1.0.1 einrichten.

In git könnte das so einfach wie etwas sein git tag v1.0.1 <commithash>. Tags in SVN sind ein bisschen anders, da Sie die svn copy-Funktion Doc verwenden .