version-control - tools - mercurial معنى




Mercurial للمبتدئين: الدليل العملي النهائي (15)

كيف يمكنك العودة إلى Changeset؟

اثنين من الخيارات المتاحة

طريقة سهلة (تغيير مجموعة التغيير الواحدة)

$ hg backout -m 'back out second change' tip
reverting myfile
changeset 2:01adc4672142 backs out changeset 1:7e341ee3be7a
$ cat myfile
first change

الطريق الصعب (فرق يدوي وتطبيق)

الخطوة 1 : إنشاء ملف تصحيح لتغيير ما تم تغييره بين المراجعة 107 و 108:

hg diff -r107 -r108 --reverse  > revert-change.patch

(بالتناوب ، hg diff -r108 -r107 بدون - سيفعل العكس نفس الشيء)

الخطوة 2 : قم بتطبيق ملف التصحيح:

patch -p1 < revert-change.patch

قد يفشل تطبيق بعض الاختلافات ، على سبيل المثال:

Hunk #3 FAILED at 517.
1 out of 3 hunks FAILED -- saving rejects to file 'foo/bar.c.rej'

سيحتوي ملف .rej على محتويات الاختلاف الذي فشل في تطبيقه ، ستحتاج إلى إلقاء نظرة.

مستوحاة من Git للمبتدئين: دليل عملي نهائي .

هذا هو مجموعة من المعلومات حول استخدام Mercurial للمبتدئين للاستخدام العملي .

مبتدئ - مبرمج لديه لمس التحكم بالمصدر دون فهمه جيدًا.

عملي - يغطي المواقف التي يواجهها غالبية المستخدمين في كثير من الأحيان - إنشاء مستودع ، وفرع ، ودمج ، وسحب / دفع من / إلى مستودع بعيد ، وما إلى ذلك.

ملاحظات :

  • اشرح كيفية تنفيذ شيء ما بدلاً من كيفية تنفيذ شيء ما.
  • تعامل مع سؤال واحد لكل إجابة.
  • الإجابة بوضوح وبشكل موجز قدر الإمكان.
  • تعديل / توسيع إجابة موجودة بدلاً من إنشاء إجابة جديدة حول نفس الموضوع.
  • يرجى تقديم رابط إلى الويكي Mercurial أو كتاب HG للأشخاص الذين يرغبون في معرفة المزيد.

الأسئلة:

تركيب / الإعداد

التعامل مع الكود

وسم ، المتفرعة ، النشرات ، خطوط الأساس

آخر

مراجع زئبقية أخرى


كيف يمكنك تكوينه لتجاهل الملفات؟

تم تكوين Ignore في ملف نصي عادي يسمى .hgignore في جذر مستودع التخزين الخاص بك. أضفه تمامًا مثل الملف العادي مع:

hg add .hgignore

هناك خياران لغويان متاحان لمطابقة الملفات ، glob و regexp. الكرة الأرضية هي امتداد لاسم الملف يشبه يونكس و regexp هو تعبيرات عادية. يمكنك تنشيط كل منها عن طريق إضافة syntax: glob أو syntax: regexp على سطر بنفسه. ستستخدم جميع الأسطر التالية ذلك البنية ، حتى علامة النحو التالية. يمكنك الحصول على العديد من علامات النحو كما تريد. بناء الجملة الافتراضي هو regexp ، لذلك إذا كنت تستخدم regexp فقط ، فأنت لا تحتاج إلى أي علامة بناء جملة.

يمكنك إضافة تعليقات مع #

مثال:

# python temporary files
syntax: glob
*.pyc

#editor autosaves
*~

# temporary data
syntax: regexp
temp

لا ينطبق تجاهل إلا على الملفات غير المُدارة (أي الملفات التي لم يتم إيداعها بالفعل). لتجاهل الملفات الموجودة تحت تحكم الإصدار ، يمكنك استخدام رموز التبديل -I و -X.


جيد واجهة المستخدم الرسومية / IDE المساعد ل Mercurial؟

واجهة المستخدم الرسومية

  • TortoiseHg فقط عن أي نظام تشغيل. يتضمن تكامل Windows Explorer. كما أنه يعمل في لينكس وعدد قليل من أنظمة التشغيل الأخرى بما في ذلك نظام التشغيل ماكس أو إس إكس. وهو يتميز بواجهة عالية الجودة إلى حد ما ، ويُعد استخدامًا قليلاً في البداية ، ولكنه كامل وقوي جدًا.
  • يعمل برنامج Murky على نظام التشغيل Mac OS X 10.5 أو أحدث. مورك جيد لاستكشاف المستودع والأوامر الأساسية ، ولكنك ستحتاج إلى معرفة كيفية استخدام سطر الأوامر أيضًا.
  • MacHg هو عبارة عن نظام Mac OS X Gui جميل يحتوي على وظائف و ملمع أكثر من Murky ، لكنك ستظل بحاجة إلى سطر الأوامر أيضًا.
  • SourceTree هو عميل Mac في الأصل ، مع إصدار Windows متوفر في الآونة الأخيرة. واجهة مستخدم جميلة (على الأقل على نظام التشغيل OS X) ، تدعم غالبية ميزات الزئبق ، بما في ذلك الرف.

الإضافات


كيف أتفاعل مع Subversion؟

هناك ثلاث طرق:

سيقوم الامتداد convert باستنساخ مستودع Subversion موجود في مستودع Mercurial. انها تأتي مع Mercurial. يعمل تقريبًا مثل هذا:

hg convert <Subversion URL or directory> <path to new Mercurial repository>

على سبيل المثال ، سيؤدي ذلك إلى الاستيلاء على صندوق مخزن SixApart memcached.

hg convert http://code.sixapart.com/svn/memcached/trunk

يمكن للملحق أن يجلب بشكل تدريجي تنقيحات جديدة من مستودع Subversion إلى مستودع Mercurial (سحب شبيه بقليل). ومع ذلك فإنه لا يدعم اتخاذ مراجعات Mercurial وإرسالها مرة أخرى إلى Subversion (بدون دفع). [XXX: صحح هذا إذا كان خطأ] .

تمديد hgsubversion . إنه الحل الأكثر تطوراً في العديد من النواحي لأنه يستخدم واجهة برمجة تطبيقات Subversion للتواصل مع مستودع Subversion. ويهدف إلى أن يصبح جسر hg-svn. إنه يسمح بالتعميم المستدير الكامل للمراجعات (الاستنساخ الكامل ، والسحب ، والدفع) ، لكن حتى كتابة هذه السطور [XXX: يعدل هذا إذا / عندما يصبح غير صحيح] فإنه لا يزال قيد التطوير ولا توجد حتى الآن إصدارات رسمية. نتيجة لذلك يعمل فقط مع أحدث Mercurial (1.3 اعتبارا من كتابة هذه السطور).

  • فهو يعيّن العلامات والفروع (التي تسبق جميع العلامات ذات tags/ لتمييزها عن الفروع المسماة بشكل مكافئ).
  • تحتفظ الشركة closed-branches خاصة closed-branches لإغلاق الفروع التي تتم إزالتها في التخريب.
  • يتطلب الأمر وضع مستودع التخريب وفقًا لاتفاقية الجذع / الفروع / العلامات.
  • عادةً ما يكون مجموعة الأوامر hg svn <subcommand> بالرغم من أنها تهدف إلى التكامل مع النقطة التي لا تحتاج إلى جزء svn (بمعنى أنها تريد معالجة استنساخ Subversion قدر المستطاع مثل أي مستودع Mercurial آخر). .

يعمل مثل هذا:

استنساخ:

hg svnclone <Subversion URL> 

أو (فقط من أجل svn:// URLs)

hg clone <svn:// URL>

سحب. شد:

hg svn pull

إدفع:

hg svn push

واردة:

hg svn incoming

المنتهية:

hg svn outgoing

التحقق من مستودع كامل:

hg svnclone http://code.sixapart.com/svn/memcached

الأداة المساعدة hgsvn ( شجرة bitbucket ). حتى وقت قريب هذا فقط يتيح لك استنساخ وسحب مستودع Subversion ، ولكن اعتبارا من hgsvn 0.1.7 أنه يدعم الدفع. [أنا لا أعرف جيدا كيف هو دفع. يجب على أي شخص لديه خبرة أكبر تحديث ذلك.] يحتوي على الميزات البارزة التالية:

  • يقوم بإنشاء علامة Mercurial لكل علامة SVN.
  • يضع علامة محلية على كل changeset لوضع علامة على مراجعة SVN الخاصة به.
  • يضع كل مراجعة Mercurial على فرع مسمى اسمه بعد فرع SVN الخاص به. على سبيل المثال branches/some-feature ستكون branches/some-feature مثل hg branch some-feature . يضع الجذع على trunk (أي لا يوجد شيء على الفرع الافتراضي Mercurial ، إلا إذا كان المستخدم ينتقل إليه صراحة.)
  • سوف يحاول التعرف على الفروع والعلامات وإنشاءها ، ولكن إذا لم يكن قادراً على تخطيها. يكون ذلك مفيدًا عندما لا يتبع مستودع التخريب مخطط / فروع / العلامات التقليدية.

يعمل مثل هذا:

استنساخ:

hgimportsvn <Subversion URL>

سحب. شد:

hgpullsvn

إدفع:

hgpushsvn

واردة:

hgpullsvn -n

المنتهية:

hgpushsvn -n

التحقق من مستودع كامل:

hgimportsvn http://code.sixapart.com/svn/memcached

التحقق من الجذع فقط:

hgimportsvn http://code.sixapart.com/svn/memcached/trunk

كيف تحصل على أحدث رمز؟

يتذكر Mercurial حيث تم استنساخ مستودع من (في .hg / hgrc) بحيث يمكنك ببساطة تشغيل:

hg pull

لسحب أحدث رمز من مستودع الأصل. (هذا لا يقوم بتحديث دليل العمل)

hg update

لتحديث دليل العمل.

hg pull -u

لتنفيذ كل من السحب والتحديث دفعة واحدة.


كيف ترتكب التغييرات؟

استدعاء هذا الأمر من المستودع الزئبقي المحلي الحالي *

hg commit [OPTION]... [FILE]...

الاسم المستعار: ci

  • يوجد مستودع زئبقي محلي .hg داخل الدليل الحالي

أين يمكن أن يكون الخيار:

 -A --addremove     mark new/missing files as added/removed before committing
    --close-branch  mark a branch as closed, hiding it from the branch list
 -I --include       include names matching the given patterns
 -X --exclude       exclude names matching the given patterns
 -m --message       use <text> as commit message
 -l --logfile       read commit message from <file>
 -d --date          record datecode as commit date
 -u --user          record user as committer

مثال على ذلك هو:

hg commit -m "added readme" README

ملاحظات :

  • إذا تم حذف قائمة الملفات ، فسيتم الالتزام بجميع التغييرات التي تم الإبلاغ عنها بواسطة "hg status".
  • إذا كنت تلتزم بنتيجة الدمج ، فلا تقدم أي أسماء ملفات أو مرشحات -I / -X.
  • إذا لم يتم تحديد أي رسالة التزام ، فسيتم تشغيل المحرر الذي تمت تهيئته لمطالبتك برسالة.

كيف ترى التغييرات التي سيتم إرسالها إلى مستودع upstream عند الدفع؟

استخدم hg outgoing للحصول على قائمة مجموعات التغييرات التي سيتم تعيينها على المخزون الافتراضي:

$ hg outgoing

للحصول على التغييرات البرمجية الفعلية ، استخدم -p ( --patch ). سيؤدي ذلك إلى إخراج كل التغييرات بالكامل:

$ hg outgoing -p

كيف ترى تاريخ المراجعات لملف أو مستودع؟

لإظهار سجل النُسخ السابقة لمخزون أو ملفات كاملة

$ hg log {file(s)}

أو

$ hg history {file(s)}

ولرؤية القائمة بترتيب عكسي

$ hg log -r:

كيف تعود إلى إصدار سابق من الشفرة؟

من هذا السؤال

$ hg update [-r REV]

van: إذا ارتكبت في وقت لاحق ، فسوف تنشئ فعليًا فرعًا جديدًا. ثم قد تستمر في العمل فقط على هذا الفرع أو في نهاية المطاف دمج القائمة الموجودة فيه.


كيف تقوم بإزالة ملف من المستودع؟

لإزالة ملف من المستودع وإزالته على الالتزام التالي:

$ hg remove {file(s)}

لإزالة ملف من المستودع ، دون حذفه

$ hg remove -Af {file(s)}

أو من Mercurial 1.3

$ hg forget {file(s)}

كيف تقوم بدمج أجزاء من فرع في فرع آخر؟

قم بتمكين الامتداد "transplant" في .hg / hgrc

[extensions]
transplant=

تحميل الفرع المستهدف ثم زرع النسخة المستهدفة.
على سبيل المثال: مراجعة cherry pick 81 من الفرع 'foo' إلى الفرع الحالي

$ hg transplant -b foo 81

كيف تقوم بدمج الفروع؟

$ cd repository-where-i-want-to merge
$ hg pull branch-i-want-to-merge
$ hg merge # if necessary

كيف يمكنك استخراج تصحيح من مجموعة معينة؟

$ hg export -o patchfile changeset

يمكنك بعد ذلك استيراد هذا إلى فرع آخر مع:

$ hg import patchfile

كيف يمكنك التحقق من التعليمات البرمجية؟

hg clone [OPTION]... SOURCE [DEST]

أين يمكن أن يكون الخيار:

 -U --noupdate      the clone will only contain a repository (no working copy)
 -r --rev           a changeset you would like to have after cloning
    --pull          use pull protocol to copy metadata
    --uncompressed  use uncompressed transfer (fast over LAN)
 -e --ssh           specify ssh command to use
    --remotecmd     specify hg command to run on the remote side

حيث يكون المصدر هو مصدر الملفات الأصلية الموجودة في المستودع ، حيث يمكن أن يكون URL بعيد أو دليل نظام ملفات. فمثلا:

والوجهة هي المكان الذي يوجد فيه رمز المصدر في نظام الملفات المحلي لديك.


كيفية إعداد Mercurial؟

Mercurial يخزن معلومات التكوين الخاصة به في ~/.hgrc على أنظمة * nix وفي %UserProfile%\mercurial.ini على أنظمة Windows. ( %UserProfile% هو عادة "C:\Documents and Settings\[username]\" على أنظمة Windows 2000 أو Windows XP ، وعادة C:\Users\[username]\ على نظامي Windows Vista و Windows 7.)

كنقطة بداية ، يجب عليك تعيين اسم المستخدم Mercurial الخاص بك عن طريق وضع ما يلي في .hgrc أو mercurial.ini :

# This is a Mercurial configuration file.
[ui]
username = Firstname Lastname <[email protected]>

يمكن للمستخدمين TortoiseHg على أنظمة تشغيل Windows بدلاً من ذلك hgtk userconfig

راجع أيضًا " إنشاء ملف تكوين Mercurial " في الفصل 2 من " Mercurial: The Definitive Guide ".





mercurial