Deleting, Moving and Renaming

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

Gambar 4.34. Menu konteks Explorer untuk file berversi

Menu konteks Explorer untuk file berversi


Deleting files and folders

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.

If you want to delete an item from the repository, but keep it locally as an unversioned file/folder, use Extended Context MenuDelete (keep local). You have to hold the Shift key while right clicking on the item in the explorer list pane (right pane) in order to see this in the extended context menu.

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.

Mendapatkan kembali file atau folder terhapus

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.

Moving files and folders

If you want to do a simple in-place rename of a file or folder, use Context MenuRename... Enter the new name for the item and you're done.

If you want to move files around inside your working copy, perhaps to a different sub-folder, use the right mouse drag-and-drop handler:

  1. pilih file atau direktori yang ingin Anda pindahkan

  2. right drag them to the new location inside the working copy

  3. lepaskan tombol kanan mouse

  4. dalam menu popup pilih Menu KonteksSVN Pindahkan file tidak berversi disini

Komit folder leluhur

Since renames and moves are done as a delete followed by an add you must commit the parent folder of the renamed/moved file so that the deleted part of the rename/move will show up in the commit dialog. If you don't commit the removed part of the rename/move, it will stay behind in the repository and when your co-workers update, the old file will not be removed. i.e. they will have both the old and the new copies.

Anda harus mengkomit ganti nama folder sebelum pengubahan setiap file di dalam folder, sebaliknya copy pekerjaan Anda akan menjadi kacau.

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.

You can also use the repository browser to move items around. Read bagian bernama “Browser Repositori” to find out more.

Jangan SVN Pindahkan Eksternal

Anda tidak boleh menggunakan perintah TortoiseSVN Memindahkan atau Mengganti nama pada folder yang sudah dibuat menggunakan svn:externals. Tindakan ini akan menyebabkan item eksternal dihapus dari repositori leluhurnya, mungkin membuat marah banyak orang lain. Jika Anda perlu untuk memindahkan folder eksternal Anda harus menggunakan shell memindahkan biasa, lalu sesuaikan properti svn:externals dari sumber dan tujuan folder leluhur.

Dealing with filename case conflicts

If the repository already contains two files with the same name but differing only in case (e.g. TEST.TXT and test.txt), you will not be able to update or checkout the parent directory on a Windows client. Whilst Subversion supports case-sensitive filenames, Windows does not.

This sometimes happens when two people commit, from separate working copies, files which happen to have the same name, but with a case difference. It can also happen when files are committed from a system with a case-sensitive file system, like Linux.

Dalam hal itu, Anda harus memutuskan yang mana yang ingin Anda biarkan dan hapus (atau ganti nama) yang lain dari repositori.

Menjaga dua file dengan nama sama

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.

Pembetulan Perubahan Nama File

Terkadang IDE Anda yang ramah akan mengubah nama file-file untuk Anda sebagai bagian praktek perefaktoran, dan tentu saja ia tidak memberitahu Subversion. Jika Anda mencoba untuk mengkomit perubahan-perubahan Anda, Subversion akan melihat nama file lama sebagai hilang dan yang baru sebagai file tidak berversi. Anda dapat saja mencawang nama file baru tersebut untuk membuatnya ditambahkan kedalamnya, tetapi Anda akan kehilangan jejak sejarahnya karena Subversion tidak mengetahui bahwa file-file tersebut berhubungan.

Cara yang lebih baik adalah memberitahu Subversion bahwa perubahan ini sebetulnya adalah perubahan nama dan Anda dapat melakukan ini dalam dialog Komit dan Periksa Modifikasi. Cukup pilih nama lama (hilang) dan nama baru (tidak berversi) dan gunakan Menu KonteksBetulkan Pemindahan untuk memasangkan kedua file tersebut sebagai suatu perubahan nama.

Rekursif ke dalam folder tidak berversi

Biasanya Anda mengeset daftar abaikan Anda sedemikian rupa sehingga semua file-file yang digenerasi diabaikan dalam Subversion. Tetapi bagaimana jika Anda ingin menghilangkan semua file-file diabaikan tersebut untuk menghasilkan suatu pembangunan bersih? Biasanya Anda akan mengesetnya dalam makefile Anda, tetapi jika Anda sedang mendebug makefile tersebut atau sedang mengganti sistem pembangunan, suatu cara untuk membersihkannya akan menjadi berguna.

TortoiseSVN menyediakan opsi demikian dengan Menu Konteks LanjutanHapus item-item tidak berversi.... Anda harus menahan Shift sambil mengeklik kanan pada suatu folder dalam pane daftar explorer (pane kanan) untuk melihat ini pada menu konteks lanjutan. Ini akan menghasilkan sebuah dialog yang mendaftar semua file-file tidak berversi dimanapun dalam copy pekerjaan Anda. Anda selanjutnya dapat memilih atau tidak memilih item-item yang akan dihapus.

Saat item-item tersebut dihapus, tampungan daur ulang digunakan, jadi jika Anda membuat kesalahan disini dan menghapus suatu file yang seharusnya diversi, Anda masih dapat memulihkannya.