Help:Subversion: Difference between revisions
(→svnmerge.py: SvnMergeGui) |
(→Tools: websvn-URL korrigiert) |
||
(17 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
<div style="float: | <div style="float:right; margin-left:10px;">__TOC__</div> | ||
[http://subversion.tigris.org/ Subversion] (SVN) ist eine Open-Source-Software zur Versionsverwaltung von Dateien und Verzeichnissen. | |||
[http://subversion.tigris.org/ Subversion] (SVN) ist eine Open-Source-Software zur Versionsverwaltung von Dateien und Verzeichnissen. | |||
==Anleitungen== | ==Anleitungen== | ||
Line 18: | Line 17: | ||
* [http://lifehacker.com/software/subversion/hack-attack-using-subversion-with-tortoisesvn-192367.php Tutorial zu SVN und TortoiseSVN] (englisch) | * [http://lifehacker.com/software/subversion/hack-attack-using-subversion-with-tortoisesvn-192367.php Tutorial zu SVN und TortoiseSVN] (englisch) | ||
====Externe Tools==== | |||
In TortoiseSVN lassen sich externe Diff- und Merge-Tools einrichten. Wenn die Nutzung eines externen Diff- oder Merge-Tool eingestellt ist, kann man dies mit der <code>Shift</code>-Taste temporär umgehen: http://tortoisesvn.net/node/353 | |||
:<code>C:\Programme\WinMerge\ | |||
=====[http://winmerge.sourceforge.net/ WinMerge] als externes Diff-Tool===== | |||
In den TortoiseSVN Einstellungen, unter ''External Programs'': | |||
Unter ''Diff Viewer'' die Option ''External'' auswählen und in das Textfeld folgendes eintragen (ggf. WinMerge Installationsverzeichnis anpassen): | |||
:<code>C:\Programme\WinMerge\WinMergeU.exe /dl %bname /dr %yname %base %mine</code> | |||
=====[http://www.perforce.com/perforce/products/merge.html Perforce Visual Merge Tool] als externes Merge-Tool===== | |||
In den TortoiseSVN Einstellungen, unter ''External Programs'': | |||
Unter ''Merge Viewer'' die Option ''External'' auswählen und in das Textfeld folgendes eintragen (ggf. Perforce Installationsverzeichnis anpassen): | |||
:<code>C:\Programme\Perforce\p4merge.exe %base %mine %theirs %merged</code> | :<code>C:\Programme\Perforce\p4merge.exe %base %mine %theirs %merged</code> | ||
====Kopieren, Verschieben, Umbenennen==== | |||
Beim Kopieren, Verschieben, Umbenennen von Ordnern und Dateien sicherstellen, dass SVN dies auch mitkriegt. | |||
Dazu die Ordner/Dateien mit der rechten(!) Maustaste verschieben - es erscheint ein Kontextmenü mit diversen Optionen, siehe http://tortoisesvn.net/most-forgotten-feature. | |||
Umbenennungen/Verschiebungen können auch noch nachträglich (kurz vor dem commit) repariert werden, wie hier beschrieben: http://tortoisesvn.net/node/351 | |||
Ein Vorteil von dieser Vorgehensweise ist, dass die Historie von solchen Dateien dann über das Kopieren/Verschieben/Umbenennen hinaus erhalten bleibt. | |||
==Visual Studio Add-Ins== | ==Visual Studio Add-Ins== | ||
===AnkhSVN=== | ===AnkhSVN=== | ||
[[Bild:AnkhSVN_screenshot.gif|thumb|Projektmappenexplorer in VS mit AnkhSVN Add-In]] | [[Bild:AnkhSVN_screenshot.gif|thumb|Projektmappenexplorer in VS mit AnkhSVN Add-In]] | ||
[http://ankhsvn.tigris.org/ AnkhSVN] | [http://ankhsvn.tigris.org/ AnkhSVN] ist ein sehr nützliches Tool, mit dem man SVN-Operationen direkt aus Visual Studio heraus benutzen kann. ''Seit v2.0 sehr zu empfehlen!'' | ||
=== | ===TortoiseSVN-Toolbar=== | ||
[[Bild:TortoiseSVN_Toolbar_screenshot.png|frame|left|TortoiseSVN Toolbar in Visual Studio]] | [[Bild:TortoiseSVN_Toolbar_screenshot.png|frame|left|TortoiseSVN Toolbar in Visual Studio]] | ||
Diese [http://garrys-brain.blogspot.com/2007/07/tortoisesvn-and-visual-studio.html vssettings-Datei] fügt eine neue Werkzeugleiste mit TortoiseSVN-Befehlen ins Visual Studio ein. | Diese [http://garrys-brain.blogspot.com/2007/07/tortoisesvn-and-visual-studio.html vssettings-Datei] fügt eine neue Werkzeugleiste mit TortoiseSVN-Befehlen ins Visual Studio ein. | ||
(Installation von [[#TortoiseSVN|TortoiseSVN]] ist Voraussetzung!)<br clear=" | (Installation von [[#TortoiseSVN|TortoiseSVN]] ist Voraussetzung!)<br clear="left"/> | ||
==Tools== | |||
* [http://tools.tortoisesvn.net/CommitMonitor CommitMonitor] ist ein Programm, das einen über neue commits in ausgewählten Repositories informiert <br/>(alternativ gibts im [http://websvn.bluemodel.org/ WebSVN] auch RSS Feeds, die man abonnieren kann) | |||
==Subversion am IHWB== | ==Subversion am IHWB== | ||
Es gibt verschiedene Möglichkeiten, auf die SVN Repositories am IHWB zuzugreifen: | Es gibt verschiedene Möglichkeiten, auf die SVN Repositories am IHWB zuzugreifen: | ||
; | ;http://svn.bluemodel.org/ : Direktzugriff auf die SVN-Repositories. Diese URL wird von SVN-Clients benötigt, um SVN-Aktionen wie checkout, update, etc. auszuführen. <br/>Im Web-Browser kriegt man unter dieser URL nur die aktuellsten (letzten) Revisionen der Dateien angezeigt. | ||
; | ;http://websvn.bluemodel.org/ : Web-Interface zu den SVN-Repositories | ||
; | ;<del>http://130.83.196.154/viewvc/</del> : <del>Ein weiteres Web-Interface zu den SVN-Repositories</del> | ||
Es sind nicht alle Repositories und auch nicht alle Unterordner der einzelnen Repositories für jeden einsehbar! Externe haben beispielsweise nur Zugriff auf ausgewählte Repositories und Ordner. | Es sind nicht alle Repositories und auch nicht alle Unterordner der einzelnen Repositories für jeden einsehbar! Externe haben beispielsweise nur Zugriff auf ausgewählte Repositories und Ordner. | ||
==svnmerge.py== | ==Merging== | ||
Workaround für folgenden Fehler beim Mergen: | |||
<pre> | |||
svn: Cannot reintegrate from 'url://branch' yet: | |||
Some revisions have been merged under it that have not been merged | |||
into the reintegration target; merge them first, then retry. | |||
</pre> | |||
Es müssen alle <code>svn:mergeinfo</code> properties des branches entfernt werden. Dazu am besten folgenden Befehl benutzen: | |||
<dos>svn propdel svn:mergeinfo -R lokaler-branch-ordner</dos> | |||
Hintergrund siehe http://blogs.open.collab.net/svn/2008/07/subversion-merg.html | |||
===svnmerge.py=== | |||
<div class="achtung"> | |||
'''Veraltet!''' In Subversion 1.5 ist merge-tracking integriert! Siehe http://subversion.tigris.org/svn_1.5_releasenotes.html#merge-tracking | |||
</div> | |||
Um branches auf dem aktuellen Stand vom trunk zu halten, bietet sich das Skript [http://www.orcaware.com/svn/wiki/Svnmerge.py svnmerge.py] an (erhältlich als Python Skript und als EXE). | Um branches auf dem aktuellen Stand vom trunk zu halten, bietet sich das Skript [http://www.orcaware.com/svn/wiki/Svnmerge.py svnmerge.py] an (erhältlich als Python Skript und als EXE). | ||
Line 60: | Line 90: | ||
*# Branch auschecken (d.h. es muss eine lokale Arbeitskopie des branchs vorliegen) | *# Branch auschecken (d.h. es muss eine lokale Arbeitskopie des branchs vorliegen) | ||
*# Eine Kommandozeile im branch-Ordner öffnen | *# Eine Kommandozeile im branch-Ordner öffnen | ||
*# Befehl ausführen: < | *# Befehl ausführen: <code>svnmerge.py init</code> | ||
*# Branch einchecken (Vorschlag für commit-message in Datei <code>svnmerge-commit-message.txt</code>) | *# Branch einchecken (Vorschlag für commit-message in Datei <code>svnmerge-commit-message.txt</code>) | ||
* <u>Branch mit Änderungen aus dem trunk mergen:</u> | * <u>Branch mit Änderungen aus dem trunk mergen:</u> | ||
*# Eine Kommandozeile im branch-Ordner öffnen | *# Eine Kommandozeile im branch-Ordner öffnen | ||
*# Befehl ausführen: < | *# Befehl ausführen: <code>svnmerge.py avail --log</code> Listet alle im trunk verfügbaren Revisionen auf, die noch nicht in den branch gemerged wurden. | ||
*# Befehl ausführen: < | *# Befehl ausführen: <code>svnmerge.py merge</code> Merged alle verfügbaren Revisionen aus dem trunk in den branch. (Selektives mergen von Revisionen auch möglich, siehe [http://www.orcaware.com/svn/wiki/Svnmerge.py#Release_branches Anleitung].) | ||
*# Eventuelle Konflikte lösen | *# Eventuelle Konflikte lösen | ||
*# Branch einchecken (Vorschlag für commit-message in Datei <code>svnmerge-commit-message.txt</code>) | *# Branch einchecken (Vorschlag für commit-message in Datei <code>svnmerge-commit-message.txt</code>) | ||
[[Kategorie:Hilfe|Subversion]] | [[Kategorie:Hilfe|Subversion]] |
Latest revision as of 10:56, 27 October 2009
Subversion (SVN) ist eine Open-Source-Software zur Versionsverwaltung von Dateien und Verzeichnissen.
Anleitungen
- Einführung in Subversion (PDF)
- Einstieg in Subversion
- A Visual Guide to Subversion (englisch)
- A Crash Course in Subversion (englisch)
- Dokumentation von Subversion (englisch)
Clients
Es gibt eine Vielzahl von Subversion Clients (siehe Liste). Hier sei nur auf einen hingewiesen:
TortoiseSVN
- TortoiseSVN Website
- Dokumentation von TortoiseSVN (siehe auch die eingebaute Hilfe von TortoiseSVN)
- Tutorial zu SVN und TortoiseSVN (englisch)
Externe Tools
In TortoiseSVN lassen sich externe Diff- und Merge-Tools einrichten. Wenn die Nutzung eines externen Diff- oder Merge-Tool eingestellt ist, kann man dies mit der Shift
-Taste temporär umgehen: http://tortoisesvn.net/node/353
WinMerge als externes Diff-Tool
In den TortoiseSVN Einstellungen, unter External Programs:
Unter Diff Viewer die Option External auswählen und in das Textfeld folgendes eintragen (ggf. WinMerge Installationsverzeichnis anpassen):
C:\Programme\WinMerge\WinMergeU.exe /dl %bname /dr %yname %base %mine
Perforce Visual Merge Tool als externes Merge-Tool
In den TortoiseSVN Einstellungen, unter External Programs:
Unter Merge Viewer die Option External auswählen und in das Textfeld folgendes eintragen (ggf. Perforce Installationsverzeichnis anpassen):
C:\Programme\Perforce\p4merge.exe %base %mine %theirs %merged
Kopieren, Verschieben, Umbenennen
Beim Kopieren, Verschieben, Umbenennen von Ordnern und Dateien sicherstellen, dass SVN dies auch mitkriegt.
Dazu die Ordner/Dateien mit der rechten(!) Maustaste verschieben - es erscheint ein Kontextmenü mit diversen Optionen, siehe http://tortoisesvn.net/most-forgotten-feature.
Umbenennungen/Verschiebungen können auch noch nachträglich (kurz vor dem commit) repariert werden, wie hier beschrieben: http://tortoisesvn.net/node/351
Ein Vorteil von dieser Vorgehensweise ist, dass die Historie von solchen Dateien dann über das Kopieren/Verschieben/Umbenennen hinaus erhalten bleibt.
Visual Studio Add-Ins
AnkhSVN
AnkhSVN ist ein sehr nützliches Tool, mit dem man SVN-Operationen direkt aus Visual Studio heraus benutzen kann. Seit v2.0 sehr zu empfehlen!
TortoiseSVN-Toolbar
Diese vssettings-Datei fügt eine neue Werkzeugleiste mit TortoiseSVN-Befehlen ins Visual Studio ein.
(Installation von TortoiseSVN ist Voraussetzung!)
Tools
- CommitMonitor ist ein Programm, das einen über neue commits in ausgewählten Repositories informiert
(alternativ gibts im WebSVN auch RSS Feeds, die man abonnieren kann)
Subversion am IHWB
Es gibt verschiedene Möglichkeiten, auf die SVN Repositories am IHWB zuzugreifen:
- http://svn.bluemodel.org/
- Direktzugriff auf die SVN-Repositories. Diese URL wird von SVN-Clients benötigt, um SVN-Aktionen wie checkout, update, etc. auszuführen.
Im Web-Browser kriegt man unter dieser URL nur die aktuellsten (letzten) Revisionen der Dateien angezeigt. - http://websvn.bluemodel.org/
- Web-Interface zu den SVN-Repositories
http://130.83.196.154/viewvc/Ein weiteres Web-Interface zu den SVN-Repositories
Es sind nicht alle Repositories und auch nicht alle Unterordner der einzelnen Repositories für jeden einsehbar! Externe haben beispielsweise nur Zugriff auf ausgewählte Repositories und Ordner.
Merging
Workaround für folgenden Fehler beim Mergen:
svn: Cannot reintegrate from 'url://branch' yet: Some revisions have been merged under it that have not been merged into the reintegration target; merge them first, then retry.
Es müssen alle svn:mergeinfo
properties des branches entfernt werden. Dazu am besten folgenden Befehl benutzen:
<dos>svn propdel svn:mergeinfo -R lokaler-branch-ordner</dos>
Hintergrund siehe http://blogs.open.collab.net/svn/2008/07/subversion-merg.html
svnmerge.py
Veraltet! In Subversion 1.5 ist merge-tracking integriert! Siehe http://subversion.tigris.org/svn_1.5_releasenotes.html#merge-tracking
Um branches auf dem aktuellen Stand vom trunk zu halten, bietet sich das Skript svnmerge.py an (erhältlich als Python Skript und als EXE).
Das Skript legt im branch-Ordner eine svn-property an, in der abgespeichert wird, welche Revisionen bereits gemerged sind und welche noch nicht.
- Hinweis
- Es gibt auch ein SvnMergeGui!
Kurzanleitung:
- Installation:
- Svnmerge.py oder svnmerge.exe herunterladen und in einem Ordner abspeichern, der in der PATH-Umgebungsvariable von Windows angegeben ist (z.B.
C:\Programme\Subversion\bin\
oder einfachC:\Windows\System32
)
(Im Folgenden wird davon ausgegangen, dass die Python-Version gewählt wurde. Wenn nicht der Fall, einfachsvnmerge.py
durchsvnmerge.exe
ersetzen)
- Svnmerge.py oder svnmerge.exe herunterladen und in einem Ordner abspeichern, der in der PATH-Umgebungsvariable von Windows angegeben ist (z.B.
- Initialisierung von svnmerge in einem branch: Die Initialisierung muss lediglich einmal durchgeführt werden. Geprüft werden kann dies in den svn-properties: nach Initialisierung ist die Eigenschaft
svnmerge-integrated
eingetragen.- Branch auschecken (d.h. es muss eine lokale Arbeitskopie des branchs vorliegen)
- Eine Kommandozeile im branch-Ordner öffnen
- Befehl ausführen:
svnmerge.py init
- Branch einchecken (Vorschlag für commit-message in Datei
svnmerge-commit-message.txt
)
- Branch mit Änderungen aus dem trunk mergen:
- Eine Kommandozeile im branch-Ordner öffnen
- Befehl ausführen:
svnmerge.py avail --log
Listet alle im trunk verfügbaren Revisionen auf, die noch nicht in den branch gemerged wurden. - Befehl ausführen:
svnmerge.py merge
Merged alle verfügbaren Revisionen aus dem trunk in den branch. (Selektives mergen von Revisionen auch möglich, siehe Anleitung.) - Eventuelle Konflikte lösen
- Branch einchecken (Vorschlag für commit-message in Datei
svnmerge-commit-message.txt
)