Penguncian

Subversion umumnya bekerja baik tanpa penguncian, menggunakan metode Copy-Ubah-Gabung seperti dijelaskan sebelumnya dalam bagian bernama “Solusi Copy-Ubah-Gabung”. Akan tetapi ada sedikit turunan ketika Anda mungkin perlu untuk mengimplementasikan beberapa bentuk dari aturan penguncian.

Firstly you need to ensure that your Subversion server is upgraded to at least version 1.2. Earlier versions do not support locking at all. If you are using file:// access, then of course only your client needs to be updated.

The Three Meanings of Lock

In this section, and almost everywhere in this book, the words lock and locking describe a mechanism for mutual exclusion between users to avoid clashing commits. Unfortunately, there are two other sorts of lock with which Subversion, and therefore this book, sometimes needs to be concerned.

The second is working copy locks, used internally by Subversion to prevent clashes between multiple Subversion clients operating on the same working copy. Usually you get these locks whenever a command like update/commit/... is interrupted due to an error. These locks can be removed by running the cleanup command on the working copy, as described in bagian bernama “Membersihkan”.

And third, files and folders can get locked if they're in use by another process, for example if you have a word document opened in Word, that file is locked and can not be accessed by TortoiseSVN.

You can generally forget about these other kinds of locks until something goes wrong that requires you to care about them. In this book, lock means the first sort unless the contrary is either clear from context or explicitly stated.

Bagaimana Penguncian Bekerja dalam Subversion

Standarnya, tidak ada yang dikunci dan setiap orang yang mempunyai akses komit bisa mengkomit perubahan ke file apapun kapan saja. Yang lain akan memutahirkan copy pekerjaannya secara periodik dan perubahan dalam repositori akan digabung dengan perubahan lokal.

Jika Anda Mendapat Kunci pada file, maka hanya Anda yang bisa mengkomit file itu. Mengkomit dengan semua pengguna lain akan diblok sampai Anda melepas kuncian. File terkunci tidak bisa diubah dengan cara apapun dalam repositori, ia tidak bisa dihapus atau diganti nama juga, kecuali oleh pemilik kunci.

Penting

A lock is not assigned to a specific user, but to a specific user and a working copy. Having a lock in one working copy also prevents the same user from committing the locked file from another working copy.

As an example, imagine that user Jon has a working copy on his office PC. There he starts working on an image, and therefore acquires a lock on that file. When he leaves his office he's not finished yet with that file, so he doesn't release that lock. Back at home Jon also has a working copy and decides to work a little more on the project. But he can't modify or commit that same image file, because the lock for that file resides in his working copy in the office.

Akan tetapi, pengguna lain tidak perlu mengetahui bahwa Anda telah mengambil kunci. Kecuali mereka memeriksa status kunci secara reguler, pertama mereka akan mengetahuinya ketika komit mereka gagal, yang dalam banyak akasus tidak begitu berguna. Untuk memudahkan pengaturan kunci, ada properti baru Subversion svn:needs-lock. Bila properti ini di-set (ke nilai apapun) pada file, kapan saja filedi check out atau dimutahirkan, copy lokal dibuat hanya-baca kecuali copy pekerjaan itu menampung kuncian untuk file. Tindakan ini sebagai peringatan bahwa Anda tidak boleh mengedit file itu kecuali Anda mendapatkan kunci yang dibutuhkan. File yang diversi dan hanya-baca ditandai dengan lapisan khusus dalam TortoiseSVN untuk menunjukan bahwa Anda perlu mendapatkan kunci sebelum pengeditan.

Kuncian direkam oleh lokasi copy pekerjaan juga oleh pemilik. Jika Anda mempunyai beberapa copy pekerjaan (di rumah, di tempat kerja) maka Anda hanya bisa menampung kunci dalam salah satu dari copy pekerjaan itu.

Jika salah satu dari co-worker Anda memerlukan kunci dan kemudian pergi berlibur tanpa melepaskannya, apa yang Anda lakukan? Subversion menyediakan dalam artian untuk memaksa kuncian. Pelepasan kunci yang dipegang oleh orang lain dirujuk sebagai Membongkar kunci, dan dipaksa untuk mendapatkan kunci yang sudah dipegang orang lain dirujuk sebagai Pencurian kunci. Umumnya ini bukan hal yang harus Anda lakukan jika Anda ingin tetap berteman dengan co-worker Anda.

Kuncian direkam dalam repositori, dan token kunci dibuat dalam copy pekerjaan Anda. Jika ada ketidaksesuaian, sebagai contoh jika orang lain telah membongkar kunci, kunci lokal menjadi tidak benar. Repositori selalu menjadi referensi definitif.

Mendapatkan Kunci

Pilih file-file dalam copy pekerjaan Anda yang ingin Anda perlukan kunci, lalu pilih perintah TortoiseSVNDapatkan Kunci....

Gambar 4.61. Dialog Penguncian

Dialog Penguncian


Dialog muncul, membolehkan Anda untuk memasukan komentar, agar yang lain bisa melihat mengapa Anda mengunci file. Komentar bersifat opsional dan saat ini hanya digunakan dengan repositori berbasis Svnserve. Jika (dan hanya jika) Anda perlu mencuri kunci dari orang lain, centang kotak Curi kunci, lalu klik OK.

You can set the project property tsvn:logtemplatelock to provide a message template for users to fill in as the lock message. Refer to bagian bernama “Seting Proyek” for instructions on how to set properties.

If you select a folder and then use TortoiseSVNGet Lock... the lock dialog will open with every file in every sub-folder selected for locking. If you really want to lock an entire hierarchy, that is the way to do it, but you could become very unpopular with your co-workers if you lock them out of the whole project. Use with care ...

Melepaskan Kunci

Untuk memastikan Anda tidak lupa melepaskan kunci yang tidak Anda perlukan lagi, file terkunci ditampilkan dalam dialog komit dan dipilih secara standar. Jika Anda melanjurkan dengan komit, kuncian yang Anda pegang pada file yang dipilih akan dihapus, bahkan jika file belum diubah. Jika Anda tidak ingin melepaskan kunci pada file tertentu, Anda bisa tidak mencentangnya (jika tidak diubah). Jika Anda ingin membiarkan kunci pada file yang telah Anda ubah, Anda harus menghidupkan kotak centang Biarkan kunci sebelum Anda mengkomit perubahan Anda.

To release a lock manually, select the file(s) in your working copy for which you want to release the lock, then select the command TortoiseSVNLepaskan Kunci Tidak ada yang harus dimasukan selanjutnya maka TortoiseSVN akan menghubungi repositori dan melepaskan kunci. Anda juga bisa menggunakan perintah ini pada folder untuk melepaskan semua kunci secara rekursif.

Memeriksa Status Kunci

Gambar 4.62. Dialog Pemeriksaan Modifikasi

Dialog Pemeriksaan Modifikasi


Untuk melihat kunci apa yang Anda dan lainnya pegang, Anda bisa menggunakan TortoiseSVNPeriksa Modifikasi.... Secara lokal kunci yang dipegang segera tampil. Untuk memeriksa kunci yang dipegang orang lain (dan melihat jika kunci Anda rusak atau dicuri) Anda perlu untuk mengklik pada Periksa Repositori.

Dari menu konteks disini, Anda juga bisa mendapatkan dan melepaskan kunci, juga pembongkaran dan pencurian kunci yang dipegang orang lain.

Hindari Pembongkaran dan Pencurian Kunci

Jika Anda membongkar atau mencuri kunci orang lain tanpa memberitahunya, Anda bisa menyebabkan kehiilangan pekerjaan. Jika Anda bekerja dengan tipe file tidak bisa digabung dan Anda mencuri kunci orang lain, sekali Anda melepaskan kunci mereka bebas memeriksanya dalam perubahan mereka dan menimpa punya Anda. Subversion tidak kehilangan data, tapi Anda kehilangan proteksi tim-kerja yang memberikan kunci kepada Anda.

Membuat File Tidak-Terkunci Hanya-Baca

Seperti telah disebutkan diatas, cara yang paling efektif untuk menggunakan kuncian adalah mengeset properti svn:needs-lock pada file. Lihat bagian bernama “Seting Proyek” untuk instruksi bagaimana mengeset properti. File dengan properti ini diset akan selalu di check out dan dimutahirkan dengan tanda hanya-baca di-set kecuali copy pekerjaan Anda memegang kunci.

Sebagai pengingat, TortoiseSVN menggunakan lapisan khusus untuk menunjukan ini.

If you operate a policy where every file has to be locked then you may find it easier to use Subversion's auto-props feature to set the property automatically every time you add new files. Read bagian bernama “Seting properti otomatis” for further information.

Naskah Hook Penguncian

Ketika Anda membuat repositori baru dengan Subversion 1.2 atau lebih tinggi, empat template hook dibuat dalam direktori repositori hooks. Ini disebut sebelum dan setelah mendapatkan kunci, dan sebelum serta setelah melepaskan kunci.

Adalah ide yang baik untuk menginstalasi naskah hook setelah-kunci dan setelah-buka-kunci pada server yang mengirim email menunjukan file yang sedang dikunci. Dengan naskah itu ditempatnya, semua pengguna Anda bisa diberitahu jika seseorang mengunci/membuka kunci file. Anda bisa menemukan contoh naskah hook hooks/post-lock.tmpl dalam folder repositori Anda.

Mungkin Anda juga menggunakan hook untuk tidak membolehkan pemisahakan atau seting kuncian, atau barangkali membatasinya ke nama administrator. Atau mungkin Anda ingin mengirim email kepada pemilik ketika salah satu dari kunciannya rusak atau dicuri.

Baca selengkapnya bagian bernama “Server side hook scripts”.