Skip to content

Commit 8fb32e1

Browse files
authored
refactor(import-hg): fixed persian translate issue and headers
1 parent 43975f8 commit 8fb32e1

File tree

1 file changed

+22
-33
lines changed

1 file changed

+22
-33
lines changed

book/09-git-and-other-scms/sections/import-hg.asc

Lines changed: 22 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,33 @@
11
==== Mercurial
22

33
(((Mercurial)))(((Importing, from Mercurial)))
4-
از آنجا که مرکیوریال و گیت مدل‌های نسبتاً مشابهی برای نمایش نسخه‌ها دارند و از آنجا که گیت کمی انعطاف‌پذیرتر
5-
است، تبدیل یک مخزن از مرکیوریال به گیت نسبتاً ساده است، با استفاده از ابزاری به نام "hg-fast-export" که شما به
6-
یک نسخه از آن نیاز دارید:
4+
5+
از آنجا که مرکیوریال و گیت مدل‌های نسبتاً مشابهی برای نمایش نسخه‌ها دارند و گیت کمی انعطاف‌پذیرتر است، تبدیل یک مخزن از مرکیوریال به گیت به‌طور نسبتاً ساده‌ای امکان‌پذیر است، با استفاده از ابزاری به نام "hg-fast-export"، که شما به یک نسخه از آن نیاز خواهید داشت:
76

87
[source,console]
98
----
109
$ git clone https://github.com/frej/fast-export.git
1110
----
1211

13-
اولین مرحله در تبدیل، دریافت یک کلون کامل از مخزن مرکیوریال است که می‌خواهید تبدیل کنید:
12+
اولین قدم در تبدیل، گرفتن یک کلون کامل از مخزن مرکیوریالی است که می‌خواهید آن را تبدیل کنید:
13+
1414

1515
[source,console]
1616
----
1717
$ hg clone <remote repo URL> /tmp/hg-repo
1818
----
1919

2020
مرحله بعدی ایجاد یک فایل نگاشت نویسنده است.
21-
مرکیوریال کمی بیشتر از گیت در مورد آنچه که در فیلد نویسنده برای تغییرات قرار می‌دهد، بخشنده است، بنابراین این
22-
زمان خوبی برای تمیز کردن است.
23-
تولید این یک دستور یک‌خطی در یک شل `bash` است:
21+
مرکیوریال کمی بیشتر از گیت در مورد چیزی که در فیلد نویسنده برای تغییرات قرار می‌دهد، انعطاف‌پذیر است، بنابراین این زمان مناسبی برای پاک‌سازی است.
22+
برای تولید این فایل، کافی است که یک دستور یک‌خطی در شل `bash` اجرا کنید:
2423

2524
[source,console]
2625
----
2726
$ cd /tmp/hg-repo
2827
$ hg log | grep user: | sort | uniq | sed 's/user: *//' > ../authors
2928
----
3029

31-
این چند ثانیه طول می‌کشد، بسته به اینکه تاریخچه پروژه شما چقدر طولانی است، و بعد از آن فایل
32-
`/tmp/authors` به شکل زیر خواهد بود:
30+
این فرایند چند ثانیه طول خواهد کشید، بسته به اینکه تاریخچه پروژه شما چقدر طولانی باشد، و پس از آن فایل `/tmp/authors` چیزی شبیه به این خواهد بود:
3331

3432
[source]
3533
----
@@ -41,16 +39,12 @@ Bob Jones <[email protected]>
4139
Joe Smith <[email protected]>
4240
----
4341

44-
در این مثال، همان شخص (باب) تغییرات را تحت چهار نام مختلف ایجاد کرده است، یکی از آن‌ها واقعاً درست به نظر
45-
می‌رسد و یکی از آن‌ها کاملاً نامعتبر برای یک کامیت گیت خواهد بود.
46-
Hg-fast-export به ما اجازه می‌دهد این را با تبدیل هر خط به یک قانون اصلاح کنیم: `"&lt;input&gt;"="&lt;output&gt;"`،
47-
که یک `&lt;input&gt;` را به یک `&lt;output&gt;` نگاشت می‌کند.
48-
در داخل رشته‌های `&lt;input&gt;` و `&lt;output&gt;`، تمام توالی‌های فرار که توسط کدگذاری
49-
`string_escape` پایتون درک می‌شوند، پشتیبانی می‌شوند.
50-
اگر فایل نگاشت نویسنده شامل یک `&lt;input&gt;` مطابقت نداشته باشد، آن نویسنده بدون تغییر به گیت ارسال
51-
می‌شود.
52-
اگر تمام نام‌های کاربری خوب به نظر برسند، ما به این فایل نیازی نخواهیم داشت.
53-
در این مثال، ما می‌خواهیم فایل ما به این شکل باشد:
42+
در این مثال، همان شخص (باب) تغییرات را تحت چهار نام مختلف ایجاد کرده است، که یکی از آن‌ها به درستی به نظر می‌رسد و یکی دیگر به طور کامل برای یک کامیت گیت نامعتبر است.
43+
ابزار `hg-fast-export` به ما اجازه می‌دهد این مشکل را با تبدیل هر خط به یک قانون حل کنیم: "<input>"="<output>"، که یک `<input>` را به یک `<output>` نگاشت می‌کند.
44+
در داخل رشته‌های `<input>` و `<output>`، تمام دنباله‌های فرار که توسط کدگذاری `string_escape` پایتون درک می‌شوند، پشتیبانی می‌شوند.
45+
اگر فایل نگاشت نویسنده شامل `<input>` مطابقت نداشته باشد، آن نویسنده بدون تغییر به گیت ارسال خواهد شد.
46+
اگر تمام نام‌های کاربری درست به نظر برسند، نیازی به این فایل نخواهیم داشت.
47+
در این مثال، ما می‌خواهیم فایل ما به این شکل باشد:
5448

5549
[source]
5650
----
@@ -60,10 +54,10 @@ Joe Smith <[email protected]>
6054
"bob jones <bob <AT> company <DOT> com>"="Bob Jones <[email protected]>"
6155
----
6256

63-
همین نوع فایل نگاشت می‌تواند برای تغییر نام شاخه‌ها و برچسب‌ها زمانی که نام مرکیوریال توسط گیت مجاز نیست،
64-
استفاده شود.
57+
همین نوع فایل نگاشت می‌تواند برای تغییر نام شاخه‌ها و تگ‌ها زمانی که نام مرکیوریال توسط گیت مجاز نیست، استفاده شود.
58+
59+
مرحله بعدی ایجاد مخزن جدید گیت ما است و سپس اجرای اسکریپت صادرات:
6560

66-
مرحله بعدی ایجاد مخزن جدید گیت ما و اجرای اسکریپت صادرات است:
6761

6862
[source,console]
6963
----
@@ -72,13 +66,9 @@ $ cd /tmp/converted
7266
$ /tmp/fast-export/hg-fast-export.sh -r /tmp/hg-repo -A /tmp/authors
7367
----
7468

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+
این فرایند کمی طول می‌کشد (اگرچه بسیار سریع‌تر از زمانی است که بخواهید از طریق شبکه این کار را انجام دهید)، و خروجی آن نسبتاً مفصل است:
8272

8373
[source,console]
8474
----
@@ -126,10 +116,9 @@ $ git shortlog -sn
126116
365 Joe Smith
127117
----
128118

129-
این تقریباً تمام چیزی است که باید انجام دهید.
130-
تمام برچسب‌های مرکیوریال به برچسب‌های گیت تبدیل شده‌اند و شاخه‌ها و نشانک‌های مرکیوریال به شاخه‌های گیت تبدیل
131-
شده‌اند.
132-
اکنون شما آماده‌اید که مخزن را به سرور جدید خود فشار دهید:
119+
تقریباً همین‌قدر است.
120+
تمامی تگ‌های مرکیوریال به تگ‌های گیت تبدیل شده‌اند، و شاخه‌ها و بوک‌مارک‌های مرکیوریال به شاخه‌های گیت تبدیل شده‌اند.
121+
حالا شما آماده‌اید که مخزن را به سرور جدید خود ارسال کنید:
133122

134123
[source,console]
135124
----

0 commit comments

Comments
 (0)