Zoals beloofd deze week nog een Subversion tip. Dit keer over het loskoppelen van een working copy.
Er zijn situaties waarin je je working copy los wilt koppelen van het Subversion repository. Gebruikers van Subclipse zijn gezegend met een ‘detach’ actie, TortoiseSVN heeft echter niet zo’n actie.
Waar een ‘detach’ actie in feite op neer komt is het vewijderen van alles ‘.svn’ folders in de working copy. Dit is immers waar alle Subversion gerelateerde informatie van een working copy wordt bijgehouden.
Een manier om dit te doen is een export te draaien, waarbij een kopie gemaakt wordt van je working copy (of repository revision) met weglating van de ‘.svn’ folders. Soms wil je echter dat echt de working copy zelf wordt losgekoppeld.
Deze feature wens leeft nogal bij de TortoiseSVN gebruikers, gezien de vele hits op Google. Sommige mensen maken een script voor deze actie:
http://abhi.dcmembers.com/blog/2008/12/03/delete-svn-folders-recursively/
Een nog mooiere oplossing is een Shell Extension optie ‘Delete svn folders’:
http://weblogs.asp.net/jgalloway/archive/2007/02/24/shell-command-remove-svn-folders.aspx
Ik las echter pas op het TortoiseSVN blog dat TortoiseSVN stiekem toch deze functionaliteit ondersteunt. Als je namelijk een export draait van je working copy folder naar diezelfde working copy folder, dan bereik je precies het gewenste resultaat. Alle ‘.svn’ folders verdwijnen uit je working copy.
Dus: Klik met de rechtermuisknop op een working copy en kies ‘Export...’ vanuit het context menu. Een Browse dialog wordt getoond waarin je de destination folder kunt kiezen. Kies nu voor precies het pad van ditzelfde working copy, je exporteert dus je working copy over zichzelf heen. TortoiseSVN verwijdert nu alle ‘.svn’ folders.
Wat je ook kan doen is je working copy met de rechtermuisknop op zich dragen. Er verschijnt dan een context menu waarin je kan kiezen voor ‘SVN export all to here.’
Voor een animatie ga je naar http://tortoisesvn.net/node/343.
This post is 100% inspired by Stefan’s post on the href="http://tortoisesvn.net/node/343">tortoisesvn blog.
vrijdag 23 januari 2009
Subversion/TortoiseSVN: Loskoppelen working copy
Subversion/TortoiseSVN: Hernoemen/Verplaatsen van files
Dit is tip 1 van de 2 Subversion tips die ik deze week zal posten op het ISAAC blog.
Aanleiding is de presentatie/demonstratie over Subversion die ik onlangs mocht geven aan alle collega's.
Een van de onderwerpen die nog niet helemaal was uitgekauwd tijdens de presentatie was het hernoemen of verplaatsen van bestanden. Dit levert nog wel eens problemen op bij onze Web Developers, waar gebruik wordt gemaakt van TortoiseSVN in tegenstelling tot Subclipse bij de Software Ontwikkelaars.
Het renamen/hernoemen of moven/verplaatsen van bestanden in een Subversion working copy moet altijd worden uitgevoerd met de daarvoor bestemde subversion commando’s.
Bij ISAAC gebruiken we dus o.a. TortoiseSVN, welke een rename actie hiervoor heeft in het shell-extension menu.
Aangezien een working copy gewoon via de windows explorer is, is het makkelijk om deze actie te vergeten en gewoon met de windows explorer een file te renamen. Dit kan allerlei problemen opleveren in Subversion, dit begint al bij het verlies aan history van een file.
Als je bijvoorbeeld een file list.txt renamed naar list_renamed.txt zonder gebruik van het TortoiseSVN commando, zul je zien dat bij een commit of Check-For-Modifications actie de list.txt als missing wordt gemeld en list_renamed.txt als non-versioned.
Gelukkig heeft TortoiseSVN tegenwoordig (dwz vanaf versie 1.5.0-alpha1) een optie om deze ‘illegale’ rename actie te repareren.
Door 2 gerelateerde files te selecteren kan met de optie ‘repair move’ alsnog de juiste koppeling gelegd worden. Subversion zal dan alsnog door hebben dat de file is gerenamed, met als gevolg onder andere dat de history van de file beschikbaar blijft.
Deze repair actie kan ook worden gebruikt voor het hernoemen van folders, of het verplaatsen van files.
This post is inspired by Stefan’s post on the TortoiseSVN Blog.