Mercurial. Merkuriy (eng — "simob, mobil"), Hg nomi bilan ham tanilgan (simob kimyoviy elementi nomidan) - bu juda katta kod omborlari bilan samarali ishlash uchun mo'ljallangan, o'zaro platformalarda taqsimlangan versiyani boshqarish tizimi. Birinchidan, bu konsol dasturi. Mercurial Git yaratilishiga olib kelgan bir xil to'qnashuvdan chiqdi. Yangi tizim muallifi Mett "Makkall" edi. Tavsif. Mercurial tizimi Python da yozilgan, garchi unumdorlikka sezgir bo'lgan qismlar (masalan, diff ning o'z ilovasi kabi) C da kengaytma modullari sifatida amalga oshirilgan. Rust ham ish faoliyatini yaxshilash uchun ishlatiladi. Mercurial dastlab Linux uchun yozilgan, keyinchalik Windows, Mac OS X va ko'pgina Unix tizimlariga ko'chirilgan. Mercurial omborlari codice_1 buyruq qatori vositasi yordamida boshqariladi, ammo GUI-lar ham mavjud. Versiyalarni boshqarish tizimlarining an'anaviy xususiyatlari bilan bir qatorda, Mercurial to'liq markazlashtirilmagan ishlarni (asosiy kodlar ombori tushunchasi yo'q), tarmoqlanishni (bitta loyihaning bir nechta filiallarini saqlab turish va filiallar o'rtasida o'zgarishlarni nusxalash mumkin), omborlarni birlashtirishni (qaysi) qo'llab-quvvatlaydi. ishning "taqsimlanishiga" erishadi). HTTP / HTTPS, SSH orqali va qo'lda paketlangan o'zgarishlar to'plamidan foydalangan holda omborlar o'rtasidagi aloqani qo'llab-quvvatlaydi. codice_1 yordam dasturi ixcham interfeysga ega va Mercurial, masalan, git ga qaraganda osonroq o'rganish hisoblanadi. Tushunchalar. Ish jarayoni. Mercurial - bu taqsimlangan (markazlashtirilmagan) versiyani boshqarish tizimi. Bu shuni anglatadiki, ish jarayoni odatda quyidagicha ko'rinadi: Ya'ni, barcha kundalik ishlar mahalliy omborda amalga oshiriladi va zarurat tug'ilganda, ularning ish natijalari bir yoki bir nechta boshqa omborlarga yuboriladi. Mercurial-ni majburiyat bajarilganda avtomatik ravishda boshqa omborlarga o'zgartirish kiritish uchun sozlash orqali masofaviy omborlar bilan ishlashda qadamlar sonini kamaytirishingiz mumkin. Konsol dasturi. Konsol dasturi shunday amalga oshiriladiki, har qanday buyruq nomi, uning nomi bir ma'noli bo'lib qolsa, uni qisqartirish mumkin. Bundan tashqari, ba'zi buyruqlar taxalluslarga ega. Masalan, codice_3 o'rniga codice_4, codice_5 yoki codice_6 ni yozishingiz mumkin, lekin agar siz codice_7 yozsangiz, Mercurial bu buyruqni bajarishdan bosh tortadi va "c" buyrug'i noaniq ekanligini aytib, buyruqlar ro'yxatini beradi. bu qisqartma ostida. Siz codice_8 dan codice_3 uchun stenografiya sifatida foydalana olmaysiz, chunki u codice_10 lekin codice_11 stenografiyasi mavjud. O'zgarishlar to'plamining mantiqiy tuzilishi. codice_3 buyrug'ini chaqirganingizda, o'zgarishlar amalga oshiriladi. Shu bilan birga, dastur omborga bir qator o'zgarishlarni saqlaydi (o'zgartirishlar yoki qayta ko'rib chiqish). Jismoniy jihatdan bir xil o'zgarishlar sizniki kabi sodir bo'ladi, lekin ular nusxada emas, balki xizmat fayllarida saqlanadi (batafsilroq " Sahna orqasida"). Qoida tariqasida, kiritilgan barcha o'zgarishlar to'plami katta ulangan tarmoq (grafik) sifatida ko'rsatiladi, bu yerda har bir o'zgartirish to'plami bir yoki ikkita boshqasi bilan bog'lanadi. Siz codice_13 buyrug'i yordamida amalga oshirilgan o'zgarishlar to'plami bilan bog'langan asosiy o'zgarishlar to'plamining identifikatorlarini topishingiz mumkin. Har bir o'zgartirish to'plamida ikkita ota-ona bo'ladi (bu ombor ichida tarmoqqa ajratish imkonini beradi, codice_14 qarang). "-1:0000000000000000000000000000000000000000" qiymati ota-onaning yo'qligini bildiradi. Masalan, ombordagi birinchi oʻzgartirishlar toʻplami ikkala ota-ona uchun ham ushbu qiymatga ega boʻladi, keyingi oʻzgarishlar toʻplami esa ikkinchi ota-ona uchun bu qiymatga ega boʻladi (agar ular uchun omborda tarmoqlanish ishlatilmagan boʻlsa) va birinchi ota-onada Oldingi oʻzgarishlar toʻplamidagi identifikator. Ishchi katalogni bir xil o'zgarishlar to'plami sifatida ko'rib chiqish ham foydalidir (ular hali amalga oshirilmagan, lekin tez orada ham amalga oshirilishi mumkin). Ishchi katalog, shuningdek, codice_15 buyrug'i bilan topilishi mumkin bo'lgan bir yoki ikkita ota-ona o'zgarishlar to'plami bilan bog'langan. O'zgartirishlar kiritilgandan so'ng, bu ota-onalar yangi (allaqachon amalga oshirilgan) o'zgarishlar to'plamining ota-onasi bo'ladi. To'plam identifikatorini o'zgartirish. Tahrirlar quyidagi xususiyatlar bilan tan olinadi : Tahrir raqami. Qayta ko'rib chiqish raqami - bu o'zgarishlar to'plamining omborga qo'shilish tartibini ifodalovchi butun son. Qayta ko'rib chiqish raqami noldan boshlanadi, avtomatik ravishda o'zgarishlar to'plamiga tayinlanadi va o'zgarishlar to'plamini aniqlash uchun ishlatilishi mumkin. Har bir ombor klonida bir xil o'zgartirishlar to'plamining qayta ko'rib chiqish raqami boshqacha bo'lishi mumkin. codice_16 buyrug'ining chiqishida qayta ko'rib chiqish raqamini yo'g'on nuqtadan oldin ko'rish mumkin (masalan, "4:e1be1898f374"). To'plam identifikatorini o'zgartirish. O'zgarishlar to'plami identifikatori raqamlar va "a, b, c, d, e, f" harflaridan iborat SHA-1 xeshi bo'lib, masalan, "e1be1898f3747386c41c8a5c5776e87373f6d3d3". O'zgarishlar to'plamining identifikatori avtomatik ravishda har bir o'zgarishlar to'plamiga tayinlanadi, bu o'zgarishlar to'plamining mazmunidan hisoblanadi va shuning uchun barcha omborlarda bir xil o'zgarishlar to'plamiga mos keladi. Ikki xil o'zgartirish to'plami uchun bir xil SHA-1 xeshi yaratilganda to'qnashuv ehtimoli juda kichik. Mercurial uni buyruqlarda ishlatishda to'liq identifikator qatorini talab qilmaydi, unga faqat kerakli o'zgarishlar to'plamini noyob tarzda aniqlaydigan boshlang'ich qismi kerak (aks holda Mercurial noaniqlik haqida xabar beradi). codice_16 buyrug'ining chiqishida o'zgarishlar to'plamining identifikatorini ikki nuqtadan keyin ko'rish mumkin (masalan, "4:e1be1898f374"). codice_18 opsiyasisiz codice_16 buyrug'i to'liq o'rniga qisqartirilgan (12 belgidan iborat) o'zgarishlar to'plami identifikatorini chop etadi. Teglar. Qayta ko'rib chiqish raqami va o'zgarishlar to'plami identifikatoriga qo'shimcha ravishda, Mercurial har bir o'zgartirish to'plamiga teglar (yoki teglar) deb ataladigan bir yoki bir nechta ixtiyoriy ramziy nom berish imkoniyatini beradi. Teglar codice_20 buyrug'i yordamida tayinlanadi va barcha qo'shilgan teglarni codice_21 buyrug'i yordamida ko'rish mumkin. Teg nomi ba'zi belgilarni o'z ichiga olmaydi (masalan, ": "), Mercurial codice_20 buyrug'ini bajarishda kerak bo'lganda xabar beradi. Filial nomi. Har bir filialning o'z nomi bor. Filial yaratilganda ko'rsatiladi va boshqa hech qachon o'zgarmaydi. O'ziga xos xususiyatlar. git dan farqli o'laroq, Mercurial yanada qat'iy ishlash modelini o'z zimmasiga oladi, uning eng diqqatga sazovor jihatlari : Qo'shimcha mablag'lar. Mercurial omborlarga veb-interfeysni taqdim etish uchun CGI skriptlari bilan birga keladi. TortoiseHg grafik qobig'i mavjud bo'lib, u Windows (Explorer integratsiyasi bilan) va Linux ostida (alohida dastur sifatida yoki Gnome/Nautilus integratsiyasi bilan) ishlaydi. Linux va Windows uchun ishlab chiqilayotgan hgtui konsol mijozi mavjud (cygwin yordamida). Atlassian, shuningdek, hg va svn va git-ga kirishni ta'minlaydigan SourceTree mijozini targ'ib qilmoqda. Bir qator ishlab chiqish muhitlari Microsoft Visual Studio, IntelliJ IDEA, Eclipse, Qt Creator (2.0 versiyasidan beri). PIDA kabi Mercurial imkoniyatlariga ega., NetBeans. Emacs tarkibiga kiritilgan universal VC paketi yordamida Mercurial bilan Emacs ichidan ishlash mumkin. Mercurial uchun eksperimental yordam Trac da mavjud. Redmine loyihasi, shuningdek, Mercurial omborlarini saqlaydi. Tailor yordam dasturi yoki konvertatsiya kengaytmasi yordamida boshqa versiyalarni boshqarish tizimlarining, jumladan CVS, Subversion, Git, Perforce, Darcs, GNU Arch, Bazaar ning repozitoriylarini aylantirish mumkin. Mercurial yordamida loyihalar. Ko'pgina bepul dasturiy ta'minotni ishlab chiqish loyihalarida Mercurial asosiy versiyani boshqarish tizimi sifatida ishlatiladi. Ular orasida: GCC, Vim, Emacs va Linux yadrosi kabi boshqa loyihalar asosiy omborlarining simob oynalari qo'llab-quvvatlanadi. Mercurial’dan uzoq vaqt foydalanilgan, lekin 2019—2021-yillarda Git’ga oʻtgan loyihalar orasida Adium, CLISP, Illumos, Coin3D, OpenJDK, SDL bor.