Verwijderen, Verplaatsen en Hernoemen

Subversion allows renaming and moving of files and folders. So there are menu entries for delete and rename in the TortoiseSVN submenu.

Afbeelding 4.33. Verkenner context menu voor bestanden met versiebeheer

Verkenner context menu voor bestanden met versiebeheer


Verwijderen van bestanden en mappen

Use TortoiseSVNDelete to remove files or folders from Subversion.

When you TortoiseSVNDelete a file or folder, it is removed from your working copy immediately as well as being marked for deletion in the repository on next commit. The item's parent folder shows a modified icon overlay. Up until you commit the change, you can get the file back using TortoiseSVNRevert on the parent folder.

Als je een item wilt verwijderen uit het archief, maar wel lokaal wil behouden als een bestand/map zonder versiebeheer, gebruik dan Uitgebreide Context MenuVerwijderen (lokaal behouden). Hiervoor dien je de Shift toets ingedrukt te houden terwijl je rechts klikt op het item in het lijst venster van de verkenner (rechter venster) om het uitgebreide context menu te kunnen zien.

If an item is deleted via the explorer instead of using the TortoiseSVN context menu, the commit dialog shows those items as missing and lets you remove them from version control too before the commit. However, if you update your working copy, Subversion will spot the missing item and replace it with the latest version from the repository. If you need to delete a version-controlled file, always use TortoiseSVNDelete so that Subversion doesn't have to guess what you really want to do.

Een verwijderd bestand of map terughalen

If you have deleted a file or a folder and already committed that delete operation to the repository, then a normal TortoiseSVNRevert can't bring it back anymore. But the file or folder is not lost at all. If you know the revision the file or folder got deleted (if you don't, use the log dialog to find out) open the repository browser and switch to that revision. Then select the file or folder you deleted, right click and select Context MenuCopy to... as the target for that copy operation select the path to your working copy.

Verplaatsen van bestanden en mappen

Wanneer je een bestand of map gewoonweg wil hernoemen, gebruik dan Context MenuHernoemen.... Voer de nieuwe naam voor het item in en je bent klaar.

Wanneer je bestanden binnen je werkkopie wilt verplaatsen, wellicht naar een andere submap, gebruik dan de rechter-muisknop slepen en plaatsen methode: <placeholder-1/>

Vastleggen van de bovenliggende map

Omdat het hernoemen en verplaatsen uitgevoerd wordt als een verwijdering gevolgd door een toevoeging, moet je de bovenliggende map vastleggen zodat het verwijderde gedeelte van de hernoeming/verplaatsing in het vastleggen dialoog verschijnt. Als je het verwijderde gedeelte niet vastlegt, zal het in het archief achterblijven en wanneer je collega's verversen, zal het oude bestand niet verwijderd zijn/worden. Zij zullen dus beide bestanden krijgen.

Je moet een naamswijziging in een map eerst vastleggen voordat je één van de bestanden in deze map gaat wijzigen, anders kan je werkkopie flink verknoeid worden.

Another way of moving or copying files is to use the Windows copy/cut commands. Select the files you want to copy, right click and choose Context MenuCopy from the explorer context menu. Then browse to the target folder, right click and choose TortoiseSVNPaste. For moving files, choose Context MenuCut instead of Context MenuCopy.

Je kan ook de archief-verkenner gebruiken om objecten te verplaatsen. Lees de paragraaf met de naam “De Archief-verkenner” voor meer informatie.

SVN Verplaats Geen Externen

Je moet niet de TortoiseSVN Verplaatsen of Hernoemen commando's gebruiken op een map welke gemaakt is door gebruik te maken van svn:externals. Deze actie zal ervoor zorgen dat het externe item verwijderd wordt uit de bovenliggende map wat waarschijnlijk vele andere mensen van streek maakt. Als je een externe map moet verplaatsen, gebruik dan een gewone shell verplaatsing. Wijzig daarna de svn:externals eigenschappen van de bovenliggende mappen van de bron en het doel.

Omgaan met conflicten in hoofdlettergebruik in bestandsnamen

Als het archief al twee bestanden bevat met dezelfde naam, maar verschillend in hoofd-/kleine letters (bijvoorbeeld TEST.TXT en test.txt), zal het niet mogelijk zijn om de bovenliggende map te verversen of op te halen op een Windows client. Terwijl Subversion hoofdlettergevoelige bestandsnamen ondersteunt, doet Windows dit niet.

Dit kan soms gebeuren wanneer twee mensen bestanden vastleggen, vanuit verschillende werkkopiën, welke toevallig dezelfde naam hebben, maar verschillenen in hoofd-/kleine letter. Het kan ook gebeuren wanneer bestanden worden vastgelegd vanuit een hoofdlettergevoelig bestandssysteem, zoals Linux.

In dat geval zul je moeten beslissen welk van deze bestanden je wilt behouden en de andere zul je moeten verwijderen uit het archief (of hernoemen).

Het voorkomen van twee bestanden met dezelfde naam

There is a server hook script available at: https://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/ that will prevent checkins which result in case conflicts.

Herstellen van Bestandhernoemingen

Soms zal je vriendelijke IDE bestanden voor je hernoemen als onderdeel van een refactoring en dit natuurlijk niet doorgeven aan Subversion. Als je dan probeert je wijzigingen vast te leggen, zal de oude bestandnaam te zien zijn als ontbrekend, terwijl de nieuwe getoond wordt als een bestand zonder versiebeheer. Je kan natuurlijk eenvoudig de nieuwe bestandsnaam aanvinken om het toe te voegen, maar omdat Subversion niet weet dat de twee bestanden gerelateerd zijn, verlies je wel alle achterliggende geschiedenis.

Een beter manier is om Subversion te vertellen dat deze wijzing feitelijk een hernoeming is, wat gedaan kan worden in de Vastleggen en Kijk of er updates zijn dialogen. Selecteer eenvoudig zowel de oude (ontbrekende) als de nieuwe (zonder versiebeheer) bestandsnaam en gebruik Context MenuRepareer Verplaatsing om de twee bestanden te koppelen als een hernoeming.

Verwijderen van Bestanden Zonder Versiebeheer

Normaal gesproken zul je je negeerlijst zo opzetten dat alle gegenereerde bestanden door Subversion genegeerd worden. Maar wat als je al deze bestanden wilt verwijderen om een schone build te kunnen produceren. Meestal zal je dit in je makefile zetten, maar als je de makefile aan het debuggen bent, of wanneer je het bouwsysteem veranderd, is het handig om een manier te hebben om het dek schoon te vegen.

TortoiseSVN voorziet in zo'n optie via Uitgebreide Context MenuVerwijder objecten zonder versiebeheer.... Je moet de Shift toets ingedrukt houden als je rechts klikt op een map in het lijstvenster (rechter venster) van de verkenner om deze optie te kunnen zien in het uitgebreide context menu. Er wordt een scherm getoond waarin alle bestanden zonder versiebeheer in je gehele werkkopie in een lijst weergegeven worden. Je kan hieruit de bestanden die verwijderd moeten worden selecteren of deselecteren.

Als zulke items worden verwijderd wordt de prullenbak gebruikt, zodat als u hier een vergissing maakt en een bestand verwijdert dat zou moeten zijn geversioneerd, kunt u het nog terugzetten.