SVN adalah singkatan dari Subversion.
Subversion adalah sistem kontrol versi sumber terbuka/gratis. Subversion mengelola file dan direktori dari waktu ke waktu. Sebuah pohon file ditempatkan ke dalam repositori pusat. Repositori sangat mirip dengan file server biasa, kecuali bahwa ia mengingat setiap perubahan yang pernah dibuat pada file dan direktori Anda. Ini memungkinkan Anda untuk memulihkan versi kode yang lebih lama, atau memeriksa riwayat bagaimana kode Anda diubah.
Artikel ini menjelaskan beberapa perintah SVN dasar dengan contoh.
SVN Working Copy
SVN adalah repositori yang menyimpan semua data berversi kami, yang juga disebut sebagai server SVN. Program klien SVN yang mengelola refleksi lokal dari bagian-bagian dari data berversi yang disebut sebagai copy pekerjaan. Klien SVN dapat mengakses repositorinya di seluruh jaringan. Beberapa pengguna dapat mengakses repositori secara bersamaan.
1. SVN Checkout – Buat copy pekerjaan
Perintah checkout digunakan untuk mengunduh sumber dari repositori SVN ke copy pekerjaan. Jika Anda ingin mengakses file dari server SVN, checkout adalah operasi pertama yang harus Anda lakukan.
SVN checkout membuat copy pekerjaan, dari mana Anda dapat mengedit, menghapus, atau menambahkan konten. Anda dapat checkout file, direktori, batang atau seluruh proyek. Untuk checkout, Anda harus mengetahui URL komponen yang ingin Anda checkout.
Syntax: $ svn checkout/co URL PATH
- URL adalah URL komponen yang akan diperiksa
- Jika PATH dihilangkan, nama dasar URL akan digunakan sebagai tujuan. Jika beberapa URL diberikan, masing-masing akan diperiksa ke subdirektori PATH, dengan nama subdirektori menjadi nama dasar URL.
Contoh berikut memeriksa direktori ke direktori target yang diberikan.
$ svn co https://www.thegeekstuff.com/project/branches/release/migration/data/cfg /home/sasikala/cfg/ A /home/sasikala/cfg/ftp_user.cfg A /home/sasikala/cfg/inventory.cfg A /home/sasikala/cfg/email_user.cfg A /home/sasikala/cfg/svn-commands Checked out revision 811. $ ls /home/sasikala/cfg . .. .svn email_user.cfg ftp_user.cfg inventory.cfg svn-commands
Saat Anda melakukan checkout, itu membuat direktori tersembunyi bernama .svn, yang akan memiliki detail repositori.
2. SVN Commit – Simpan perubahan ke repositori
Setiap kali Anda melakukan perubahan pada copy pekerjaan, itu tidak akan tercermin di server SVN. Untuk membuat perubahan permanen, Anda perlu melakukan komit SVN.
Syntax: $ svn commit -m "log messages"
Jelaskan mengapa Anda mengubah file dalam opsi -m.
Misalnya, dalam copy pekerjaan saya, file bernama “svn-commands” memiliki konten berikut.
$ cat /home/sasikala/cfg/svn-commands checkout commit add delete update status $ ls -l /home/sasikala/cfg/svn-commands -rw-r--r-- 1 root root 41 Apr 16 11:15 svn-commands
Saya membuat perubahan pada file ini (misalnya, membuat file ini kosong).
$ ls -l svn-commands -rw-r--r-- 1 root root 0 Apr 16 11:20 svn-commands
Sekarang komit file untuk membuat perubahan permanen di server.
$ svn commit -m "Making the file empty" svn-commands Sending svn-commands Transmitting file data . Committed revision 813.
Setelah ini setiap kali Anda memperbarui copy pekerjaan atau checkout, perubahan akan muncul di server.
3. Daftar SVN – Mencantumkan entri direktori
svn list berguna ketika Anda ingin melihat konten repositori SVN, tanpa mengunduh copy pekerjaan.
Syntax: $ svn list
Contoh berikut mencantumkan semua file yang tersedia di URL yang diberikan di repositori tanpa mengunduh copy pekerjaan. Saat Anda menjalankan perintah svn list dengan opsi –verbose, ini akan menampilkan informasi berikut.
- Nomor revisi dari komit terakhir
- Penulis komit terakhir
- Ukuran (dalam byte)
- Tanggal dan waktu komit terakhir
$ svn list --verbose https://www.thegeekstuff.com/project/branches/release/migration/data/bin 16 sasikala 28361 Apr 16 21:11 README.txt 21 sasikala 0 Apr 18 12:22 INSTALL 22 sasikala Apr 18 10:17 src/
4. SVN Add – Tambahkan file baru ke repositori SVN
Saat Anda ingin menambahkan file (atau direktori) baru ke repositori, Anda perlu menggunakan perintah add SVN. Repositori akan memiliki file yang baru ditambahkan, hanya ketika Anda melakukan komit SVN. Sekarang mari kita tambahkan file baru bernama “thegeekstuff” ke repositori kita.
- Buat file dalam copy pekerjaan lokal
$ ls -l /home/sasikala/cfg/thegeekstuff -rw-r--r-- 1 sasikala root 8 Apr 16 11:33 thegeekstuff
svn add filename akan menambahkan file ke dalam repositori SVN.
$ svn add thegeekstuff A thegeekstuff
Sampai Anda melakukan commit, file yang ditambahkan tidak akan tersedia di repositori.
$ svn commit -m "Adding a file thegeekstuff" thegeekstuff Adding thegeekstuff Transmitting file data . Committed revision 814.
5. SVN Delete – Menghapus file dari repositori
Perintah hapus SVN menghapus item dari copy pekerjaan (atau repositori). File akan dihapus dari repositori saat Anda melakukan komit SVN.
Syntax: $ svn delete URL
Sekarang mari kita hapus file yang baru saja dibuat bernama “thegeekstuff”.
$ svn delete thegeekstuff D thegeekstuff $ svn commit -m "Removing thegeekstuff file" thegeekstuff Deleting thegeekstuff Committed revision 814.
Sekarang Anda dapat melakukan svn list dan memeriksa apakah file telah dihapus dari repositori.
6. SVN Diff – Menampilkan perbedaan
SVN diff menampilkan perbedaan antara copy pekerjaan Anda dan copy di repositori SVN. Anda dapat menemukan perbedaan antara dua revisi dan dua jalur dll.,
Syntax: $ svn diff filename $ svn -r R1:R2 diff filename
Contoh di atas membandingkan namafile@R1 dan namafile@R2.
Sekarang isi file thegeekstuff terlihat seperti ini,
$ cat /home/sasikala/cfg/thegeekstuff testing
Saya mengedit konten file geekstuff dari pengujian ke penguji, yang ditunjukkan di bawah ini menggunakan perintah svn diff.
$ svn diff thegeekstuff Index: thegeekstuff =================================================================== --- thegeekstuff (revision 815) +++ thegeekstuff (working copy) @@ -1 +1 @@ -testing +tester
7. Status SVN – Status copy pekerjaan
Gunakan perintah status svn untuk mendapatkan status file dalam copy pekerjaan. Ini menampilkan apakah copy pekerjaan dimodifikasi, atau telah ditambahkan/dihapus, atau file tidak berada di bawah kendali revisi, dll.
Syntax: $ svn status PATH
Contoh berikut menunjukkan status copy pekerjaan lokal saya,
$ svn status /home/sasikala/cfg M /home/sasikala/cfg/ftp_user.cfg M /home/sasikala/cfg/geekstuff
'M' menunjukkan bahwa item tersebut telah dimodifikasi. Perintah “svn help status” akan menjelaskan berbagai penentu yang ditampilkan dalam perintah status SVN.
8. Log SVN – Menampilkan pesan log
Seperti yang telah kita bahas di awal artikel ini, SVN mengingat setiap perubahan yang dilakukan pada file dan direktori Anda. Untuk mengetahui semua komit yang dibuat dalam file atau direktori, gunakan perintah log SVN.
Syntax: $ svn log PATH
Berikut ini menampilkan semua komit yang dibuat pada file thegeekstuff
$ svn log thegeekstuff ------------------------------------------------------------------------ r815 | sasikala | 2011-04-16 05:14:18 -0700 (Sat, 16 Apr 2011) | 1 line Adding a file thegeekstuff ------------------------------------------------------------------------
Karena kami hanya membuat satu komit dalam file thegeekstuff, ini hanya menampilkan satu pesan log dengan detailnya.
9. SVN Move – Ganti nama file atau direktori
Perintah ini memindahkan file dari satu direktori ke direktori lain atau mengganti nama file. File akan segera dipindahkan ke sandbox lokal Anda (juga di repositori setelah dikomit).
Syntax: $ svn move src dest
Perintah berikut akan mengganti nama file “thegeekstuff” menjadi “tgs” dengan sekali tekan.
$ svn move thegeekstuff tgs A tgs D thegeekstuff $ ls .# .. .svn email_user.cfg ftp_user.cfg inventory.cfg tgs
Sekarang file tersebut diganti namanya hanya di copy pekerjaan, bukan di repositori. Untuk membuat perubahan permanen, Anda perlu melakukan perubahan.
$ svn commit -m "Renaming thegeekstuff to tgs" tgs Adding tgs Transmitting file data . Committed revision 816.
10. Pembaruan SVN – Perbarui copy pekerjaan.
perintah svn update membawa perubahan dari repositori ke copy pekerjaan Anda. Jika tidak ada revisi yang ditentukan, salinan pekerjaan Anda akan diperbarui dengan revisi KEPALA. Jika tidak, ini akan menyinkronkan copy pekerjaan dengan revisi yang diberikan dalam argumen.
Selalu sebelum Anda mulai mengerjakan copy pekerjaan Anda, perbarui copy pekerjaan Anda. Sehingga semua perubahan yang tersedia di repositori akan tersedia di copy pekerjaan Anda. yaitu perubahan terbaru.
Syntax: $ svn update PATH
Jika beberapa pengguna lain menambahkan/menghapus file di URL, https://www.thegeekstuff.com/project/branches/release/migration/data/cfg, copy pekerjaan Anda tidak akan memiliki file tersebut secara default, sampai Anda memperbarui pekerjaan Anda salin.
$ svn update A new/usercfg A new/webcfg Updated to revision 819.
Pada output perintah svn update di atas, A menyatakan bahwa file ini “Ditambahkan” ke copy pekerjaan.