version-control معنى - Mercurial للمبتدئين:الدليل العملي النهائي




centralized tools (19)

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

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

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

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

ملاحظات :

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

الأسئلة:

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

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

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

آخر

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


Answers

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

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 بعيد أو دليل نظام ملفات. فمثلا:

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


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

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

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

الإضافات


كيف تقوم بإنشاء مشروع / مستودع جديد؟

$ hg init my-repository

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

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

$ hg outgoing

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

$ hg outgoing -p

كيف يمكنك مقارنة نسختين من الملف ، أو ملفك الحالي ومراجعة سابقة؟

كلاهما يستخدم hg diff . عند استخدام hg diff يتم عرض جميع التغييرات في نسخة العمل والطرف (آخر التزام).

من أجل "كيف تقارن مراجعتين من الملف؟"

$ hg diff -r{rev1} -r{rev2} {file.code}

سيظهر الأمر أعلاه مختلفًا بين rev1 و rev2 من "file.code".

من أجل "كيف تقارن ملفك الحالي ومراجعته السابقة؟"

$ hg diff {file.code}

سيظهر الأمر أعلاه مختلفًا بين الإصدار الحالي من "file.code" وأحدث مراجعة (آخر إجراء).


كيف يمكنك "وضع علامة" على "tag" أو "إصدار" مجموعة معينة من المراجعات لمجموعة معينة من الملفات حتى تتمكن دائمًا من سحبها لاحقًا؟

$ hg tag my-tag

يمكنك أيضًا نسخ مخزونك لإنشاء مستودع علامات خاص.

$ hg clone working-repository my-tag-repository

كيف يمكنك العودة إلى 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 على محتويات الاختلاف الذي فشل في تطبيقه ، ستحتاج إلى إلقاء نظرة.


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

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

$ hg log {file(s)}

أو

$ hg history {file(s)}

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

$ hg log -r:

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

$ hg commit -m "Commit message"

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

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

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

تم تكوين 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.


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

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

hg pull

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

hg update

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

hg pull -u

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


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

$ hg export -o patchfile changeset

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

$ hg import patchfile

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

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

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.
  • إذا لم يتم تحديد أي رسالة التزام ، فسيتم تشغيل المحرر الذي تمت تهيئته لمطالبتك برسالة.

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

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

[extensions]
transplant=

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

$ hg transplant -b foo 81

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

من هذا السؤال

$ hg update [-r REV]

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


كيفية تثبيت Mercurial؟

الرجاء التعديل بشكل جيد إذا كنت قد قمت بالتثبيت من مصدر على Linux أو استخدمت مثبتات Windows.

Mac OS X 10.4 (Tiger) ، 10.5 (Leopard)

استخدم easy_install من Python (مع Setuptools ):

sudo easy_install mercurial

يجد هذا أحدث إصدار (1.3.1 وقت الكتابة) ويثبت في:

/Library/Frameworks/Python.framework/Versions/2.6/bin/

مع Python 2.6 ، يحصل هذا أيضًا على حزمة تثبيت Mercurial OS X (في 1.2.1 اعتبارًا من 26 تموز 2009) ويشكو أنه يحتاج إلى Python 2.5. من الوثائق ، يبدو أن Fink و Macports تثبيت الإصدار 1.2.

لينكس

يبدو أن معظم حزم Linux الصريحة متخلفة عن الإصدار الحالي ، لذا استخدم easy_install (كما هو مذكور أعلاه) أو قم بتنزيل easy_install الأرشيف وتغيير إلى الدليل الزئبقي وقم بتشغيل:

$ make
$ sudo make install    # do a system-wide install
$ hg debuginstall      # sanity check
$ hg                   # see help

(من مقدمة Mercurial ، نظام التحكم في إصدار الموزعة )

شبابيك

هناك حزمة ثنائية من أحدث إصدار من Mercurial . TortoiseHg هو ملحق Windows shell لـ ، وتثبيت ، Mercurial. يمكن Cygwin أيضا تثبيت Mercurial.

بدلاً من ذلك (التعليمات طويلة جدًا مرتبطة هنا) ، يمكنك إنشاء إصدار بيثون محسن أو نقي من Mercurial من المصدر.


كيف ترى ما هو غير الملتزم به ، أو حالة مصدر الكود الحالي لديك؟

لمشاهدة قائمة بالملفات التي تم تغييرها:

$ hg status

سيؤدي هذا إلى طباعة كل ملف تم تغييره مع حالته ، والتي يمكن أن تتضمن:

  • M - معدلة. تم تغيير الملف ولم يتم الالتزام بالتغييرات.
  • A - أضيفت. لم يتم تتبع الملف من قبل ، ولكن إذا بدأت الالتزام بـ Mercurial فسيبدأ في تتبعه.
  • R - إزالة. تم تتبع الملف من قبل ، ولكن إذا ارتكبت Mercurial ، فستتوقف عن تتبعه في هذا الالتزام في المستقبل.
  • ? - غير معروف. لا يتم تتبع الملف حاليًا بواسطة Mercurial. لن يكون للالتزام أي تأثير عليه إلا إذا استخدمت hg add .
  • ! - مفقود. تم تعقب الملف ولكن لا يمكن لـ Mercurial العثور عليه في نسخة العمل.

لمشاهدة التغييرات التي تم إجراؤها بالفعل على الملفات:

$ hg diff

استخدم الأمر hg cat مع الوسيطة -r (المراجعة).

hg cat path_to/myfile.cpp -r 46

حيث 46 هو رقم المراجعة (استخدم hg log للاطلاع على hg log المراجعة)







version-control mercurial