SVN Relocate

Aus SDQ-Wiki

SVN relocate wird benutzt, um die lokale Arbeitskopie einer anderen Serveradresse zuzuweisen. Im Gegensatz dazu benutzt man den Befehl switch, um die Arbeitskopie einem anderen Verzeichnis auf dem gleichen Server zuzuweisen.

Eclipse

  1. Im Eclipse-Menü: Window | Open Perspective | SVN Repository Exploring
  2. im Tab "SVN Repositories" mit rechts auf die jeweiligen Repositories klicken und "Location Properties" auswählen
  3. URL ändern

Tortoise

  1. Rechtsklick auf ausgecheckte Verzeichnisse
  2. "Relocate"
  3. URL ändern

Kommandozeile

Beispiel:

 svn switch --relocate https://sdqweb/svn/paper/2010/ParrendHuber_Essos https://svnserver.informatik.kit.edu/i43/svn/paper/2010/ParrendHuber_Essos 

Einige Hinweise:

  • vorher mit "svn info" überprüfen, welche URL dem Repository zugrundeliegt (i43pc13 oder 141.*.13 etc.)
    • falls die ursprüngliche URL den Username enthält (das ist defaultmässig nicht der Fall, wird aber von Tortoise und den meisten anderen Implementierungen unterstützt, z.B. svn://michael@i43pc13/whatever), muss dieser Benutzername in dem Parameter von "svn switch --relocate" entsprechend auftauchen - es gibt sonst zwar keine Fehlermeldung, aber das Relocaten hat keine Auswirkung, weil die URLs auf das Vorhandensein von "username@" nicht dem Parameter entsprechen; anschliessend mit "svn info" oder "svn status" überprüfen bzw. mit "svn update" testen
  • anschließend mit "svn status" und/oder "svn update" überprüfen, ob es auch wirklich geklappt hat
  • unter Mac OS X gibt es mit Dateinamen und Pfaden, die Umlaute (oder "ß") enthalten, Probleme auf der Client-Seite - diese Probleme sind momentan noch nicht gelöst, Ansprechpartner ist Michael Kuperberg
    • Die Mac OS X Probleme lassen sich durch die Verwendung einer gepatchten Subversion Version beheben, dazu unter Macports die entsprechende Variante installieren:
    • sudo port install subversion +unicode_path

Bash script for relocate

#! /bin/bash

if [ -z $1 ]
then
	echo "Usage: relocate.sh PATH"
	exit 1;
fi

echo "Relocating $1"
OLDURL=$(svn info $1 | grep URL: |awk '{print $2}')

if [ -z $(echo $OLDURL |grep sdq) ]
then
	echo "Non SDQ repository"
	exit 1;
fi


echo "Old URL was $OLDURL" 


REPPATH=$(echo ${OLDURL#https://*/})
echo "-> Repository path: $REPPATH"


if [ -z REPPATH ]
then
	echo "No path was found: null"
	exit 1;
fi



NEWURL=$(echo "https://svnserver.informatik.kit.edu/i43/$REPPATH")
echo "New repository URL will be $NEWURL" 

svn switch --relocate $OLDURL $NEWURL $1

Siehe auch