| HG(GRAFT) | HG(GRAFT) |
نام (NAME)
hg graft - کپی کردن تغییرات از شاخههای دیگر روی شاخه فعلی
خلاصه دستور (SYNOPSIS)
hg graft [OPTION]... [-r REV]... REV...
توضیحات (DESCRIPTION)
این دستور از منطق ادغام (merge) مرکوریال برای کپی کردن تغییرات منفرد از شاخههای دیگر بدون ادغام کامل شاخهها در گراف تاریخچه استفاده میکند. این عمل گاهی با نام «backporting» یا «cherry-picking» نیز شناخته میشود. بهطور پیشفرض، graft کاربر، تاریخ و توضیحات را از مجموعهتغییرات (changeset) مبدأ کپی خواهد کرد.
مجموعهتغییراتی که نیاکان بازنگری فعلی باشند، قبلاً پیوند خورده باشند یا خود حاصل ادغام باشند نادیده گرفته میشوند.
اگر --log مشخص شود، به پیامهای گزارش یادداشتی به این شکل الحاق خواهد شد:
(grafted from CHANGESETHASH)
اگر --force مشخص شود، بازنگریها حتی اگر نیاکان مقصد باشند یا قبلاً به آن پیوند خورده باشند نیز پیوند خواهند خورد. این مورد زمانی کاربرد دارد که بازنگریها از آن زمان به بعد بازگردانی (backed out) شده باشند.
اگر ادغام graft به تداخل (conflict) منجر شود، فرایند graft متوقف میشود تا تداخل ادغام فعلی بهصورت دستی حل شود. پس از برطرف شدن تمام تداخلها، فرایند graft میتواند با گزینه -c/--continue ادامه یابد.
گزینه -c/--continue تمام گزینههای قبلی را مجدداً اعمال میکند.
گزینه --base جزئیات بیشتری از نحوه استفاده درونی graft از merge با یک بازنگری پایه سفارشی را نمایان میسازد. از --base میتوان برای مشخص کردن نیاکانی غیر از اولین و تنها والد استفاده کرد.
دستور:
hg graft -r 345 --base 234
تقریباً معادل دستور زیر عمل میکند:
hg diff --from 234 --to 345 | hg import
اما از قابلیت ادغام برای حل تداخلها و ردگیری فایلهای جابهجا شده استفاده میکند.
بنابراین میتوان نتیجه یک ادغام را با تعیین یکی از والدین ادغام بهعنوان پایه، در قالب یک کامیت واحد بکپورت (backport) کرد و عملاً تغییرات را از طرف دیگر پیوند زد.
همچنین میتوان با مشخص کردن یک نیاکان دیگر بهعنوان پایه، چندین مجموعهتغییرات را تجمیع (collapse) کرده و تاریخچه را مرتب کرد، رفتاری مشابه با rebase --collapse --keep.
پیام کامیت را میتوان پس از انجام کار با استفاده از commit --amend تغییر داد.
برای استفاده از غیرنیاکان بهعنوان پایه جهت بازگرداندن تغییرات، دستور backout و گزینه پنهان --parent را ببینید.
گزینه آزمایشی --to امکان پیوند زدن یک بازنگری در حافظه و مستقل از رونوشت کاری (working copy) را فراهم میکند. در حال حاضر از تداخلهای ادغام پشتیبانی نمیشود و اگر ابزار پیکربندیشده نتواند تداخلهای احتمالی را برطرف کند، عملیات لغو خواهد شد.
از آنجا که عملیات در حافظه انجام میشود، فایلهای روی دیسک تغییر نخواهند کرد و ممکن است برخی قلابها (hooks) اجرا نشوند.
مثالها:
- کپی کردن یک
تغییر
منفرد به
شاخه stable و
ویرایش
توضیحات آن:
hg update stable hg graft --edit 9393
- پیوند زدن
بازهای از
مجموعهتغییرات
به استثنای
یک مورد، و
بهروزرسانی
تاریخها:
hg graft -D "2085::2093 and not 2091"
- ادامه دادن
graft پس از حل
تداخلها:
hg graft -c
- نمایش مبدأ
یک
مجموعهتغییرات
پیوندزدهشده:
hg log --debug -r .
- نمایش
بازنگریهای
مرتبشده
بر اساس
تاریخ:
hg log -r "sort(all(), date)"
- بکپورت
کردن نتیجه
یک ادغام
بهعنوان
یک کامیت
واحد:
hg graft -r 123 --base 123^
- آوردن یک
شاخه ویژگی
به عنوان یک
مجموعهتغییرات
واحد:
hg up -cr default hg graft -r featureX --base "ancestor('featureX', 'default')"برای اطلاعات بیشتر درباره مشخص کردن بازنگریها، %hg help revisions را ببینید.
در صورت اتمام موفقیتآمیز مقدار 0 و در صورت وجود فایلهای حلنشده مقدار 1 برگردانده میشود.
گزینهها (OPTIONS)
- -r,--rev <REV[+]>
- بازنگریها برای پیوند زدن
- --base <REV>
- بازنگری پایه هنگام انجام ادغام graft (پیشرفته)
- --to <VALUE>
- پیوند زدن به این مقصد، در حافظه (آزمایشی)
- -c, --continue
- ادامه دادن graft متوقفشده
- --stop
- متوقف کردن graft ناتمام
- --abort
- لغو کردن graft متوقفشده
- -e, --edit
- فراخوانی ویرایشگر برای پیامهای کامیت
- --log
- الحاق اطلاعات graft به پیام گزارش
- --no-commit
- بدون ثبت کامیت، تنها تغییرات در دایرکتوری کاری اعمال شوند
- -f, --force
- اجبار در انجام graft
- -D, --currentdate
- ثبت تاریخ فعلی بهعنوان تاریخ کامیت
- -U, --currentuser
- ثبت کاربر فعلی بهعنوان کامیتکننده
- -d,--date <DATE>
- ثبت تاریخ مشخصشده بهعنوان تاریخ کامیت
- -u,--user <USER>
- ثبت کاربر مشخصشده بهعنوان کامیتکننده
- -t,--tool <TOOL>
- مشخص کردن ابزار ادغام
- -n, --dry-run
- عدم انجام
عملیات،
تنها خروجی
چاپ شود
گزینههای علامتگذاریشده با [+] میتوانند چند بار مشخص شوند