mit folgendem befehl kann man rekursiv .svn ordner löschen:
rm -rf `find . -type d -name .svn`
mit folgendem befehl kann man rekursiv .svn ordner löschen:
rm -rf `find . -type d -name .svn`
Branch erzeugen
dev@server:~/project> svn cp https://svn.example.com:88/svn/project/trunk https://svn.example.com:88/svn/project/branches/[BRANCH_NAME]
Branch aktuell halten
Es sollte immer in kurzen Abständen der Trunk in den Branch überführt werden, damit es bei späterem Zurückführen keine größeren Konflikte gibt. Mit –dry-run kann man vorher testen was bei merge passieren würde.
dev@server:~/project/branches/[BRANCH_NAME]> svn up dev@server:~/project/branches/[BRANCH_NAME]> svn merge --dry-run https://svn.example.com:88/svn/project/trunk dev@server:~/project/branches/[BRANCH_NAME]> svn merge https://svn.example.com:88/svn/project/trunk
Branch in den Trunk zurückführen
Mit –dry-run kann man vorher testen was bei merge –reintegrate passieren würde.
dev@server:~/project/trunk> svn merge --dry-run --reintegrate https://svn.example.com:88/svn/project/branches/[BRANCH_NAME] dev@server:~/project/trunk> svn merge --reintegrate https://svn.example.com:88/svn/project/branches/[BRANCH_NAME]
Findet alle Dateien die mit ._ anfangen, ignoriert die .svn eigenen kopien und markiert diese zum löschen via svn.
find . -name '._*' -type f | grep -v '.svn/' | xargs svn rm
Um einen Patch für eine geänderte Datei zu erstellen, nutzt man svn diff wie folgt:
svn diff file_with_changes.ext > diff.patch
Um diesen Patch dann zu benutzen, nutzt man svn wie folgt:
patch -p0 -i diff.patch
-p0 sorgt dafür das die zu patchende Datei gefunden wird (zero directories)
-i sagt patch welche patch Datei benutzt werden soll
Unter folgendem Link findet Ihr die GIT Quickreferenz für SVN Umsteiger.
In verteilten Systemen kommt es des öfteren vor, das unterschiedliche SVN Versionen zum Einsatz kommen.
Wenn euer SVN diese Meldung ausgibt:
svn: This client is too old to work with working copy 'xyz'. You need to get a newer Subversion client, or to downgrade this working copy. See http://subversion.tigris.org/faq.html#working-copy-format-change for details.
kann das Python Script change-svn-wc-format eine SVN WorkingCopy in ein bestimmtes anderes SVN Versionsformat wechseln.
Ein paar kleine SVN-Befehle und One-liner für den Alltag:
Alle Beitragenden eines Repositories anzeigen lassen (sortiert nach Anzahl der Änderungen):
svn log -q | awk '/^r/ {print $3}' | sort | uniq -c | sort -rn
Alle Änderungen zwischen der aktuellen Arbeitskopie und der Head-Version anzeigen lassen. Sollte im Normalfall auch anzeigen, wer den Build kaputt gespielt hat. ;)
svn log -r BASE:HEAD
History eines Zweiges ausgehend vom Verzweigungspunkt anzeigen lassen:
svn log --stop-on-copy
Alle Änderungen innerhalb eines Zeitraums ausgeben lassen:
svn di -r{2009-10-23}:{2009-11-28}
ALLE Änderungen der lokalen Arbeitskopie rückgängig machen:
svn revert -R .
SVN-Informationen als XML ausgeben lassen, um einfacher Infos für Analysen und Statistiken zu erhalten/zu parsen:
svn log --xml
Noch was für Leute, die keine Angst vor’m Löschen von Externals haben: Alle Dateien, die mit ? gekennzeichnet sind (bei SVN-Status) einfach mal löschen:
svn st | grep ^\? | awk '{print $2}' | xargs rm
Und hier noch ein Befehl um alle neuen Dateien zum Repository hinzuzufügen
svn st|grep ^?|sed s/?//|xargs svn add $1
Folgender Kommandozeilen Befehl löscht alle .svn Verzeichnisse in einem Ordner.
Im Detail sucht das Kommando find
im aktuellen Ordner (.) rekursiv
nach Verzeichnissen (-type d)
mit dem Namen .svn (-name .svn)
und piped (|) diese Liste
nach xargs,
welches dann an erster Stelle (-0) der Liste
mit der Löschoperation (rm -rf) beginnt.
find . -type d -name .svn -print0 | xargs -0 rm -rf
…für alle die mal eben schnell SVN Kommandos nachsehen wollen.
© by Tobias Zeising (tobias.zeising@aditu.de | http://www.aditu.de)