Linux-svn-Befehl
Vollständige Linux-Befehlsreferenz
SVN (Subversion) ist ein Open-Source-Versionskontrollsystem, das verwendet wird, um die Änderungshistorie von Dateien und Verzeichnissen zu verwalten. Es hilft Entwicklungsteams bei der Zusammenarbeit an Projekten, verfolgt Codeänderungen und unterstützt das Zurücksetzen auf frühere Versionen.
Analogie: Stellen Sie sich SVN wie eine Zeitmaschine vor. Es zeichnet jede Änderung an jeder Datei in Ihrem Projekt auf, genau wie Speicherpunkte in einem Spiel. Sie können jederzeit zu einer früheren Version zurückkehren.
SVN-Grundkonzepte
Repository
Das SVN-Repository ist der Ort, an dem alle Versionsdaten gespeichert werden, gleichbedeutend mit einer zentralen Datenbank. Es verwaltet die vollständige Historie des Projekts.
Arbeitskopie
Dies ist eine Kopie des Projekts auf Ihrem lokalen Rechner. Sie können hier Änderungen vornehmen und die Änderungen dann in das Repository übernehmen.
Revision
Jeder Commit erzeugt eine global eindeutige Revisionsnummer, um einen bestimmten Zustand des Projekts zu identifizieren.
SVN-Installation und -Konfiguration
SVN installieren
Auf den meisten Linux-Distributionen können Sie es über den Paketmanager installieren:
Beispiel
sudo apt-get install subversion
# CentOS/RHEL
sudo yum install subversion
# Fedora
sudo dnf install subversion
Installation überprüfen
svn --version
Detaillierte Erklärung häufiger SVN-Befehle
Code auschecken
Holen Sie den Code aus dem SVN-Repository auf Ihren lokalen Rechner:
Beispiel
# Beispiel:
svn checkout http://svn.example.com/svn/project/trunk myproject
Gängige Optionen:
--username: Benutzername angeben--password: Passwort angeben--non-interactive: Nicht-interaktiver Modus
Code aktualisieren
Synchronisieren Sie die lokale Arbeitskopie mit der neuesten Version im Repository:
Beispiel
# Auf eine bestimmte Revision aktualisieren
svn update -r 1234
Änderungen committen
Lokale Änderungen in das Repository committen:
svn commit -m "提交说明"
Status anzeigen
Änderungsstatus der Arbeitskopie anzeigen:
svn status
Erklärung der Status-Flags:
A: Neue Datei hinzugefügtM: Geänderte DateiD: Gelöschte Datei?: Nicht versionierte Datei!: Fehlende Datei
Dateien hinzufügen
Neue Dateien unter Versionskontrolle stellen:
Beispiel
# Alle neuen Dateien im aktuellen Verzeichnis hinzufügen
svn add --force .
Dateien löschen
Dateien aus der Versionskontrolle löschen:
svn delete 文件名
Protokoll anzeigen
Commit-Historie anzeigen:
Beispiel
# Protokoll einer bestimmten Datei anzeigen
svn logDateiname
# Anzahl der angezeigten Einträge begrenzen
svn log -l 10
Unterschiede vergleichen (Diff)
Inhalt der Änderungen anzeigen:
Beispiel
svn diff
# Zwei Revisionen vergleichen
svn diff -r 100:200
Änderungen rückgängig machen
Lokale Änderungen verwerfen:
Beispiel
# Alle Änderungen rückgängig machen
svn revert -R .
Konflikte beheben
Konflikte können auftreten, wenn mehrere Personen dieselbe Datei ändern:
Beispiel
svn status
# Nach dem Beheben des Konflikts als aufgelöst markieren
svn resolve --acceptworking Konfliktdatei
Erweiterte Operationen
Branching und Merging
Beispiel
svn copyQuell-URL Ziel-URL-m "Beschreibung zum Erstellen des Branches"
# Branch zusammenführen
svn mergeQuell-URL[@Revision]Arbeitskopie-Pfad
Tag-Verwaltung
Beispiel
svn copy http://svn.example.com/svn/project/trunk
http://svn.example.com/svn/project/tags/1.0
-m "Tag für Version 1.0 erstellen"
Eigenschaftsverwaltung
Beispiel
svn propset svn:keywords "Date Rev Author"Dateiname
# Eigenschaft anzeigen
svn propgetsvn:keywords Dateiname
Praktische Tipps
-
Dateien ignorieren: Erstellen
svn:ignoreEigenschaft zum Ausschließen von Dateien, die keine Versionskontrolle benötigensvn propset svn:ignore "*.log" .
-
Detaillierte Dateiinformationen anzeigen:
svn info 文件名
-
Eine saubere Kopie exportieren(ohne das .svn-Verzeichnis):
svn export 仓库URL 本地目录
-
Arbeitskopie bereinigen:
svn cleanup
Behebung häufiger Probleme
Authentifizierungsfehler
Beispiel
rm -rf ~/.subversion/auth/
Sperre der Arbeitskopie
svn cleanup
Konfliktlösungsprozess
- Arbeitskopie aktualisieren:
svn update - Konflikte manuell auflösen (Datei bearbeiten)
- Als aufgelöst markieren:
svn resolve --accept working 文件名 - Änderungen committen:
svn commit -m "解决冲突"
Best Practices
- Arbeitskopie vor dem Commit aktualisieren
- Aussagekräftige Commit-Nachrichten schreiben
- Kleine Änderungen häufig committen, anstatt eine große Anzahl von Änderungen auf einmal einzureichen
- Branches für die Feature-Entwicklung verwenden
- Repository regelmäßig sichern
Vergleich SVN vs. Git
| Merkmal | SVN | Git |
|---|---|---|
| Architektur | Zentralisiert | Verteilt |
| Geschwindigkeit | Langsamer | Schneller |
| Verzweigung/Zusammenführung | Komplexer | Einfach und effizient |
| Offline-Arbeit | Eingeschränkte Unterstützung | Volle Unterstützung |
| Lernkurve | Sanfter | Steiler |
Zusammenfassung
SVN ist ein leistungsstarkes und stabiles Versionskontrollsystem, besonders geeignet für Projekte, die eine strenge Berechtigungskontrolle und zentrale Verwaltung erfordern. Wenn Sie diese grundlegenden Befehle und Konzepte beherrschen, können Sie SVN effizient für Ihre tägliche Versionskontrollarbeit nutzen. Denken Sie daran: Der Kern der Versionskontrolle sind häufige Commits und gute Commit-Gewohnheiten, die ein zuverlässiges Sicherheitsnetz für Ihre Projektentwicklung bieten.
Andere Erweiterungen