You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: book/09-git-and-other-scms/sections/import-hg.asc
+22-33Lines changed: 22 additions & 33 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,35 +1,33 @@
1
1
==== Mercurial
2
2
3
3
(((Mercurial)))(((Importing, from Mercurial)))
4
-
از آنجا که مرکیوریال و گیت مدلهای نسبتاً مشابهی برای نمایش نسخهها دارند و از آنجا که گیت کمی انعطافپذیرتر
5
-
است، تبدیل یک مخزن از مرکیوریال به گیت نسبتاً ساده است، با استفاده از ابزاری به نام "hg-fast-export" که شما به
6
-
یک نسخه از آن نیاز دارید:
4
+
5
+
از آنجا که مرکیوریال و گیت مدلهای نسبتاً مشابهی برای نمایش نسخهها دارند و گیت کمی انعطافپذیرتر است، تبدیل یک مخزن از مرکیوریال به گیت بهطور نسبتاً سادهای امکانپذیر است، با استفاده از ابزاری به نام "hg-fast-export"، که شما به یک نسخه از آن نیاز خواهید داشت:
در این مثال، همان شخص (باب) تغییرات را تحت چهار نام مختلف ایجاد کرده است، یکی از آنها واقعاً درست به نظر
45
-
میرسد و یکی از آنها کاملاً نامعتبر برای یک کامیت گیت خواهد بود.
46
-
Hg-fast-export به ما اجازه میدهد این را با تبدیل هر خط به یک قانون اصلاح کنیم: `"<input>"="<output>"`،
47
-
که یک `<input>` را به یک `<output>` نگاشت میکند.
48
-
در داخل رشتههای `<input>` و `<output>`، تمام توالیهای فرار که توسط کدگذاری
49
-
`string_escape` پایتون درک میشوند، پشتیبانی میشوند.
50
-
اگر فایل نگاشت نویسنده شامل یک `<input>` مطابقت نداشته باشد، آن نویسنده بدون تغییر به گیت ارسال
51
-
میشود.
52
-
اگر تمام نامهای کاربری خوب به نظر برسند، ما به این فایل نیازی نخواهیم داشت.
53
-
در این مثال، ما میخواهیم فایل ما به این شکل باشد:
42
+
در این مثال، همان شخص (باب) تغییرات را تحت چهار نام مختلف ایجاد کرده است، که یکی از آنها به درستی به نظر میرسد و یکی دیگر به طور کامل برای یک کامیت گیت نامعتبر است.
43
+
ابزار `hg-fast-export` به ما اجازه میدهد این مشکل را با تبدیل هر خط به یک قانون حل کنیم: "<input>"="<output>"، که یک `<input>` را به یک `<output>` نگاشت میکند.
44
+
در داخل رشتههای `<input>` و `<output>`، تمام دنبالههای فرار که توسط کدگذاری `string_escape` پایتون درک میشوند، پشتیبانی میشوند.
45
+
اگر فایل نگاشت نویسنده شامل `<input>` مطابقت نداشته باشد، آن نویسنده بدون تغییر به گیت ارسال خواهد شد.
46
+
اگر تمام نامهای کاربری درست به نظر برسند، نیازی به این فایل نخواهیم داشت.
47
+
در این مثال، ما میخواهیم فایل ما به این شکل باشد:
"bob jones <bob <AT> company <DOT> com>"="Bob Jones <[email protected]>"
61
55
----
62
56
63
-
همین نوع فایل نگاشت میتواند برای تغییر نام شاخهها و برچسبها زمانی که نام مرکیوریال توسط گیت مجاز نیست،
64
-
استفاده شود.
57
+
همین نوع فایل نگاشت میتواند برای تغییر نام شاخهها و تگها زمانی که نام مرکیوریال توسط گیت مجاز نیست، استفاده شود.
58
+
59
+
مرحله بعدی ایجاد مخزن جدید گیت ما است و سپس اجرای اسکریپت صادرات:
65
60
66
-
مرحله بعدی ایجاد مخزن جدید گیت ما و اجرای اسکریپت صادرات است:
67
61
68
62
[source,console]
69
63
----
@@ -72,13 +66,9 @@ $ cd /tmp/converted
72
66
$ /tmp/fast-export/hg-fast-export.sh -r /tmp/hg-repo -A /tmp/authors
73
67
----
74
68
75
-
پرچم `-r` به hg-fast-export میگوید که کجا مخزن مرکیوریال که میخواهیم تبدیل کنیم را پیدا کند و پرچم
76
-
`-A` به آن میگوید که کجا فایل نگاشت نویسنده را پیدا کند (فایلهای نگاشت شاخه و برچسب به ترتیب با
77
-
پرچمهای `-B` و `-T` مشخص میشوند).
78
-
این اسکریپت تغییرات مرکیوریال را تجزیه میکند و آنها را به یک اسکریپت برای ویژگی "fast-import" گیت تبدیل میکند
79
-
(که در ادامه به تفصیل در مورد آن صحبت خواهیم کرد).
80
-
این کمی طول میکشد (اگرچه این _بسیار_ سریعتر از آن است که از طریق شبکه باشد)، و خروجی نسبتاً verbose
81
-
است:
69
+
فلگ `-r` به hg-fast-export میگوید که مخزن مرکیوریال که میخواهیم تبدیل کنیم کجا قرار دارد، و فلگ `-A` به آن میگوید که فایل نگاشت نویسندگان کجا قرار دارد (فایلهای نگاشت شاخه و تگ به ترتیب با فلگهای `-B` و `-T` مشخص میشوند).
70
+
اسکریپت تغییرات مرکیوریال را تجزیه میکند و آنها را به یک اسکریپت برای ویژگی "fast-import" گیت تبدیل میکند (که بعداً به تفصیل در مورد آن صحبت خواهیم کرد).
71
+
این فرایند کمی طول میکشد (اگرچه بسیار سریعتر از زمانی است که بخواهید از طریق شبکه این کار را انجام دهید)، و خروجی آن نسبتاً مفصل است:
82
72
83
73
[source,console]
84
74
----
@@ -126,10 +116,9 @@ $ git shortlog -sn
126
116
365 Joe Smith
127
117
----
128
118
129
-
این تقریباً تمام چیزی است که باید انجام دهید.
130
-
تمام برچسبهای مرکیوریال به برچسبهای گیت تبدیل شدهاند و شاخهها و نشانکهای مرکیوریال به شاخههای گیت تبدیل
131
-
شدهاند.
132
-
اکنون شما آمادهاید که مخزن را به سرور جدید خود فشار دهید:
119
+
تقریباً همینقدر است.
120
+
تمامی تگهای مرکیوریال به تگهای گیت تبدیل شدهاند، و شاخهها و بوکمارکهای مرکیوریال به شاخههای گیت تبدیل شدهاند.
121
+
حالا شما آمادهاید که مخزن را به سرور جدید خود ارسال کنید:
0 commit comments