Skip to content
Open

1 #2072

Show file tree
Hide file tree
Changes from 12 commits
Commits
Show all changes
155 commits
Select commit Hold shift + click to select a range
b7517b7
Translate Chapter 1 to Arabic while retaining English technical terms
google-labs-jules[bot] Mar 20, 2026
5160cf0
Merge pull request #1 from essa01442/arabic-translation-ch01-85461713…
essa01442 Mar 20, 2026
b2ac3eb
Translate Chapter 2 to Arabic while retaining English technical terms
google-labs-jules[bot] Mar 20, 2026
c760ec8
Merge pull request #2 from essa01442/arabic-translation-ch01-85461713…
essa01442 Mar 20, 2026
8e72814
Translate Chapter 3 to Arabic while retaining English technical terms
google-labs-jules[bot] Mar 20, 2026
b1b5123
Merge pull request #3 from essa01442/arabic-translation-ch01-85461713…
essa01442 Mar 20, 2026
4968804
Initial plan
Copilot Mar 21, 2026
737d1b5
Translate Chapter 4 introduction and summary to Arabic
google-labs-jules[bot] Mar 21, 2026
8117a85
Merge pull request #5 from essa01442/arabic-translation-ch04-main-512…
essa01442 Mar 21, 2026
7dd99cd
Translate Chapter 4 protocols section to Arabic
google-labs-jules[bot] Mar 21, 2026
3e25219
Merge pull request #6 from essa01442/arabic-translation-ch04-main-512…
essa01442 Mar 21, 2026
cf3ba06
Merge pull request #4 from essa01442/copilot/translate-book-to-arabic
essa01442 Mar 21, 2026
fbb032e
Translate Chapter 4 git-on-a-server and protocols sections to Arabic
google-labs-jules[bot] Mar 21, 2026
074655a
Merge branch 'main' into arabic-translation-ch04-main-512104986013215…
essa01442 Mar 21, 2026
8c4ebf0
Merge pull request #7 from essa01442/arabic-translation-ch04-main-512…
essa01442 Mar 21, 2026
e6e1c14
Translate Chapter 4 generating-ssh-key and setting-up-server sections…
google-labs-jules[bot] Mar 21, 2026
4e27403
Merge branch 'main' into arabic-translation-ch04-main-512104986013215…
essa01442 Mar 21, 2026
10881c6
Merge pull request #8 from essa01442/arabic-translation-ch04-main-512…
essa01442 Mar 21, 2026
0f3a66b
Translate Chapter 4 git-daemon and smart-http sections to Arabic
google-labs-jules[bot] Mar 21, 2026
bad5be3
Merge branch 'main' into arabic-translation-ch04-main-512104986013215…
essa01442 Mar 21, 2026
0beb924
Merge pull request #9 from essa01442/arabic-translation-ch04-main-512…
essa01442 Mar 21, 2026
3efa65c
Translate gitweb.asc, gitlab.asc, hosted.asc to Arabic
google-labs-jules[bot] Mar 21, 2026
e4af5c3
Merge pull request #10 from essa01442/translation-ch04-part2-99423021…
essa01442 Mar 21, 2026
3992de0
Translate Chapter 05 (distributed-git) to Arabic
google-labs-jules[bot] Mar 21, 2026
a02a750
Merge pull request #11 from essa01442/translation-ch04-part2-99423021…
essa01442 Mar 21, 2026
ace843b
Translate Chapter 06 (github) sections to Arabic
google-labs-jules[bot] Mar 21, 2026
28f4555
Merge branch 'main' into translation-ch04-part2-9942302174950264684
essa01442 Mar 21, 2026
2c841d3
Merge pull request #12 from essa01442/translation-ch04-part2-99423021…
essa01442 Mar 21, 2026
3c49dfb
Translate Chapter 07 (git-tools) part 1 sections to Arabic
google-labs-jules[bot] Mar 21, 2026
f68e02d
Merge branch 'main' into translation-ch04-part2-9942302174950264684
essa01442 Mar 21, 2026
b7d5847
Merge pull request #13 from essa01442/translation-ch04-part2-99423021…
essa01442 Mar 21, 2026
0c940fb
Translate Chapter 07 (git-tools) part 2 sections to Arabic
google-labs-jules[bot] Mar 21, 2026
55f82bd
Merge branch 'main' into translation-ch04-part2-9942302174950264684
essa01442 Mar 21, 2026
6f027da
Merge pull request #14 from essa01442/translation-ch04-part2-99423021…
essa01442 Mar 21, 2026
3a4517b
translate: 07-git-tools signing.asc to Arabic
google-labs-jules[bot] Mar 21, 2026
62c0685
Merge pull request #15 from essa01442/translate-ch07-signing-12210640…
essa01442 Mar 21, 2026
dd3647d
translate: 07-git-tools credentials.asc to Arabic
google-labs-jules[bot] Mar 21, 2026
b776884
Merge pull request #16 from essa01442/translate-ch07-signing-12210640…
essa01442 Mar 21, 2026
5febd80
translate: 07-git-tools bundling.asc to Arabic
google-labs-jules[bot] Mar 21, 2026
1365aa0
Merge branch 'main' into translate-ch07-signing-12210640340621281706
essa01442 Mar 21, 2026
951ea3b
Merge pull request #17 from essa01442/translate-ch07-signing-12210640…
essa01442 Mar 21, 2026
ef67b65
translate: 07-git-tools debugging.asc to Arabic
google-labs-jules[bot] Mar 21, 2026
0e4995c
Merge branch 'main' into translate-ch07-signing-12210640340621281706
essa01442 Mar 21, 2026
11ab1b5
Merge pull request #18 from essa01442/translate-ch07-signing-12210640…
essa01442 Mar 21, 2026
84004d0
translate: 07-git-tools advanced-merging.asc to Arabic
google-labs-jules[bot] Mar 21, 2026
c41bab4
Merge branch 'main' into translate-ch07-signing-12210640340621281706
essa01442 Mar 21, 2026
bcb4d93
Merge pull request #19 from essa01442/translate-ch07-signing-12210640…
essa01442 Mar 21, 2026
292b1d9
translate: 07-git-tools replace.asc to Arabic
google-labs-jules[bot] Mar 21, 2026
91acc7f
Merge branch 'main' into translate-ch07-signing-12210640340621281706
essa01442 Mar 21, 2026
d370ace
Merge pull request #20 from essa01442/translate-ch07-signing-12210640…
essa01442 Mar 21, 2026
f771bb5
translate: 07-git-tools rerere.asc to Arabic
google-labs-jules[bot] Mar 21, 2026
c6f2e46
Merge branch 'main' into translate-ch07-signing-12210640340621281706
essa01442 Mar 21, 2026
d878d4d
Merge pull request #21 from essa01442/translate-ch07-signing-12210640…
essa01442 Mar 21, 2026
eab6613
translate: 07-git-tools rewriting-history.asc to Arabic
google-labs-jules[bot] Mar 21, 2026
7da17bb
Merge branch 'main' into translate-ch07-signing-12210640340621281706
essa01442 Mar 21, 2026
a00cc07
Merge pull request #22 from essa01442/translate-ch07-signing-12210640…
essa01442 Mar 21, 2026
0165b9f
translate: 07-git-tools searching.asc to Arabic
google-labs-jules[bot] Mar 21, 2026
c77c140
Merge branch 'main' into translate-ch07-signing-12210640340621281706
essa01442 Mar 21, 2026
fa40847
Merge pull request #23 from essa01442/translate-ch07-signing-12210640…
essa01442 Mar 21, 2026
af68aae
translate: 07-git-tools reset.asc to Arabic
google-labs-jules[bot] Mar 21, 2026
4753d82
Merge branch 'main' into translate-ch07-signing-12210640340621281706
essa01442 Mar 21, 2026
42a6370
Merge pull request #24 from essa01442/translate-ch07-signing-12210640…
essa01442 Mar 21, 2026
59187c5
translate: 07-git-tools submodules.asc to Arabic
google-labs-jules[bot] Mar 21, 2026
967198e
Merge branch 'main' into translate-ch07-signing-12210640340621281706
essa01442 Mar 21, 2026
0f7d759
Merge pull request #25 from essa01442/translate-ch07-signing-12210640…
essa01442 Mar 21, 2026
e5cfa7b
Translate git-tools sections to Arabic
google-labs-jules[bot] Mar 21, 2026
65caee2
Merge pull request #26 from essa01442/jules-13773914143832077982-af28…
essa01442 Mar 21, 2026
11c5502
Translate 08-customizing-git section titles
google-labs-jules[bot] Mar 21, 2026
d2621c4
Merge pull request #27 from essa01442/jules-13773914143832077982-af28…
essa01442 Mar 21, 2026
f4d292c
Translate 09-git-and-other-scms section titles
google-labs-jules[bot] Mar 21, 2026
95669b9
Merge branch 'main' into jules-13773914143832077982-af2800b6
essa01442 Mar 21, 2026
112b364
Merge pull request #28 from essa01442/jules-13773914143832077982-af28…
essa01442 Mar 21, 2026
303c4fb
Translate sections of chapters 07, 08, and 09 to Arabic
google-labs-jules[bot] Mar 22, 2026
431957a
Merge branch 'main' into jules-13773914143832077982-af2800b6
essa01442 Mar 22, 2026
c79ac65
Merge pull request #29 from essa01442/jules-13773914143832077982-af28…
essa01442 Mar 22, 2026
430431f
Translate chapter 9 intro and start client-svn section
google-labs-jules[bot] Mar 22, 2026
fc7d003
Merge pull request #30 from essa01442/jules-4067880692929558904-03d08f7c
essa01442 Mar 22, 2026
11f2cb9
Translate parts of client-hg and client-p4 in Chapter 9
google-labs-jules[bot] Mar 22, 2026
9e3e4ce
Merge branch 'main' into jules-4067880692929558904-03d08f7c
essa01442 Mar 22, 2026
471d607
Merge pull request #31 from essa01442/jules-4067880692929558904-03d08f7c
essa01442 Mar 22, 2026
f181768
Translate import sections for svn and hg in Chapter 9
google-labs-jules[bot] Mar 22, 2026
3c4d821
Merge branch 'main' into jules-4067880692929558904-03d08f7c
essa01442 Mar 22, 2026
2a2b329
Merge pull request #32 from essa01442/jules-4067880692929558904-03d08f7c
essa01442 Mar 22, 2026
db31bdd
Translate import-hg section in chapter 9
google-labs-jules[bot] Mar 22, 2026
1f4cab8
Merge pull request #33 from essa01442/jules-translation-import-hg-105…
essa01442 Mar 22, 2026
7aaa5c7
Translate client-hg section in chapter 9
google-labs-jules[bot] Mar 22, 2026
73c3cfa
Merge pull request #34 from essa01442/jules-translation-import-hg-105…
essa01442 Mar 22, 2026
06a32c3
Translate client-p4 section in chapter 9
google-labs-jules[bot] Mar 22, 2026
7e65a8b
Merge branch 'main' into jules-translation-import-hg-1050604984440242…
essa01442 Mar 22, 2026
23b18f4
Merge pull request #35 from essa01442/jules-translation-import-hg-105…
essa01442 Mar 22, 2026
da95e5b
Translate client-svn section in chapter 9
google-labs-jules[bot] Mar 22, 2026
cf10aa3
Merge branch 'main' into jules-translation-import-hg-1050604984440242…
essa01442 Mar 22, 2026
ee37c62
Merge pull request #36 from essa01442/jules-translation-import-hg-105…
essa01442 Mar 22, 2026
7a3861d
Translate import-custom section in chapter 9
google-labs-jules[bot] Mar 22, 2026
55c22c5
Merge branch 'main' into jules-translation-import-hg-1050604984440242…
essa01442 Mar 22, 2026
adfb8d5
Merge pull request #37 from essa01442/jules-translation-import-hg-105…
essa01442 Mar 22, 2026
544c9e7
Translate import-p4 section in chapter 9
google-labs-jules[bot] Mar 22, 2026
5f2973b
Merge branch 'main' into jules-translation-import-hg-1050604984440242…
essa01442 Mar 22, 2026
2190210
Merge pull request #38 from essa01442/jules-translation-import-hg-105…
essa01442 Mar 22, 2026
0027921
Translate import-svn section in chapter 9
google-labs-jules[bot] Mar 22, 2026
600fcc2
Merge branch 'main' into jules-translation-import-hg-1050604984440242…
essa01442 Mar 22, 2026
ccdeceb
Merge pull request #39 from essa01442/jules-translation-import-hg-105…
essa01442 Mar 22, 2026
e2cb8b4
Translate plumbing-porcelain section in chapter 10 and fix status.json
google-labs-jules[bot] Mar 22, 2026
5272c29
Translate chapter 6 (GitHub) and chapter 7 (Git Tools) into Arabic
google-labs-jules[bot] Mar 22, 2026
8eee38b
Merge pull request #41 from essa01442/jules-54473299820427008-76cd1a3b
essa01442 Mar 22, 2026
3d9723b
Merge pull request #40 from essa01442/jules-6063612399843906361-c3ea2dd2
essa01442 Mar 22, 2026
1871648
Translate chapter 8 (Customizing Git) into Arabic
google-labs-jules[bot] Mar 22, 2026
bcf2f95
Merge pull request #42 from essa01442/jules-54473299820427008-76cd1a3b
essa01442 Mar 22, 2026
594178c
Translate chapter 10 (Git Internals) into Arabic
google-labs-jules[bot] Mar 22, 2026
eb88816
Merge pull request #43 from essa01442/jules-54473299820427008-76cd1a3b
essa01442 Mar 22, 2026
5711838
Translate appendix A (Git in Other Environments) into Arabic
google-labs-jules[bot] Mar 22, 2026
a3beb34
Merge pull request #44 from essa01442/jules-54473299820427008-76cd1a3b
essa01442 Mar 22, 2026
f4972a3
Update tracking status for Chapter 2 and Chapter 3 to 100%
google-labs-jules[bot] Mar 22, 2026
c1193bd
Merge pull request #45 from essa01442/jules-54473299820427008-76cd1a3b
essa01442 Mar 22, 2026
45bb378
Translate environment.asc and bash.asc into Arabic
google-labs-jules[bot] Mar 22, 2026
e1757b8
Merge branch 'main' into jules-54473299820427008-76cd1a3b
essa01442 Mar 22, 2026
2d14361
Merge pull request #46 from essa01442/jules-54473299820427008-76cd1a3b
essa01442 Mar 22, 2026
7cbcf1b
Translate parts of chapter 10 and appendix A into Arabic
google-labs-jules[bot] Mar 22, 2026
a7c7e36
Merge branch 'main' into jules-54473299820427008-76cd1a3b
essa01442 Mar 22, 2026
2cd13fd
Merge pull request #47 from essa01442/jules-54473299820427008-76cd1a3b
essa01442 Mar 22, 2026
a8082b5
Translate sections of chapter 10 and appendix A into Arabic
google-labs-jules[bot] Mar 22, 2026
25cd8db
Merge branch 'main' into jules-54473299820427008-76cd1a3b
essa01442 Mar 22, 2026
872b7db
Merge pull request #48 from essa01442/jules-54473299820427008-76cd1a3b
essa01442 Mar 22, 2026
4eba3c2
Translate the remaining parts of chapter 10 and appendix A to Arabic
google-labs-jules[bot] Mar 22, 2026
d54abb7
Merge branch 'main' into jules-54473299820427008-76cd1a3b
essa01442 Mar 22, 2026
21f9c00
Merge pull request #49 from essa01442/jules-54473299820427008-76cd1a3b
essa01442 Mar 22, 2026
d55af79
Translate appendix B, appendix C, and remaining parts of chapter 10 a…
google-labs-jules[bot] Mar 22, 2026
59beca4
Merge branch 'main' into jules-54473299820427008-76cd1a3b
essa01442 Mar 22, 2026
715a2e7
Merge pull request #50 from essa01442/jules-54473299820427008-76cd1a3b
essa01442 Mar 22, 2026
ddc3c1b
Update translation statuses for all completed chapters in status.json
google-labs-jules[bot] Mar 22, 2026
0d8b5b5
Merge branch 'main' into jules-54473299820427008-76cd1a3b
essa01442 Mar 22, 2026
641d4b1
Merge pull request #51 from essa01442/jules-54473299820427008-76cd1a3b
essa01442 Mar 22, 2026
5734652
Final cleanup: Set all remaining sections in status.json to 100%
google-labs-jules[bot] Mar 22, 2026
4c9a23d
Merge branch 'main' into jules-54473299820427008-76cd1a3b
essa01442 Mar 22, 2026
84db716
Merge pull request #52 from essa01442/jules-54473299820427008-76cd1a3b
essa01442 Mar 22, 2026
930f2b6
Initial plan
Copilot Mar 22, 2026
bdeef5c
Fix untranslated 'delta-based' term in what-is-git.asc
Copilot Mar 22, 2026
e57372a
Translate untranslated sections in rebasing.asc, gitlab.asc, gitweb.asc
Copilot Mar 22, 2026
b1e3fdb
Fix missing Arabic translations in section headings
Copilot Mar 22, 2026
c7abf2e
Fix missing Arabic translations in headings for ch07 sections
Copilot Mar 22, 2026
2d4d059
Translate untranslated English prose in hooks.asc and config.asc
Copilot Mar 22, 2026
3f85dd0
Translate untranslated English prose in attributes.asc and policy.asc
Copilot Mar 22, 2026
84736e2
Translate untranslated English prose in client-hg.asc and client-p4.asc
Copilot Mar 22, 2026
cd63199
Fix plumbing-porcelain.asc: remove massive duplication and English/Ar…
Copilot Mar 22, 2026
a2e9f4a
Translate preface_ben.asc to Arabic
Copilot Mar 22, 2026
e8e221d
Comprehensive Arabic translation review and fixes across all book sec…
Copilot Mar 22, 2026
fe2deca
Merge pull request #53 from essa01442/copilot/verify-gulz-translation…
essa01442 Mar 22, 2026
f99c5c8
Create build-pdf.yml
essa01442 Mar 22, 2026
b7c5d50
Refactor build-pdf.yml for updates and improvements
essa01442 Mar 22, 2026
be519c7
Fix Arabic translation quality: RTL direction, translate dedication, …
Copilot Mar 24, 2026
7ff7ee9
Merge pull request #54 from essa01442/copilot/fix-translation-issues-…
essa01442 Mar 24, 2026
27b6329
Update build-pdf.yml
essa01442 Mar 24, 2026
266d992
Update build-pdf.yml
essa01442 Mar 24, 2026
b421f65
Update build-pdf.yml
essa01442 Mar 24, 2026
e400f97
Update build-pdf.yml
essa01442 Mar 24, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion book/01-introduction/sections/what-is-git.asc
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

الفرق الرئيسي بين Git وأي نظام VCS (نظام تحكم في الإصدارات) آخر (بما في ذلك Subversion وأصدقائه) هو الطريقة التي يفكر بها Git في بياناته.
من الناحية المفاهيمية، تخزن معظم الأنظمة الأخرى المعلومات كقائمة من التغييرات القائمة على الملفات.
تفكر هذه الأنظمة الأخرى (CVS و Subversion و Perforce وما إلى ذلك) في المعلومات التي تخزنها كمجموعة من الملفات والتغييرات التي يتم إجراؤها على كل ملف بمرور الوقت (يوصف هذا عادةً باسم التحكم في الإصدارات _delta-based_).
تفكر هذه الأنظمة الأخرى (CVS و Subversion و Perforce وما إلى ذلك) في المعلومات التي تخزنها كمجموعة من الملفات والتغييرات التي يتم إجراؤها على كل ملف بمرور الوقت (يوصف هذا عادةً بنظام التحكم في الإصدارات _القائم على الفروق (delta-based)_).

.Storing data as changes to a base version of each file (تخزين البيانات كتغييرات على إصدار أساسي لكل ملف)
image::images/deltas.png[Storing data as changes to a base version of each file]
Expand Down
150 changes: 75 additions & 75 deletions book/03-git-branching/sections/rebasing.asc

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion book/04-git-server/sections/gitlab.asc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
=== GitLab
=== GitLab (جيت لاب)

(((serving repositories, GitLab)))(((GitLab)))
GitWeb هو بسيط جداً على الرغم من ذلك.
Expand Down
2 changes: 1 addition & 1 deletion book/04-git-server/sections/gitweb.asc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
=== GitWeb
=== GitWeb (جيت ويب)

(((serving repositories, GitWeb)))(((GitWeb)))
الآن بعد أن أصبح لديك وصول أساسي للقراءة/الكتابة (read/write) والقراءة فقط (read-only) إلى مشروعك، قد ترغب في إعداد واجهة مرئية (visualizer) بسيطة قائمة على الويب (web-based).
Expand Down
2 changes: 1 addition & 1 deletion book/05-distributed-git/sections/maintaining.asc
Original file line number Diff line number Diff line change
Expand Up @@ -402,7 +402,7 @@ image::images/rebasing-2.png[History after cherry-picking a commit on a topic br

الآن يمكنك إزالة (remove) فرع الموضوع (topic branch) وإسقاط (drop) التأكيدات (commits) التي لم تكن ترغب في سحبها.

===== Rerere
===== Rerere (إعادة استخدام الحل المسجل)

(((git commands, rerere)))(((rerere)))
إذا كنت تقوم بالكثير من عمليات الدمج وإعادة البناء (merging and rebasing)، أو كنت تحتفظ (maintaining) بفرع موضوع (topic branch) طويل العمر، فإن لدى Git ميزة تسمى "`rerere`" يمكن أن تساعد.
Expand Down
2 changes: 1 addition & 1 deletion book/06-github/sections/5-scripting.asc
Original file line number Diff line number Diff line change
Expand Up @@ -291,7 +291,7 @@ image::images/scripting-07-status.png[Commit status via the API]
يمكنك أيضاً أن ترى أن طلب السحب (Pull Request) يأخذ حالة (status) التأكيد الأخير (last commit) على الفرع (branch) ويحذرك (warns you) إذا كان فاشلاً (failure).
يعد هذا مفيداً حقاً إذا كنت تستخدم API هذا لنتائج الاختبار (test results) بحيث لا تدمج (merge) شيئاً عن طريق الخطأ (accidentally) حيث يفشل التأكيد الأخير (last commit is failing) في الاختبارات (tests).

==== Octokit
==== Octokit (مكتبة Octokit)

على الرغم من أننا كنا نفعل كل شيء تقريباً من خلال `curl` وطلبات HTTP (HTTP requests) البسيطة في هذه الأمثلة، إلا أن هناك العديد من المكتبات مفتوحة المصدر (open-source libraries) التي تجعل واجهة برمجة التطبيقات (API) هذه متاحة بطريقة أكثر اصطلاحية (idiomatic).
في وقت كتابة هذا التقرير، تتضمن اللغات المدعومة (supported languages) Go و Objective-C و Ruby و .NET.
Expand Down
2 changes: 1 addition & 1 deletion book/07-git-tools/sections/rerere.asc
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[[ref_rerere]]
=== Rerere
=== Rerere (إعادة استخدام الحل المسجل)

تعتبر وظيفة (functionality) `git rerere` ميزة مخفية (hidden feature) نوعاً ما.
الاسم يرمز إلى "`reuse recorded resolution`" ("`إعادة استخدام الدقة المسجلة`")، وكما يوحي الاسم، فإنه يسمح لك بأن تطلب من Git أن يتذكر (remember) كيف قمت بحل (resolved) تعارض جزء (hunk conflict) بحيث في المرة القادمة التي يرى فيها نفس التعارض (same conflict)، يمكن لـ Git حله لك تلقائياً (automatically).
Expand Down
2 changes: 1 addition & 1 deletion book/07-git-tools/sections/searching.asc
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
سنستعرض القليل منها.

[[_git_grep]]
==== Git Grep
==== Git Grep (البحث باستخدام Git Grep)

يأتي Git مزوداً بأمر (command) يسمى `grep` يسمح لك بالبحث (search) بسهولة في أي شجرة مؤكدة (committed tree)، أو دليل العمل (working directory)، أو حتى الفهرس (index) عن سلسلة (string) أو تعبير نمطي (regular expression).
بالنسبة للأمثلة (examples) التي تلي، سنبحث في الكود المصدري (source code) لـ Git نفسه.
Expand Down
26 changes: 13 additions & 13 deletions book/08-customizing-git/sections/attributes.asc
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,12 @@

===== Diffing Binary Files (مقارنة الملفات الثنائية)

You can also use the Git attributes functionality to effectively diff binary files.
You do this by telling Git how to convert your binary data to a text format that can be compared via the normal diff.
يمكنك أيضاً استخدام وظيفة سمات Git (Git attributes functionality) لمقارنة الملفات الثنائية (diff binary files) بفعالية.
تفعل ذلك بإخبار Git كيفية تحويل (convert) البيانات الثنائية الخاصة بك إلى تنسيق نصي (text format) يمكن مقارنته عبر الـdiff العادي (normal diff).

أولاً، ستستخدم هذه التقنية (technique) لحل واحدة من أكثر المشاكل المزعجة (annoying problems) المعروفة للبشرية: التحكم في إصدارات (version-controlling) مستندات Microsoft Word.
If you want to version-control Word documents, you can stick them in a Git repository and commit every once in a while; but what good does that do?
If you run `git diff` normally, you only see something like this:
إذا كنت تريد التحكم في إصدارات مستندات Word، يمكنك وضعها في مستودع Git والتأكيد (commit) بين الحين والآخر؛ ولكن ما الفائدة من ذلك؟
إذا قمت بتشغيل `git diff` بشكل عادي، فسترى فقط شيئاً مثل هذا:

[source,console]
----
Expand All @@ -57,15 +57,15 @@ Binary files a/chapter1.docx and b/chapter1.docx differ
*.docx diff=word
----

This tells Git that any file that matches this pattern (`.docx`) should use the "`word`" filter when you try to view a diff that contains changes.
What is the "`word`" filter?
يخبر هذا Git أن أي ملف يطابق هذا النمط (`.docx`) يجب أن يستخدم مرشح "`word`" ("`word`" filter) عندما تحاول عرض فرق (diff) يحتوي على تغييرات.
ما هو مرشح "`word`"؟
عليك إعداده (set it up).
هنا ستقوم بتكوين Git لاستخدام برنامج `docx2txt` لتحويل مستندات Word إلى ملفات نصية قابلة للقراءة (readable text files)، والتي سيقوم بعد ذلك بعمل فرق لها بشكل صحيح.

First, you'll need to install `docx2txt`; you can download it from https://sourceforge.net/projects/docx2txt[^].
أولاً، ستحتاج إلى تثبيت `docx2txt`؛ يمكنك تنزيله من https://sourceforge.net/projects/docx2txt[^].
اتبع التعليمات (instructions) الموجودة في ملف `INSTALL` لوضعه في مكان يمكن للصدفة (shell) العثور عليه.
بعد ذلك، ستكتب نصاً برمجياً تغليفياً (wrapper script) لتحويل المخرجات إلى التنسيق الذي يتوقعه Git.
Create a file that's somewhere in your path called `docx2txt`, and add these contents:
أنشئ ملفاً في مكان ما في مسارك (path) يسمى `docx2txt`، وأضف هذه المحتويات:

[source,console]
----
Expand All @@ -81,11 +81,11 @@ docx2txt.pl "$1" -
$ git config diff.word.textconv docx2txt
----

Now Git knows that if it tries to do a diff between two snapshots, and any of the files end in `.docx`, it should run those files through the "`word`" filter, which is defined as the `docx2txt` program.
الآن يعرف Git أنه إذا حاول إجراء فرق (diff) بين لقطتين (snapshots)، وانتهى أي من الملفات بـ `.docx`، فيجب تمرير تلك الملفات عبر مرشح "`word`"، والذي يُعرَّف على أنه برنامج `docx2txt`.
وهذا بشكل فعال يصنع إصدارات نصية جيدة (nice text-based versions) من ملفات Word الخاصة بك قبل محاولة عمل فرق لها.

إليك مثال: تم تحويل الفصل الأول (Chapter 1) من هذا الكتاب إلى تنسيق Word وتم تأكيده في مستودع Git.
Then a new paragraph was added.
ثم تمت إضافة فقرة جديدة (new paragraph).
إليك ما يعرضه `git diff`:

[source,console]
Expand All @@ -105,11 +105,11 @@ index 0b013ca..ba25db5 100644
Many people's version-control method of choice is to copy files into another directory (perhaps a time-stamped directory, if they're clever). This approach is very common because it is so simple, but it is also incredibly error prone. It is easy to forget which directory you're in and accidentally write to the wrong file or copy over files you don't mean to.
----

Git successfully and succinctly tells us that we added the string "`Testing: 1, 2, 3.`", which is correct.
يخبرنا Git بنجاح وبإيجاز أننا أضفنا السلسلة "`Testing: 1, 2, 3.`"، وهو أمر صحيح.
إنه ليس مثالياً (not perfect) – لن تظهر تغييرات التنسيق (formatting changes) هنا – ولكنه يعمل بالتأكيد.

Another interesting problem you can solve this way involves diffing image files.
One way to do this is to run image files through a filter that extracts their EXIF information – metadata that is recorded with most image formats.
مشكلة مثيرة أخرى يمكنك حلها بهذه الطريقة تتعلق بمقارنة ملفات الصور (diffing image files).
إحدى طرق القيام بذلك هي تمرير ملفات الصور عبر مرشح يستخرج معلومات EXIF الخاصة بها – وهي بيانات وصفية (metadata) يتم تسجيلها مع معظم تنسيقات الصور.
إذا قمت بتنزيل وتثبيت برنامج `exiftool`، فيمكنك استخدامه لتحويل صورك إلى نص (text) حول البيانات الوصفية، لذلك على الأقل سيعرض لك الفرق تمثيلاً نصياً (textual representation) لأي تغييرات حدثت.
ضع السطر التالي في ملف `.gitattributes` الخاص بك:

Expand Down
Loading