Mengapa anda memerlukan sistem kawalan versi? Apakah sistem kawalan versi dan mengapa anda memerlukannya? Sistem sedemikian, seperti CVS, Subversion dan Perforce, mempunyai pelayan pusat yang menyimpan semua fail di bawah kawalan versi, dan beberapa pelanggan yang

Hello, Habr. Saya memutuskan untuk menyentuh topik yang telah habis dalam banyak artikel, lebih khusus lagi, untuk menerangkan penggunaan sistem kawalan versi yang sebahagian besarnya tidak standard (saya akan katakan, tidak disusun) (selepas ini dirujuk sebagai VCS). Rakan pengaturcara, mari kita sembunyikan tomato busuk dan teruskan, kerana artikel ini bukan untuk anda. Ya, anda semua telah mempelajari semua selok-belok Git, SVN, CVS dan mengetahui banyak kata kunci lain. Marilah kita, manusia biasa, berkenalan dengan semua kelebihan menggunakan mata wang keras.
Saya menjemput semua orang yang ingin membiasakan diri dengan sistem mata wang keras, serta semua mereka yang, satu cara atau yang lain, berurusan dengan data yang berubah dengan pantas.

Mengapa ini perlu?

Saya sendiri adalah pelajar di universiti teknikal dan hampir sentiasa bekerja dengan dokumen (teks, lukisan, lukisan), menukarnya tiga (sepuluh, seratus) kali sehari. Kadang-kadang ternyata pengeditan dibuat semasa minggu lepas, adalah perlu untuk membatalkan dan kembali kepada dokumen dalam keadaan seminggu yang lalu. Adalah baik jika hanya beberapa pengeditan dibuat, dalam kes ini lima puluh hits pada Ctrl+Z boleh membantu. Walau bagaimanapun, jika pada minggu ini terdapat kerja yang lebih atau kurang aktif dengan dokumen, anda tidak akan dapat memulihkan status "sebelum pengeditan penting dibuat seminggu yang lalu." Untuk melakukan ini, anda memerlukan salinan dokumen pada masa "sebelum suntingan penting", serta sedozen salinan lagi "sebelum suntingan penting yang lain," "sebelum suntingan yang boleh dipersoalkan," dan "sebelum suntingan yang akan mungkin perlu dibatalkan.” Pada dasarnya, pendekatan ini boleh dilakukan dan diamalkan oleh ramai orang. Sehingga baru-baru ini, saya sendiri memegang versi penting fail, menyimpannya dengan awalan "date_time", dan, nampaknya, saya gembira. Kelebihan kaedah ini adalah kesederhanaannya, kelemahannya ialah folder kerja "membengkak" dan menyusahkan untuk digunakan. Dan, jika yang pertama daripada mereka entah bagaimana boleh ditangani (pemacu keras besar dan 7zip), maka sesuatu perlu dilakukan mengenai kesulitan itu.

Apa yang boleh dilakukan mengenai perkara ini, atau apakah itu SLE

Mari kita ambil perenggan dari Wikipedia: "Sistem kawalan versi (dari Sistem Kawalan Versi Bahasa Inggeris, VCS atau Sistem Kawalan Semakan) ialah perisian untuk memudahkan kerja dengan menukar maklumat. Sistem kawalan versi membolehkan anda menyimpan berbilang versi dokumen yang sama dan, jika perlu, kembali ke lebih banyak versi versi terdahulu, tentukan siapa dan bila membuat perubahan ini atau itu, dan banyak lagi.” Ia serupa dengan cara Wikipedia sendiri berfungsi – semua versi artikel dengan semua suntingan tersedia untuk kajian.
Oleh itu, menggunakan VCS dalam situasi di mana anda perlu menyimpan banyak versi fail adalah perkara yang anda perlukan. Kelebihan pendekatan ini termasuk kemudahan penggunaan dan penjimatan percuma ruang cakera terima kasih kepada apa yang dipanggil pemampatan delta (apabila bukan fail itu sendiri disimpan dalam versi yang berbeza, tetapi berubah dari versi ke versi, yang mengurangkan jumlah data yang disimpan). Mari kita cuba.

Apakah jenis mata wang keras yang ada?

Wikipedia yang sama mencadangkan bahawa mata wang keras boleh dipusatkan dan diedarkan, besar dan kecil, dengan atau tanpa loceng dan wisel. Kami tidak begitu berminat dalam hal ini, kerana kami akan menggunakan (oleh sekurang-kurangnya, pertama) hanya sebahagian daripada fungsi sistem pertukaran mata wang. Mari kita pertimbangkan fungsi ini.
Hampir semua VCS ialah sejenis storan di mana semua versi fail yang kami gunakan disimpan. Di sini adalah perlu untuk menjelaskan bahawa versi fail yang disimpan paling kerap ditentukan oleh pengguna. Kami membuat, katakan, sedozen perubahan kecil dan memutuskan bahawa sudah tiba masanya untuk menyimpan hasil aktiviti kami dalam repositori. Analogi muncul di fikiran dengan menekan Ctrl+S secara berkala, dengan satu-satunya perbezaan ialah versi fail ini boleh diakses pada masa hadapan. Sememangnya, dalam satu masa anda boleh menambah versi seberapa banyak fail yang anda suka ke repositori. Tindakan ini dipanggil "komit", atau "melakukan perubahan" dengan cara yang mudah.
Pada bila-bila masa, anda boleh menambah atau memadam yang baharu pada repositori (itulah repositori yang dipanggil dengan bijak). fail sedia ada, dan VCS akan "mengingat" bila dan perkara yang kami tambah/padam. Dan terima kasih kepada ulasan semasa komit, anda juga boleh menerangkan sebab komit tertentu ini dilakukan ("menambah perhiasan di sana"/"mengalih keluar sekeping yang mungkin diperlukan dari sana").
Apabila kami akhirnya menyedari bahawa sudah tiba masanya untuk kami kembali ke versi seminggu yang lalu, kami mempunyai keseluruhan sejarah perubahan. Dan di sini kita boleh memilih apa yang perlu dilakukan. Jika anda perlu menyalin bahagian yang diperlukan daripada fail lama dan tampalkannya ke dalam versi semasa, cuma alih keluar fail lama daripada storan dan salin apa yang anda perlukan daripadanya. Jika anda perlu berguling sepenuhnya dan terus bekerja dengannya versi lama SKB datang membantu kami sekali lagi - anda boleh kembali ke versi yang lebih awal dan membuat apa yang dipanggil cawangan baharu (“cawangan”), sambil mengekalkan semua yang kami “berserah” dengan melancarkan semula versi seminggu yang lalu. Oleh itu, sejarah versi projek boleh diwakili secara grafik sebagai pokok - dari "akar" (permulaan projek) kepada "cawangan" (suntingan yang berjaya dan tidak berjaya). Di samping itu, "cawangan" juga boleh dibuat secara buatan, sebagai contoh, dalam kes apabila kami memutuskan untuk membangunkan dua daripada fail sumber yang sama versi berbeza– pada yang pertama kita bekerja pada beberapa perhiasan, pada yang kedua kita bekerja pada yang lain. Lebih-lebih lagi, jika fail yang berfungsi dokumen teks(dan dalam beberapa yang lain), adalah mungkin untuk menggabungkan cawangan yang berbeza menjadi satu - yang dipanggil gabungan. Sekarang mari kita bayangkan bahawa beberapa orang sedang mengusahakan projek itu, dan setiap orang bekerja dengan "bauble" mereka sendiri. Mempunyai repositori biasa dalam kes ini sangat memudahkan pembangunan.

Dari teori kepada amalan, atau mula menggunakan SLE

Jadi, saya harap saya telah meyakinkan anda bahawa menggunakan SLE adalah perkara yang baik. Yang tinggal hanyalah mempelajari cara menggunakan VCS. Inilah yang akan kita lakukan.
Terdapat pelbagai sistem kawalan versi yang berbeza antara satu sama lain pelbagai aspek guna. Oleh kerana kami tidak berminat (sekurang-kurangnya pada mulanya) dalam kehalusan kerja pelbagai sistem, mari fokus pada yang paling mudah dan paling mesra daripada mereka. Pada pendapat saya yang rendah hati, sistem sedemikian, secara anehnya, ialah Mercurial - "sistem kawalan versi teragih merentas platform yang direka untuk kerja yang cekap dengan repositori kod yang sangat besar" dengan cangkang grafik TortoiseHg. Sistem ini boleh digunakan di bawah Windows, Linux dan Mac OS X.
Izinkan saya membuat tempahan segera yang saya akan terangkan bekerja dengan sistem dalam Windows. Bagi mereka yang telah menguasai Linux, tidak sukar untuk mempelajari segala-galanya dengan analogi.
Di samping itu, pada masa yang sama kita akan belajar untuk bekerja dengannya hosting percuma Repositori Mercurial - bitbucket.org, perlu jika anda tidak bekerja pada projek sahaja atau, yang sangat mudah, anda ingin mempunyai akses kepada semua versi projek melalui Internet. Pada asasnya, ia adalah pengganti dropbox yang mudah jika anda pernah menggunakannya sebelum ini.
Mula-mula, pasang Mercurial + TortoiseHg dari sini: tortoisehg.bitbucket.org.
Sistem ini berfungsi dalam konsol, jadi untuk kemudahan penggunaan kami akan menulis beberapa *. fail kelawar ov untuk operasi biasa.
Semua operasi dilakukan oleh arahan hg. Dipanggil tanpa parameter, ia memaparkan senarai arahan asas.
Repositori ialah mana-mana direktori yang kami pilih (saya akan menggunakan folder "C:\project\"), di mana semua fail projek masa depan kami harus disimpan. Sudah tentu, tiada siapa yang melarang mempunyai beberapa repositori pada satu komputer.
Untuk sistem "memahami" bahawa kami ingin membuat repositori, kami menjalankan arahan:
hg init c:\project
selepas itu folder "c:\project\" akan dibuat, jika ia belum dibuat sebelum ini, dan folder "c:\project\.hg\", di mana Mercurial akan menyimpan semua maklumat perkhidmatan.
Kami segera ingat bahawa kami ingin mendapatkan bukan sahaja repositori tempatan pada komputer kami, tetapi juga repositori jauh yang kami akan menghantar semua perubahan kami (atau, seperti yang dikatakan oleh orang pintar, "tolak" berubah kepada repositori jauh, dari Bahasa Inggeris “push”). Untuk melakukan ini, pergi ke bitbucket.org, daftar, dan buat repositori pertama anda (Repositori - Buat repositori baharu). Beri nama repositori (saya akan memanggilnya remote_project untuk menjadi khusus) dan klik pada Buat repositori.
Kini kami mempunyai dua repositori - satu repositori tempatan, terletak dalam folder "c:\project\" dan satu jauh, terletak di "bitbucket.org/your_account_name/remote_project/", dengan nama_akaun anda ialah nama yang dinyatakan semasa mendaftar pada bitbucket, remote_project ialah nama repositori, dipilih semasa menciptanya.
Untuk meneruskan penerokaan, kami perlu memasukkan sesuatu ke dalam repositori tempatan kami. Hanya buat di dalamnya (dalam kes saya, dalam folder "c:\project\") sebarang fail projek masa depan anda atau salin projek semasa anda di sana.
Sekarang, secara tegasnya, kita perlu memberitahu Mercurial: "kami menambah fail tersebut dan itu dan beberapa folder baharu ke folder projek", arahan "hg add" disediakan untuk ini. Walau bagaimanapun, pendekatan lain adalah lebih mudah - pada komit seterusnya kami akan memberitahu Mercurial untuk mengambil semua fail yang baru dibuat dari folder projek dan melupakan yang dipadam, ini lebih mudah daripada melakukan "hg add c:\project\new_document .doc” setiap kali anda membuat dokumen baharu "
Jadi, mari kita beralih kepada komitmen pertama kita. Ia dilaksanakan dengan arahan berikut:
hg commit –A –m “komen untuk melakukan”
Mari kita lihat semuanya mengikut urutan. Arahan mesti dimasukkan apabila kita berada dalam repositori (iaitu, kita mesti terlebih dahulu melaksanakan "cd c:\project"). Pilihan "-A" diperlukan untuk Mercurial untuk "mengambil" fail yang baru dibuat (lihat di atas), pilihan "-m" membolehkan anda menambah ulasan pada komit. Komen ini akan dipaparkan apabila melihat versi (atau set perubahan - senarai perubahan) dalam TortoiseHg dan pada halaman projek dalam bitbucket.org. Adalah sangat penting untuk memberikan komen yang bermakna supaya tidak menderita di kemudian hari, mengingati bila suntingan ini atau itu dibuat.
Kini repositori kami menyimpan versi awal projek kami. Semua komitmen selanjutnya dilakukan dengan cara yang sama selepas kami memutuskan bahawa sudah tiba masanya untuk menyimpan versi semasa.
Komit yang lengkap boleh "ditolak" ke dalam repositori jauh dengan arahan:
hg push https://bitbucket.org/nama_akaun_anda/projek_jauh
Dalam kes ini, anda juga perlu berada dalam folder yang sepadan dengan repositori. Selepas memasukkan arahan, anda akan diminta untuk nama dan kata laluan akaun kami di bitbucket.org, supaya tidak memasukkannya dengan setiap tekan, arahan itu boleh digantikan dengan yang berikut:
hg tolak hg tolak https://your_account_name:[email protected]/your_account_name/remote_project
Memandangkan kami akan menulis semua arahan ke dalam fail *.bat, dalam kes ini kata laluan akan disimpan dalam borang terbuka, yang merupakan sedikit risiko keselamatan, tetapi boleh diterima oleh saya.
Jadi, untuk kemudahan, kami mencipta fail commit.bat, push.bat dan commit&push.bat dalam kawasan capaian terus dengan kandungan berikut:
[kandungan fail commit.bat]
JIKA !%1==! pergi keluar1
cd C:\projek
hg commit -A -m "%*"
pergi keluar0
:keluar1
echo "TIADA ARG BARIS PERINTAH!"
:keluar0
Fail ini, yang dipanggil dengan argumen, akan melakukan projek dengan argumen yang disertakan dalam ulasan kepada komit. Contoh: laksanakan "commit.bat my first commit" dan dapatkan commit dengan ulasan "my first commit". Di FAR, adalah mudah untuk menggunakan kombinasi Ctrl+Enter untuk ini.
[kandungan fail push.bat]
cd C:\projek
hg push https://your_account_name:[email protected]/your_account_name/remote_project
Fail ini akan menolak ke repositori jauh.
[kandungan fail commit&push.bat]
JIKA !%1==! pergi keluar1
cd C:\projek
hg commit -A -m "%*"
pergi keluar0
:keluar1
echo "TIADA ARG BARIS PERINTAH!"
:keluar0
panggil ./push.bat
Fail ini, dipanggil dengan argumen, akan melakukan komit berurutan dan menolak projek dengan hujah yang dimasukkan dalam ulasan kepada komit.
Di samping itu, untuk komit perantaraan kecil, saya mengesyorkan membuat fail commit_date_time.bat:
[kandungan fail commit_date_time.bat]
cd C:\projek
hg commit -A -m "%DATE% %TIME%"
Fail ini akan komited dengan tarikh dan masa semasa sebagai ulasan, yang selalunya mudah.
Setiap orang membuat keputusan tentang kekerapan melakukan dan menolak secara individu, bergantung pada keamatan dan kerumitan suntingan yang dibuat. Walaupun disyorkan untuk mengikuti peraturan "lebih kerap adalah lebih baik."
Dengan mengklik kanan pada fail/folder repositori, anda boleh melancarkan Penjelajah Repositori (TortoiseHg - Penjelajah Repositori), yang membentangkan semua komitmen kami dengan ulasan kepada mereka. Tetingkap ini memaparkan struktur pepohon repositori kami, dari sini anda boleh melakukan komit, tolak, rollback ke versi sebelumnya (backout) dan operasi lain.
Di bitbucket.org/your_account_name/remote_project terdapat set set perubahan yang serupa, dan anda boleh memuat turun sebarang versi projek dalam satu arkib, yang kadangkala juga sangat mudah.
Secara umum, saya menganggap ini sebagai pengakhiran perkenalan awal saya dengan Mercurial. Untuk lebih maklumat terperinci boleh diakses di: translated.by/you/mercurial-the-definitive-guide/into-ru/trans/

Untuk siapa artikel ini?

Saya mungkin akan mengakhiri dengan perkara yang sepatutnya saya mulakan - untuk siapa artikel ini? Jawapannya mudah - bagi mereka yang ingin belajar menggunakan mata wang keras. Saya berjaya mendapatkan beberapa pereka, jurutera, dan juga seorang penulis yang tertarik dengan VCS. Cubalah juga - ini mungkin akan memudahkan kerja anda.

P.S. Berpindah ke blog "Sistem Kawalan Versi".

Tag: Tambah tag

Sistem kawalan versi ( Sistem Kawalan Versi, VCS) ialah perisian yang membolehkan anda menjejaki perubahan dalam dokumen, melancarkannya kembali jika perlu, menentukan siapa yang membuat pembetulan dan bila, dsb. Artikel membincangkan jenis VCS, prinsip operasi mereka, serta contoh produk perisian.

Apakah sistem kawalan versi?

Mungkin semua orang sudah biasa dengan situasi apabila, apabila bekerja pada projek, terdapat keperluan untuk membuat perubahan, tetapi pada masa yang sama anda perlu menyimpan versi yang boleh dilaksanakan, dalam kes ini, sebagai peraturan, folder baru dibuat, nama yang kemungkinan besar akan menjadi "Folder Baharu" dengan penambahan tarikh atau nota kecil, ia disalin ke dalam versi kerja projek dan kerja sudah dijalankan dengannya. Dari masa ke masa, bilangan folder sedemikian boleh meningkat dengan ketara, yang menimbulkan kesukaran untuk kembali ke versi sebelumnya, menjejaki perubahan, dsb. Keadaan ini menjadi lebih teruk apabila terdapat ramai orang yang bekerja pada projek.

Untuk menyelesaikan masalah sedemikian, sistem kawalan versi digunakan, ia membolehkan anda bekerja dengan selesa pada projek secara individu dan dalam satu pasukan. VCS menjejaki perubahan dalam fail, menyediakan peluang untuk mencipta baharu dan menggabungkan cawangan sedia ada projek, mengawal akses pengguna kepada projek, membolehkan anda melancarkan pembetulan dan menentukan siapa, bila dan apakah perubahan yang dibuat pada projek. Konsep utama VCS ialah repositori ( repositori) – storan khas fail dan folder projek, perubahan yang dijejaki. Pembangun mempunyai apa yang dipanggil "salinan kerja" ( salinan kerja) projek yang dia bekerja secara langsung. Salinan kerja mesti disegerakkan secara berkala dengan repositori ini melibatkan penghantaran perubahan yang telah dibuat oleh pengguna kepada salinan kerjanya kepadanya (operasi ini dipanggil komited) dan mengemas kini salinan kerja, di mana versi terkini dari repositori dimuat turun kepada pengguna (proses ini dipanggil kemas kini).

Sistem kawalan versi terpusat dan teragih

Sistem kawalan versi boleh dibahagikan kepada dua kumpulan: diedarkan dan berpusat.

Sistem kawalan versi terpusat

BerpusatSistem kawalan versi ialah aplikasi klien-pelayan, di mana repositori projek wujud dalam satu salinan dan disimpan pada pelayan. Ia telah diakses melalui aplikasi pelanggan khas.Contoh produk perisian tersebut termasuk: CVS, Subversion.

CVS (Sistem Versi Serentak, Sistem versi serentak) adalah salah satu sistem pertama yang tersebar luas di kalangan pemaju; ia timbul pada akhir 80-an abad yang lalu. Pada masa ini, produk ini tidak dibangunkan, ini disebabkan terutamanya oleh beberapa kelemahan utama, seperti ketidakupayaan untuk menamakan semula fail, penyimpanan yang tidak cekap, secara praktikal. ketiadaan sepenuhnya kawalan integriti.

Subversion (SVN) – sistem kawalan versi dicipta untuk menggantikan CVS. SVN dibangunkan pada tahun 2004 dan masih digunakan sehingga kini. Walaupun banyak kelebihan berbanding CVS di SVN Namun, terdapat kelemahan, seperti masalah dengan penamaan semula, ketidakupayaan untuk memadam data dari repositori, masalah dalam operasi penggabungan cawangan, dll. Secara amnya SVN adalah (dan kekal) satu langkah ke hadapan yang ketara berbanding dengan CVS.

Sistem kawalan versi teragih

Sistem kawalan versi teragih ( Sistem Kawalan Versi Teragih, DVCS) membolehkan anda menyimpan repositori (satu salinannya) untuk setiap pembangun yang bekerja dengan sistem ini. Dalam kes ini, anda boleh memilih repositori pusat (bersyarat), yang mana perubahan daripada yang tempatan akan dihantar dan, dengan itu, repositori tempatan ini akan disegerakkan. Apabila bekerja dengan sistem sedemikian, pengguna secara berkala menyegerakkan repositori tempatan mereka dengan pusat dan bekerja secara langsung dengan salinan tempatan mereka. Selepas membuat perubahan yang mencukupi pada salinan tempatan, mereka (perubahan) dihantar ke pelayan. Dalam kes ini, pelayan paling kerap dipilih secara bersyarat, kerana dalam majoriti DVCS tidak ada perkara seperti "pelayan khusus dengan repositori pusat."

Kelebihan besar pendekatan ini ialah autonomi pembangun apabila mengusahakan projek, fleksibiliti sistem biasa dan meningkatkan kebolehpercayaan dengan memastikan setiap pembangun mempunyai salinan tempatan repositori pusat. Dua yang paling terkenal DVCS- Ini Git Dan Mercurial.

Mari kita mulakan dengan Mercurial, sistem ini adalah percuma DVCS, yang dibina sedemikian rupa sehingga tidak ada konsep repositori pusat untuk bekerja dengan ini VCS digunakan (biasanya) utiliti konsol hg. Mercurial mempunyai semua keupayaan sistem kawalan versi, seperti percabangan, penggabungan, penyegerakan dengan repositori lain. Projek ini penggunaan dan sokongan sejumlah besar pemaju utama, antaranya Mozilla, Pejabat terbuka, OpenJDK dan lain-lain lagi. Produk itu sendiri ditulis dalam Ular sawa dan tersedia pada kebanyakan moden sistem operasi (Windows, MacOS, Linux), terdapat juga sejumlah besar utiliti dengan antara muka grafik untuk bekerja dengan Mercurial. Pesaing utama Mercurial dalam pasaran sistem kawalan versi teragih adalah Git, yang sehingga kini, telah memenangi perlumbaan kepimpinan.

Git– sistem kawalan versi teragih yang dibangunkan oleh Linus Torvalds untuk kerja pada kernel sistem pengendalian Linux. Antara projek utama, di mana ia digunakan git, kita boleh pilih teras Linux, Qt, Android. Git percuma dan diedarkan di bawah lesen GNU GPL 2 dan, serta Mercurial, tersedia pada hampir semua sistem pengendalian. Mengikut mereka sendiri keupayaan asas git sama seperti Mercurial(dan lain lain DVCS), tetapi terima kasih kepada beberapa kelebihan ( kelajuan tinggi kerja, keupayaan untuk berintegrasi dengan orang lain VCS, antara muka mesra pengguna) dan komuniti yang sangat aktif yang telah terbentuk di sekeliling sistem ini, git menjadi peneraju pasaran dalam sistem kawalan versi teragih.Perlu diingatkan bahawa walaupun populariti besar sistem seperti itu git, syarikat besar seperti Google, gunakan mereka VCS.

Ini adalah syarahan pengenalan tentang sistem kawalan versi. Dalam perkara berikut, semua pembentangan akan berkenaan sahaja git.

Jika anda lebih suka belajar daripada kuliah video, maka kami mengesyorkan kursus yang hebat tentang git daripada GeekBrains , pergi ke pautan dan cari kursus dalam bahagian "Kursus". Git. Permulaan cepat". Dia percuma, anda hanya perlu mendaftar di tapak. Kami mengesyorkan agar anda melihat dengan lebih dekat sumber ini; terdapat lebih banyak perkara yang menarik!

Adakah anda mempunyai idea perniagaan baharu yang hebat berkaitan pembangunan perisian?Adakah anda perlu membangunkan penyelesaian teknologi yang kompleks? Atau adakah anda mempunyai sekumpulan besar pengaturcara yang bekerja pada tugas yang sama? Kemudian ingat tiga perkataan ini:sistem kawalan versi .

Sistem kawalan versi (cvs), 2017 - Bandingkan: Git, SVN, Mercurial

, atau vcs- inilah yang menghalang projek daripada runtuh apabila terdapat ramai orang yang mengerjakannya. Pengaturcara, pengurus, penulis salinan masing-masing boleh bekerja pada karya mereka sendiri tanpa mengganggu antara satu sama lain dan tanpa menyebabkan kerosakan yang tidak dapat diperbetulkan.

Jika anda masih belum biasa dengan konsep tersebutsistem kawalan versi, kemudian di sini semuanya ditunjukkan dengan sangat jelas.

Atau tonton video daripada GitHub.

Jadi sistem kawalan versi manakah yang sesuai untuk projek anda?

Kami membandingkan beberapa penyelesaian popular untuk memudahkan anda membuat pilihan.

Ini adalah topik teknikal yang sangat khusus. Kami telah cuba menjadikan ulasan kami dapat difahami oleh semua orang. Tetapi jika anda tidak mempunyai pengalaman pengaturcaraan, pastikan anda berunding dengan jabatan pembangunan anda sebelum membuat keputusan.

Sistem kawalan versi, termasuk SVN (Subversion) dan Git yang terkenal, pada asalnya dicipta untuk membolehkan pasukan pembangunan bekerja pada projek bersama tanpa menimbulkan kekeliruan. Dalam sistem kawalan, anda tidak perlu menjejaki cawangan kod secara bebas dan mengkaji nota kepada mereka. Sebaliknya, repositori pusat digunakan di mana segala-galanya teratur dan berstruktur. Ia mudah untuk mengemas kini fail, menambah ulasan, dan juga menggabungkan cawangan projek.

Pendapat mengenai apasistem kawalan versiyang terbaik, berbeza-beza, dan ini membawa kepada perdebatan hangat di kalangan pengaturcara. Memilih dan mengkajisistem kawalan versiuntuk projek anda, ingat bahawa faedah penyelesaian tertentu selalunya subjektif. Contohnya, keutamaan peribadi pengaturcara atau, katakan, penunjuk seperti prestasi, keupayaan pemalam IDE, dsb.

Perbezaan utama antara sistem kawalan versi ialah sama ada ia adalah pelayan pelanggan atau terdesentralisasi (p2p). Adakah mereka mempunyai repositori pusat (pelayan) di mana kod itu berasal dan kembali? perubahan yang dibuat. Atau adakah ia salinan dalam storan tempatan, dikemas kini melalui rakan sebaya: lagi rangkaian terdesentralisasi, digunakan untuk penyegerakan, pertukaran tampalan (set perubahan) dan untuk mengekalkan kod semasa.

Ia juga patut mengambil kira kelajuan, fungsi dan ambang untuk kemasukan/penguasaan sesuatu tertentusistem kawalan. Mari lihat yang paling biasasistem kawalan versidan sebab mengapa pengaturcara lebih suka penyelesaian tertentu.

Sistem versi serentak (CVS)

CVS muncul pada tahun 1980-an dan masih popular di kalangan pembangun produk komersial dan pembangun sumber terbuka.

CVS diedarkan di bawah termaPerjanjian Lesen Terbuka GNU dan membolehkan anda mendapatkan semula daripada pelayan versi yang diperlukan projek - "daftar keluar" (ekstrak) , dan kemudian hantar semula ke pelayan, "daftar masuk" (kembali),dengan perubahan yang dibuat.

Asalnya CVS telah dicipta untuk mengelakkan konflik versi. Semua peserta hanya diberikan versi terkini kod untuk digunakan. Ini adalah sistem kawalan versi pertama. Pengguna perlu melakukan perubahan dengan cepat pada repositori sebelum orang lain mengalahkannya.

Sekarang CVS mempunyai sokongan untuk mengerjakan projek dengan cawangan kod. Ini menghasilkan beberapa pilihan produk dengan ciri yang berbeza, yang boleh digabungkan kemudian.

Pelayan CVS biasanya dijalankan di bawah Unix, tetapi CVS -pelanggan juga tersedia dalam sistem pengendalian popular lain. CVS - "matang", diuji masasistem kawalan versi. Ia masih merupakan sistem sumber terbuka, tetapi hari ini ciri-ciri baru ditambah agak jarang.

Pada masa yang sama, CVSNT ialah versi yang dipisahkan kepada projek yang berasingan CVS Untuk pelayan Windows, - kini agak aktif mengembangkan fungsinya.

Kelebihan:

  • Teknologi teruji masa yang telah berada di pasaran selama beberapa dekad.

Kelemahan:

  • Menamakan semula atau memindahkan fail tidak ditunjukkan dalam sejarah
  • Risiko keselamatan yang dikaitkan dengan pautan simbolik ke fail
  • Tiada sokongan untuk operasi atom, yang boleh membawa kepada rasuah kod
  • Operasi dengan cawangan kod program mahal, seperti inisistem kawalantidak bertujuan untuk projek jangka panjang dengan cawangan kod

Apache Subversion (SVN)

SVN dicipta sebagai alternatif CVS untuk memperbaiki kekurangan CVS dan pada masa yang sama memastikan keserasian yang tinggi dengannya.

Seperti CVS SVN ialah sistem percuma kawalan versi sumber terbuka. Satu-satunya perbezaan ialah ia diedarkan di bawah lesen Apache, dan bukan di bawahBuka perjanjian Lesen GNU.

Untuk mengekalkan integriti pangkalan data, SVN menggunakan apa yang dipanggil operasi atom. Apabila versi baharu dikeluarkan, sama ada semua atau tiada pembetulan digunakan pada produk akhir. Oleh itu, kod tersebut dilindungi daripada suntingan separa huru-hara yang tidak konsisten antara satu sama lain dan menyebabkan ralat.

Ramai pembangun telah beralih kepadaSVN kerana Teknologi baru mewarisi peluang yang lebih baik CVS dan pada masa yang sama mengembangkannya.

Semasa di CVS operasi dengan cawangan kod adalah mahal dan tidak disediakan oleh seni bina sistem SVN dicipta hanya untuk ini. Iaitu, untuk projek yang lebih besar dengan percabangan kod dan banyak bidang pembangunan.

Kelemahan SVN disebut secara perbandingan kelajuan rendah dan kekurangan kawalan teragih versi. Diedarkan kawalan versi menggunakan model peer-to-peer dan bukannya pelayan berpusat untuk menyimpan kemas kini kod perisian. Dan walaupun model peer-to-peer berfungsi lebih baik dalam projek sumber terbuka, ia tidak sesuai dalam kes lain. Kelemahan pendekatan sisi pelayan ialah apabila pelayan ranap, pelanggan tidak mempunyai akses kepada kod.

Kelebihan:

  • Berasaskan sistem CVS
  • Membenarkan operasi atom
  • Operasi percabangan kod lebih murah
  • Pelbagai pilihan pemalam IDE
  • Tidak menggunakan model peer-to-peer

Kelemahan:

  • Ralat masih berterusan berkaitan dengan menamakan semula fail dan direktori
  • Set arahan yang tidak memuaskan untuk bekerja dengan repositori
  • Kelajuan yang agak rendah

Git

Sistem ini diwujudkan untuk mengurus pembangunan Inti Linux dan menggunakan pendekatan yang berbeza sama sekali daripada CVS dan SVN.

Asas Git konsep telah ditetapkan untuk mewujudkan pengedaran yang lebih cepatsistem kawalan versi, bertentangan dengan peraturan dan penyelesaian yang digunakan dalam CVS . Memandangkan Git dibangunkan terutamanya untuk Linux, ia berjalan paling pantas pada OS ini.

Git juga berfungsi pada sistem seperti Unix (seperti MacOS), dan untuk dijalankan platform Windows Pakej mSysGit digunakan.

Kod program mungkin tidak tersedia apabila menggunakan komputer tanpa repositori. Terdapat penyelesaian untuk masalah ini, dan sesetengah pembangun percaya bahawa kelajuan Git adalah harga yang berpatutan untuk dibayar atas kesulitan tersebut.

Git juga mempunyai banyak alat untuk menavigasi sejarah perubahan anda. Setiap salinan kerja kod sumber mengandungi keseluruhan sejarah pembangunan, yang sangat berguna apabila pengaturcaraan tanpa sambungan Internet.

Kelebihan:

  • Bagus untuk mereka yang membenci CVS/SVN
  • Peningkatan ketara dalam prestasi
  • Operasi murah dengan cawangan kod
  • Sejarah pembangunan penuh tersedia di luar talian
  • Diedarkan, model peer-to-peer

Kelemahan:

  • Halangan kemasukan (pembelajaran) yang tinggi bagi mereka yang pernah menggunakan SVN sebelum ini
  • Terhad Sokongan Windows(berbanding dengan Linux)

Mercurial

Mercurial telah dikeluarkan pada masa yang sama dengan Git. itu yang sama diedarkan sistem kawalan versi.

Mercurial dicipta sebagai alternatif kepada Git untuk membangunkan modul kernel Linux. Tetapi kerana kami memilih Git, Mercurial digunakan kurang. Walau bagaimanapun, banyak pembangun terkemuka bekerja dengan sistem ini, sebagai contohOpenOffice.org .

Sistem kawalan versi Mercurial adalah berbeza daripada yang lainsistem kawalan versikerana ia ditulis terutamanya dalam Python (bukan C). Walau bagaimanapun, beberapa bahagian dilaksanakan sebagai modul lanjutan dalam C.

Memandangkan sistem ini tidak berpusat dan ditulis dalam Python, ramai pengaturcara Python cenderung untuk beralih kepada Mercurial.

Pengguna ambil perhatian bahawa Mercurial mengekalkan beberapa ciri SVN, semasa berada sistem teragih, dan disebabkan persamaan ini, ia mempunyai halangan masuk yang lebih rendah bagi mereka yang sudah biasa dengan SVN. Dokumentasi Mercurial juga lebih lengkap, yang membantu anda membiasakan diri dengan perbezaan dengan lebih cepat.

Satu daripada kelemahan yang ketara Mercurial ialah, tidak seperti Git, ia tidak boleh menggabungkan dua cabang induk, kerana Mercurial menggunakan sistem pemalam dan bukannya sokongan skrip. Ini bagus untuk sesetengah pengaturcara, tetapi ramai yang tidak mahu melepaskan kuasa Git.

Kelebihan:

  • Lebih mudah dipelajari berbanding Git
  • Dokumentasi terperinci
  • Model yang diedarkansistem kawalan versi

Kelemahan:

  • Tiada pilihan untuk menggabungkan dua cawangan induk
  • Menggunakan pemalam dan bukannya skrip
  • Lebih sedikit peluang untuk penyelesaian bukan standard

yang manakawalan versi berfungsi untuk saya?

Dalam kebanyakan kes, pemaju menggunakan CVS kerana ia lebih dikenali oleh mereka. Jika sesebuah pasukan sudah mengusahakan sesuatu projek, maka prospek untuk memindahkan semua pembangunan kepada yang lainsistem kawalanentah bagaimana tidak memberi inspirasi. Jika mereka terpaksa menukar sistem, kemungkinan besar mereka akan bertukar kepada SVN.

CVS telah pun mencapai status "teknologi matang", yang bermaksud ciri dan penyelesaian baharu yang radikal tidak akan muncul di dalamnya. Momentum tabiat itu hilang apabila orang berpindah ke SVN. Ini bermakna bahawa CVS secara beransur-ansur menjadi perkara yang lepas.

Hari ini SVN memegang telapak tangan di kalangan pelayan pelayansistem kawalan versi. Ia termasuk faedah CVS dan mengatasi mereka. Jika kita bercakap tentang kelaziman, maka kemungkinan besar anda akan menghadapi lebih kerap CVS atau SVN berbanding dengan Git atau Mercurial. Jadi, pengetahuan tentang satu teknologi pelayan, walaupun tidak penting, akan memudahkan peralihan anda.

Disebabkan penggunaan meluas dan kematangan teknologi, SVN telah terkumpul tapak besar pengetahuan, memudahkan pengguna mendapatkan bantuan.

Git jelas lebih pantas daripada pesaingnya. Untuk projek yang dibuat untuk diedarkansistem kawalan versi, ini adalah peningkatan yang jelas.

Kelemahan penting Git ialah kadangkala sukar untuk menerangkan nuansa cara ia berfungsi.sistem kawalan, dan ini memperlahankan aliran kerja sementara pengaturcara membiasakannya. Walau bagaimanapun, sebaik sahaja "ambang kemasukan" diatasi, produktiviti meningkat dan kemudahan mengurus cawangan kod akan membayar balik sepenuhnya masa yang dibelanjakan.

Bagi mereka yang membenci Git (dan ia mempunyai pengkritik di kalangan pembangun), Mercurial ialah kompromi antara SVN dan Git. Sistem ini digunakan dalam banyak projek terkenal dan juga mempunyai dokumentasi yang baik.

Versi Git yang serasi dengan Windows juga sedang berkembang ke arah kelajuan versi Linux, jadi ia mungkin berkaitan dengan anda walaupun anda tidak membangun di Linux.

Untuk memahami mana yang terbaik untuk anda, ambil kira ciri projek dan pasukan anda. Bercakap dengan pemaju!

Jika projek memerlukan pepohon kod sumber tunggal yang akan diusahakan oleh sekumpulan kecil pengaturcara, maka SVN ialah pilihan anda. Ia boleh dipercayai dan direka hanya untuk kes sedemikian.

Jika anda melancarkan projek sumber terbuka, di mana anda masa yang berbeza beberapa pengaturcara akan berfungsi atau, jika ia dijangka kemas kini berterusan kod, kemudian pilih Git. Kepantasan dan pengurusan pokok sumber adalah lebih baik di sini berbanding di SVN.

Jika anda berada di persimpangan jalan atau hanya tidak menyukai cara SVN atau Git berfungsi, maka Mercurial adalah untuk anda.

Semua sistem ini berfungsi sepenuhnya. Dan juga percuma. Mereka digunakan untuk mencipta perisian, tapak dan juga sistem pengendalian yang anda gunakan dan biasa.

Pertama sekali, tentukan sama ada satu atau yang lain sesuaisistem kawalanversi untuk perniagaan anda, dan kemudian - sama pentingnya - pastikan bahawa pilihan ini tidak akan menimbulkan kemarahan pengaturcara.

Bermula dengan SVN

Jika anda tidak pernah bekerja dengan SVN atau Git dan tidak tahu bagaimana untuk bermula, makapenyelesaian pengehosan digabungkan dengan GUIakan membantu anda membiasakannya dengan cepat.

Seperti dalam kebanyakan kes, perkara yang paling penting ialah mula bekerja, dan kemudian pemahaman akan datang. Mengendalikan sistem kawalan versi sangat serupa dengan bekerja dengan fail pada pelayan menggunakan klien FTP.

CATATAN:Terdapat banyak penyelesaian pengehosan untuksistem kawalan versi, termasuk percuma tempoh percubaan. Anda boleh membuat repositori pertama anda berdasarkan mereka (tempat untuk kerjasama dengan fail kod) percuma sepenuhnya. Berikut adalah beberapa perkhidmatan ini:

Pengehosan SVN & GIT

Mencipta repositori pertama

Selepas anda membuat akaun, anda perlu membuat repositori - untuk setiap platform secara berasingan. Biasanya ia kelihatan seperti ini:

  • Log masuk ke akaun anda, klik pada projek anda.
  • Mencipta projek:
  • Dalam baris "Buat Projek Baharu", masukkan nama projek anda
  • Klik pada butang "Buat Projek".
  • Sambungan SVN:
  • Selepas mencipta projek, pilih tab "Kawalan Sumber" (versi kod sumber)
  • Klik pada pautan "Dayakan Kawalan Sumber"
  • Beri nama repositori
  • Klik "Simpan"

Pelanggan grafik SVN dan GIT

Jadi, repositori telah dibuat. Sekarang kita memerlukan segala-galanya untuk dipaparkan di dalamnya secara ringkas dan jelas. Untuk melakukan ini, anda memerlukan GUI.

program yang selesa untuk bekerja dengansistem kawalan versipada Microsoft Windows dan mungkin klien Apache Subversion terbaik yang tersedia. TortoiseSVN dilaksanakan sebagai lanjutan Cangkang Windows, menjadikannya mudah untuk disepadukan ke dalam pelayar. Ia juga merupakan program sumber terbuka dengan 34 pek bahasa tersedia

SmartGit

– Pelanggan grafik Git ( Sumber terbuka diedarkansistem kawalan versi). Berfungsi pada Windows, Mac OS X dan Linux.Kos lesen - $39

"Menyemak" repositori ("Daftar keluar")

Jadi, pelanggan telah dipilih. Sekarang anda perlu membuat repositori untuk sistem kawalan. Perlu masukURL repositori, nama pengguna dan kata laluan anda.

URL biasanya kelihatan seperti ini:https://svn .hostname.com/svn/ > (anda boleh menggunakan https:// (SSL) jika ada akaun berbayar)

  1. Pergi ke folder akar, klik butang "Daftar Keluar" dan buat folder kerja untuk klien. Kini anda boleh menambah fail padanya.
  2. Setelah fail projek diekstrak, anda boleh mengeditnya dalam direktori tempatan pada komputer anda.

Selepas membuat perubahan pada fail, klik butang Daftar Masuk pada bar alat untuk menyimpannya. Anda boleh melihat perubahan dan menambah ulasan kepada mereka - ia agak idea yang bagus, memandangkan pada masa hadapan anda akan mengetahui dengan tepat apa yang anda usahakan, apakah perubahan yang dibuat dan anda akan memaklumkan peserta projek lain.

Pelanggan anda juga harus menyediakan keupayaan untuk mula bekerja dengan semakan pada bila-bila masa dengan membuka log semakan atau sejarah perubahan - kemudian, jika perlu, anda boleh "gulung semula" ke versi terdahulu untuk setiap fail secara berasingan. Sekarang anda sudah biasa dengan konsep asas, dokumentasi

RCS (Revision Control System) telah dibangunkan pada awal 1980-an oleh Walter F. Tichy. Sistem ini membenarkan anda menyimpan versi hanya satu fail, jadi anda perlu mengurus berbilang fail secara manual. Untuk setiap fail di bawah kawalan sistem, maklumat versi disimpan dalam fail khas dengan nama fail asal yang mana aksara ",v" ditambahkan pada penghujungnya. Contohnya, untuk fail file.txt versi akan disimpan dalam fail file.txt,v . Untuk menyimpan versi, sistem menggunakan utiliti diff, iaitu, hanya perubahan antara versi disimpan.

Mari lihat contoh sesi dengan RCS (tanda $ selepas ini menandakan gesaan sistem pengendalian). Apabila kami ingin meletakkan fail di bawah kawalan RCS kami menggunakan arahan ci (dari daftar masuk, daftar):

$ci file.txt

Perintah ini mencipta fail file.txt,v dan memadam fail asal file.txt (melainkan jika diberitahu untuk tidak berbuat demikian). Perintah ini juga meminta penerangan untuk semua versi yang disimpan. Memandangkan fail asal telah dipadamkan oleh sistem, kami mesti memintanya semula untuk membuat perubahan. Untuk melakukan ini, kami menggunakan perintah co (dari daftar keluar, kawalan):

$ co file.txt

Perintah ini mengeluarkan versi terkini fail kami daripada file.txt,v . Sekarang kita boleh mengedit fail file.txt dan selepas kita menyelesaikan perubahan, jalankan perintah ci sekali lagi untuk menyimpan versi baharu fail yang diubah suai:

$ci file.txt

Apabila kami menjalankan arahan ini, sistem akan meminta kami penerangan tentang perubahan dan kemudian menyimpan versi baharu fail tersebut.

Walaupun RCS mematuhi keperluan minimum kepada sistem kawalan versi, ia mempunyai kelemahan utama berikut, yang juga berfungsi sebagai insentif untuk mencipta sistem berikut yang sedang dipertimbangkan:

  • Bekerja dengan hanya satu fail, setiap fail mesti dikawal secara berasingan;
  • Mekanisme yang menyusahkan kerja serentak beberapa pengguna dengan sistem, storan hanya disekat sehingga pengguna yang menyekatnya membuka kuncinya;

CVS

CVS (Concurrent Versions System) masih merupakan sistem yang paling banyak digunakan, tetapi dengan cepat kehilangan popularitinya kerana kekurangan yang akan saya bincangkan di bawah. Dick Grune membangunkan CVS pada pertengahan 1980-an. Untuk menyimpan fail individu, CVS (serta RCS) menggunakan fail dalam format RCS, tetapi membenarkan anda mengurus kumpulan fail yang terletak dalam direktori. CVS juga menggunakan seni bina pelayan-pelanggan di mana semua maklumat versi disimpan pada pelayan. Menggunakan seni bina pelayan pelanggan membolehkan CVS digunakan walaupun oleh pasukan pengguna yang diedarkan secara geografi di mana setiap pengguna mempunyai direktori kerja mereka sendiri dengan salinan projek.

Seperti namanya, pengguna boleh berkongsi sistem. Kemungkinan konflik apabila menukar fail yang sama diselesaikan oleh fakta bahawa sistem membenarkan perubahan hanya pada versi terkini fail tersebut. Oleh itu, adalah sentiasa disyorkan untuk mengemas kini salinan fail kerja anda sebelum memuat naik perubahan anda sekiranya berlaku perubahan yang bercanggah. Apabila mengemas kini, sistem membuat perubahan pada salinan kerja secara automatik dan hanya sekiranya berlaku perubahan yang bercanggah dalam salah satu lokasi fail, pembetulan manual lokasi konflik diperlukan.

CVS juga membolehkan anda mengekalkan berbilang baris pembangunan pada projek menggunakan cawangan pembangunan. Oleh itu, seperti yang dinyatakan di atas, anda boleh membetulkan ralat dalam versi pertama projek dan pada masa yang sama membangunkan fungsi baharu.

Mari lihat contoh kecil sesi dengan CVS. Pertama sekali, anda perlu mengimport projek ke dalam CVS, ini dilakukan menggunakan arahan import:

$ cd beberapa projek $ cvs import -m "Projek baharu" laluan dalam repositori tiada bermula

Di sini pilihan -m membolehkan anda menentukan perihalan perubahan secara langsung pada baris arahan dan jika anda meninggalkannya, ia akan dipanggil penyunting teks. Seterusnya, laluan di mana projek akan disimpan dalam repositori ditunjukkan (laluan dalam repositori dalam kes kami) dan selepasnya dua label: label pembangun (mungkin berguna jika anda menggunakan CVS untuk mengerjakan projek yang dibangunkan oleh seseorang else) dan label projek.

Selepas kami memuat naik projek kami ke repositori, kami perlu mencipta direktori baharu di mana salinan kerja projek itu akan ditempatkan di bawah kawalan CVS dan memuatkan projek menggunakan arahan checkout (kawalan), atau singkatannya:

$ cd some-working-dir $ cvs checkout path-in-repository

Untuk arahan checkout, kami menunjukkan laluan ke projek kami dalam repositori, yang kami nyatakan di atas dalam arahan import.

Sekarang kita boleh membuat perubahan pada projek dan memuat naiknya ke repositori menggunakan arahan komit (buat perubahan), atau singkatannya ci:

$ cvs commit -m "Beberapa perubahan"

Sama seperti arahan import, kami menentukan komen untuk perubahan kami menggunakan pilihan -m.

Jika kami ingin mengemas kini direktori kerja kami versi baru projek dari repositori yang kami gunakan perintah kemas kini(kemas kini), atau ringkasnya:

kemas kini $cvs

CVS telah digunakan jumlah yang besar projek, tetapi sudah tentu ia bukan tanpa kekurangannya, yang kemudiannya membawa kepada kemunculan sistem seterusnya yang sedang dipertimbangkan. Mari kita lihat kelemahan utama:

  • Memandangkan versi disimpan dalam fail RCS, tidak mungkin untuk menyimpan versi direktori. Kaedah standard untuk mengatasi halangan ini ialah menyimpan beberapa fail (contohnya, README.txt) dalam direktori;
  • Memindahkan atau menamakan semula fail tidak tertakluk kepada kawalan versi. Cara standard untuk melakukan ini adalah dengan menyalin fail dahulu, keluarkan yang lama menggunakan arahan cvs remove dan kemudian tambahkannya dengan nama baharunya menggunakan arahan cvs add;

Subversion

Subversion (SVN) telah dibangunkan pada tahun 2000 atas inisiatif CollabNet. SVN pada asalnya dibangunkan sebagai "CVS yang lebih baik" dan matlamat utama pembangun adalah untuk membetulkan ralat yang dibuat dalam reka bentuk CVS sambil mengekalkan antara muka yang serupa. SVN, seperti CVS, menggunakan seni bina pelayan pelanggan. Perubahan paling ketara berbanding CVS termasuk:

  • Perubahan atom (komit). Jika pemprosesan komit terganggu, tiada perubahan akan dibuat.
  • Menamakan semula, menyalin dan memindahkan fail mengekalkan keseluruhan sejarah perubahan.
  • Direktori, pautan simbolik dan metadata tertakluk pada kawalan versi.
  • Storan perubahan yang cekap untuk fail binari.

Mari kita lihat contoh arahan, walaupun harus diperhatikan bahawa kebanyakannya secara praktikal mengulangi arahan CVS. Untuk menggunakan projek dengan SVN, anda mesti mengimportnya terlebih dahulu ke dalam repositori menggunakan arahan import:

$ cd some-project $ svn import -m laluan-in-repository "Projek baharu".

Tidak seperti CVS, tidak perlu menentukan tag pembangun dan projek, yang tidak sering digunakan dalam amalan.

Sekarang kita perlu membuat salinan kerja projek menggunakan arahan checkout, atau co :

$ cd some-working-dir $ svn checkout path-in-repository

Selepas membuat perubahan, kami menggunakan arahan komit, atau ci, untuk menyimpan perubahan pada repositori:

$ svn commit -m "Beberapa perubahan"

Dan untuk mengemas kini salinan kerja projek, gunakan perintah kemas kini atau atas.

Sistem kawalan versi(daripada Sistem Kawalan Versi Bahasa Inggeris - VCS, atau Sistem Kawalan Semakan) - perisian khas untuk bekerja dengan maklumat yang kerap berubah, membolehkan anda menyimpan beberapa versi dokumen yang sama dan, jika perlu, kembali ke versi terdahulu, tentukan siapa yang membuatnya dan apabila ini atau itu berubah, dan banyak lagi.

Sistem sedemikian paling banyak digunakan dalam pembangunan perisian untuk menyimpan fail program yang sedang dibangunkan.

Ia sering berlaku bahawa beberapa orang bekerja pada projek yang sama pada masa yang sama, dan jika dua orang menukar fail yang sama, maka salah seorang daripada mereka mungkin secara tidak sengaja membuat asal perubahan yang dibuat oleh yang lain. Sistem kawalan versi menjejaki konflik tersebut dan menyediakan cara untuk menyelesaikannya. Kebanyakan sistem ini secara automatik boleh menggabungkan (gabungan) perubahan yang dibuat oleh pemaju yang berbeza. Walau bagaimanapun, penggabungan perubahan automatik seperti itu biasanya hanya boleh dilakukan untuk fail teks dan dengan syarat bahagian fail yang berlainan (tidak bertindih) telah ditukar. Had ini disebabkan oleh fakta bahawa kebanyakan sistem kawalan versi tertumpu pada menyokong proses pembangunan perisian, dan kod sumber program disimpan dalam fail teks. Jika penggabungan automatik gagal, sistem mungkin menawarkan untuk menyelesaikan masalah secara manual.

Sesetengah sistem kawalan versi menyediakan keupayaan untuk mengunci fail dalam repositori. Mengunci menghalang pengguna lain daripada mendapatkan salinan fail yang berfungsi atau menghalang orang lain daripada menukar salinan kerja fail tersebut (contohnya, melalui sistem fail) dan dengan itu menyediakan akses eksklusif hanya kepada pengguna yang bekerja dengan dokumen tersebut.

Kebanyakan sistem kawalan versi menyediakan ciri berikut:

  • membolehkan anda mencipta varian yang berbeza satu dokumen (cawangan) dengan sejarah umum perubahan sebelum titik cawangan dan dengan yang berbeza selepasnya;
  • memungkinkan untuk mengetahui siapa dan bila ditambah atau diubah set baris tertentu dalam fail;
  • mengekalkan log perubahan di mana pengguna boleh menulis penjelasan tentang perkara dan mengapa mereka berubah dalam versi tertentu;
  • mengawal hak akses pengguna, membenarkan atau menafikan membaca atau menukar data, bergantung pada orang yang meminta tindakan itu.

Setiap sistem kawalan versi mempunyai ciri khusus tersendiri dalam set arahan, cara pengguna bekerja dan pentadbiran. Namun begitu perintah am kerja untuk kebanyakan VCS adalah stereotaip sepenuhnya. Di sini diandaikan bahawa projek itu, walau apa pun, sudah wujud dan repositorinya terletak pada pelayan, yang mana pemaju mendapat akses.

Bermula dengan sistem. Langkah pertama yang mesti diambil oleh pembangun ialah mendapatkan salinan kerja projek atau bahagiannya yang akan diusahakan. Tindakan ini dilakukan menggunakan arahan standard mengekstrak versi (checkout atau klon) atau menggunakan pasukan khas, yang sebenarnya melakukan tindakan yang sama. Pembangun menentukan versi yang harus disalin secara lalai, versi terkini (atau yang dipilih oleh pentadbir sebagai yang utama) biasanya disalin.

Kitaran kerja harian. Kitaran kerja pembangun biasa semasa hari bekerja kelihatan seperti ini:

  • mengemas kini salinan kerja: Apabila perubahan dibuat pada versi utama projek, salinan kerja pada komputer pembangun menjadi usang dan percanggahannya dengan versi utama projek meningkat, ini meningkatkan risiko perubahan bercanggah (lihat di bawah), dan ia menjadi perlu untuk mengekalkan salinan kerja dalam keadaan sedekat mungkin dengan versi versi utama semasa, jadi pembangun mengemas kini salinan kerja sekerap mungkin, yang ditentukan oleh kekerapan perubahan bergantung pada aktiviti pembangunan, bilangan pembangun, dan masa yang dihabiskan untuk setiap kemas kini;
  • pengubahsuaian projek: pemaju mengubah suai projek, menukar fail yang disertakan di dalamnya dalam salinan kerja mengikut tugasan projek, kerja ini dilakukan secara tempatan dan tidak memerlukan panggilan ke pelayan VCS;
  • melakukan perubahan: Setelah menyelesaikan peringkat seterusnya kerja pada tugas, pembangun melakukan perubahannya, memindahkannya ke pelayan (sama ada ke cawangan utama, jika kerja pada tugas selesai sepenuhnya, atau ke cawangan pembangunan berasingan untuk tugas ini).