Mercurial

Vikipediya, ochiq ensiklopediya
Merkurial
Ishlab chiqaruvchiMatt Mackall
tashkil topdi:19-aprel 2005-yil
Eng so‘nggi versiyasi
LitsenziyaGNU GPL 2+
Vebsayt:mercurial.scm.org

Категория:Программное обеспечение по алфавиту Категория:Программное обеспечение, разработанное в 2005 году Категория:ПРО:ИТ:Статьи по алфавиту Категория:ПРО:ИТ:Последняя правка: в текущем месяце 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[tahrir | manbasini tahrirlash]

Mercurial tizimi Python da yozilgan, garchi unumdorlikka sezgir bo'lgan qismlar (masalan, diff ning o'z ilovasi kabi) C[1] da kengaytma modullari sifatida amalga oshirilgan. Rust ham ish faoliyatini yaxshilash uchun ishlatiladi.[2] Mercurial dastlab Linux uchun yozilgan, keyinchalik Windows, Mac OS X va ko'pgina Unix tizimlariga ko'chirilgan. Mercurial omborlari hg 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.

hg yordam dasturi ixcham interfeysga ega va Mercurial, masalan, git ga qaraganda osonroq o'rganish hisoblanadi.

Tushunchalar[tahrir | manbasini tahrirlash]

Ish jarayoni[tahrir | manbasini tahrirlash]

Mercurial - bu taqsimlangan (markazlashtirilmagan) versiyani boshqarish tizimi. Bu shuni anglatadiki, ish jarayoni odatda quyidagicha ko'rinadi:

  1. Shaxsiy kompyuterda yangi ombor yaratiladi (mavjud omborni klonlash, yangisini yaratish va hokazo). P.);
  2. Fayllar ushbu omborning ishchi katalogida o'zgartiriladi/qo'shiladi/o'chiriladi;
  3. O'zgartirishlar ushbu omborga (ya'ni shaxsiy kompyuterdagi mahalliy omborga) kiritilgan;
  4. 2 va 3-bosqichlar qancha kerak bo'lsa, shuncha takrorlanadi;
  5. Boshqa odamlarning o'zgarishlar to'plami olib tashlanadi (torting);
  6. O'zgarishlarni birlashtirish (birlashtirish);
  7. O'ziga beriladi (surish).

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[tahrir | manbasini tahrirlash]

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, hg commit o'rniga hg commi, hg comm yoki hg com ni yozishingiz mumkin, lekin agar siz hg c yozsangiz, Mercurial bu buyruqni bajarishdan bosh tortadi va "c" buyrug'i noaniq ekanligini aytib, buyruqlar ro'yxatini beradi. bu qisqartma ostida. Siz hg co dan hg commit uchun stenografiya sifatida foydalana olmaysiz, chunki u hg update, lekin hg ci stenografiyasi mavjud.

O'zgarishlar to'plamining mantiqiy tuzilishi[tahrir | manbasini tahrirlash]

right|thumb|320x320px| Qayta ko'rib chiqish grafik tasviriga misol. Uning o'ng tomonida siz tahrirlar ro'yxati, sharhlar va ularning xeshini ko'rishingiz mumkin hg commit buyrug'ini chaqirganingizda, o'zgarishlar amalga oshiriladi. Shu bilan birga, dastur omborga bir qator o'zgarishlarni saqlaydi (inglizcha: changeseto'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 erda har bir o'zgartirish to'plami bir yoki ikkita boshqasi bilan bog'lanadi.

Siz hg log --debug 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, hg -v help branch 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, hg parents 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[tahrir | manbasini tahrirlash]

Tahrirlar quyidagi xususiyatlar bilan tan olinadi[3] :

  • qayta ko'rib chiqish raqami;
  • o'zgarishlar to'plami identifikatori;
  • teglar (teg);
  • filial nomi.

Tahrir raqami[tahrir | manbasini tahrirlash]

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. hg log buyrug'ining chiqishida qayta ko'rib chiqish raqamini yo'g'on nuqtadan oldin ko'rish mumkin (masalan, "4:e1be1898f374").

To'plam identifikatorini o'zgartirish[tahrir | manbasini tahrirlash]

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). hg log buyrug'ining chiqishida o'zgarishlar to'plamining identifikatorini ikki nuqtadan keyin ko'rish mumkin (masalan, "4:e1be1898f374"). --debug opsiyasisiz hg log buyrug'i to'liq o'rniga qisqartirilgan (12 belgidan iborat) o'zgarishlar to'plami identifikatorini chop etadi.

Teglar[tahrir | manbasini tahrirlash]

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 hg tag buyrug'i yordamida tayinlanadi va barcha qo'shilgan teglarni hg tags buyrug'i yordamida ko'rish mumkin. Teg nomi ba'zi belgilarni o'z ichiga olmaydi (masalan, ": "), Mercurial hg tag buyrug'ini bajarishda kerak bo'lganda xabar beradi.

Filial nomi[tahrir | manbasini tahrirlash]

Har bir filialning o'z nomi bor. Filial yaratilganda ko'rsatiladi va boshqa hech qachon o'zgarmaydi.

Aniq bo'lmagan holatlar[tahrir | manbasini tahrirlash]

  • Agar raqam buyruqqa qayta koʻrib chiqish identifikatori sifatida uzatilsa, Mercurial tahrir raqami unga uzatilgan deb hisoblaydi va agar koʻrsatilgan tahrir raqami bilan oʻzgarishlar toʻplami boʻlmasa, faqat qisqartirilgan oʻzgarishlar toʻplami identifikatori bilan farq qiladi. Misol uchun, agar omborda "6" tahrir raqamiga ega bitta o'zgartirishlar to'plami va "647362ac74d76124267215af1a3f94aa9707dfdf" identifikatorli boshqa o'zgarishlar to'plami ("6" bilan boshlanadi), hg log -r 6 noaniqlik haqida xabar bermasdan birinchi o'zgarishlar to'plami haqida xabar beradi. Shuning uchun, agar global identifikator raqam bilan boshlansa, uni har doim faqat harf o'z ichiga olguncha qisqartirish foydali bo'ladi. Bu xatti-harakatlar Mac OS X 10.7.4 ostida 2.2.1 versiyada kuzatilgan.
  • Agar siz "5" kabi nomli teg yaratsangiz, omborda "5" tahrir raqamlari bo'lgan o'zgarishlar to'plami mavjud bo'lganda (yoki kelajakda bo'ladi), u holda Mercurial birinchi navbatda tahrir raqami bo'yicha o'zgarishlar to'plamini qidiradi. Ammo agar siz omborda "e1be" bilan boshlanadigan o'zgarishlar to'plami identifikatori mavjud bo'lganda (yoki kelajakda bo'ladi) "e1be" kabi nomli teg yaratsangiz, Mercurial o'zgarishlar to'plamini birinchi navbatda teglar bo'yicha qidiradi. Bundan tashqari, ikkala holatda ham noaniqlik haqida xabar berilmaydi. Shu sababli, faqat raqamlar va / yoki harflardan iborat teglar yaratish tavsiya etilmaydi "a, b, c, d, e, f". Bu xatti-harakatlar Mac OS X 10.7.4 ostida 2.2.1 versiyada kuzatilgan.
  • Siz bo'sh papkani omborga qo'sha olmaysiz (bu muammoni hal qilish uchun siz papkaga istalgan faylni qo'yishingiz mumkin, masalan, readme.txt). Buning sababi shundaki, Mercurial papkalarni kuzatmaydi, faqat fayllar. Xulq-atvor tizimni soddalashtirish uchun ataylab amalga oshiriladi va hozircha hech qanday o'zgarishlar rejalashtirilmagan[4].

O'ziga xos xususiyatlar[tahrir | manbasini tahrirlash]

git dan farqli o'laroq, Mercurial yanada qat'iy ishlash modelini o'z zimmasiga oladi, uning eng diqqatga sazovor jihatlari[5][6] :

  • "Halol filiallar" - har qanday filialni boshidanoq kuzatish mumkin;
  • O'zgarishlarni revlog ko'rinishida saqlash (git-dagi blobdan farqli o'laroq);
  • Bitta o'tishda faqat ikkita filialni birlashtirish mumkin (git bir nechta birlashtirishga ruxsat beradi);
  • Majburiyatni bekor qilishning iloji yo'qligi - buning o'rniga siz tuzatuvchini yuborishingiz kerak, u bajarilmaganning ustiga qo'yiladi;
  • Qattiqroq farq nazorati sukut bo'yicha yagona standartga amal qiladi va turli versiyalar va mijozlar o'rtasidagi ziddiyatlarni bartaraf qiladi.

Qo'shimcha mablag'lar[tahrir | manbasini tahrirlash]

Mercurial omborlarga veb-interfeysni taqdim etish uchun CGI skriptlari bilan birga keladi[7].

TortoiseHg[8] grafik qobig'i mavjud bo'lib, u Windows (Explorer integratsiyasi bilan) va Linux ostida (alohida dastur sifatida[9] yoki Gnome/Nautilus integratsiyasi[10] 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[11][12], IntelliJ IDEA[13][14], Eclipse[15], Qt Creator (2.0 versiyasidan beri). PIDA kabi Mercurial imkoniyatlariga ega.[16], NetBeans[17]. Emacs tarkibiga kiritilgan universal VC paketi yordamida Mercurial bilan Emacs ichidan ishlash mumkin.

Mercurial uchun eksperimental yordam Trac[18] da mavjud. Redmine loyihasi[19], 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[tahrir | manbasini tahrirlash]

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[21] 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[22] bor.

Eslatmalar[tahrir | manbasini tahrirlash]

Havolalar[tahrir | manbasini tahrirlash]

Adabiyotlar[tahrir | manbasini tahrirlash]

  1. {{Veb manbasi}} andozasidan foydalanishda sarlavha= parametrini belgilashingiz kerak. „{{{title}}}“.
  2. {{Veb manbasi}} andozasidan foydalanishda sarlavha= parametrini belgilashingiz kerak. „{{{title}}}“.
  3. {{Veb manbasi}} andozasidan foydalanishda sarlavha= parametrini belgilashingiz kerak. „{{{title}}}“.
  4. Manba xatosi: Invalid <ref> tag; no text was provided for refs named autogenerated1
  5. „Сходство и различие между Mercurial и Git“ (ru). 2018-yil 2-avgustda asl nusxadan arxivlangan. Qaraldi: 2018-yil 5-iyun.
  6. „Ещё раз о «Mercurial против Git» (с картинками)“ (ru). 2018-yil 2-avgustda asl nusxadan arxivlangan. Qaraldi: 2018-yil 5-iyun.
  7. Andoza:Недоступная ссылка(rus.)
  8. {{Veb manbasi}} andozasidan foydalanishda sarlavha= parametrini belgilashingiz kerak. „{{{title}}}“.
  9. SourceForge.net: TortoiseHg — DevelopAndoza:Недоступная ссылка
  10. SourceForge.net: TortoiseHg — DevelopAndoza:Недоступная ссылка
  11. {{Veb manbasi}} andozasidan foydalanishda sarlavha= parametrini belgilashingiz kerak. „{{{title}}}“.
  12. „arxiv nusxasi“. 2020-yil 3-iyulda asl nusxadan arxivlangan. Qaraldi: 2022-yil 31-may.
  13. hg4idea
  14. JetBrains IntelliJ IDEA Plugin Repository[sayt ishlamaydi]
  15. „arxiv nusxasi“. 2007-yil 21-iyunda asl nusxadan arxivlangan. Qaraldi: 2022-yil 31-may.
  16. „arxiv nusxasi“. 2007-yil 4-sentyabrda asl nusxadan arxivlangan. Qaraldi: 2022-yil 31-may.
  17. „arxiv nusxasi“. 2007-yil 15-iyulda asl nusxadan arxivlangan. Qaraldi: 2022-yil 31-may.
  18. {{Veb manbasi}} andozasidan foydalanishda sarlavha= parametrini belgilashingiz kerak. „{{{title}}}“.
  19. „arxiv nusxasi“. 2010-yil 29-mayda asl nusxadan arxivlangan. Qaraldi: 2022-yil 31-may.
  20. Reed, J Paul „Version Control System Shootout Redux Redux“ (2007-yil 12-aprel). 2012-yil 17-noyabrda asl nusxadan arxivlangan. Qaraldi: 2019-yil 17-fevral.
  21. Projects with synchronized Mercurial repositories(ingl.)
  22. {{Veb manbasi}} andozasidan foydalanishda sarlavha= parametrini belgilashingiz kerak. „{{{title}}}“.