Skip to content
Open

1 #2072

Show file tree
Hide file tree
Changes from 4 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
76 changes: 38 additions & 38 deletions book/01-introduction/sections/about-version-control.asc
Original file line number Diff line number Diff line change
@@ -1,61 +1,61 @@
=== About Version Control
=== About Version Control (حول التحكم في الإصدارات)

(((version control)))
What is "`version control`", and why should you care?
Version control is a system that records changes to a file or set of files over time so that you can recall specific versions later.
For the examples in this book, you will use software source code as the files being version controlled, though in reality you can do this with nearly any type of file on a computer.
ما هو "`version control`" (نظام التحكم في الإصدارات)، ولماذا يجب أن تهتم به؟
Version control (نظام التحكم في الإصدارات) هو نظام يقوم بتسجيل التغييرات على ملف أو مجموعة من الملفات بمرور الوقت بحيث يمكنك استدعاء إصدارات محددة لاحقاً.
بالنسبة للأمثلة في هذا الكتاب، ستستخدم كود المصدر البرمجي (software source code) كملفات يتم التحكم في إصداراتها، على الرغم من أنه في الواقع يمكنك القيام بذلك مع أي نوع من الملفات تقريباً على الكمبيوتر.

If you are a graphic or web designer and want to keep every version of an image or layout (which you would most certainly want to), a Version Control System (VCS) is a very wise thing to use.
It allows you to revert selected files back to a previous state, revert the entire project back to a previous state, compare changes over time, see who last modified something that might be causing a problem, who introduced an issue and when, and more.
Using a VCS also generally means that if you screw things up or lose files, you can easily recover.
In addition, you get all this for very little overhead.
إذا كنت مصمم جرافيك أو ويب وترغب في الاحتفاظ بكل إصدار من صورة أو تخطيط (وهو ما سترغب به بالتأكيد)، فإن استخدام Version Control System (VCS) (نظام التحكم في الإصدارات) هو أمر حكيم جداً.
إنه يتيح لك إعادة الملفات المحددة إلى حالة سابقة (revert)، وإعادة المشروع بأكمله إلى حالة سابقة، ومقارنة التغييرات بمرور الوقت، ومعرفة من قام بتعديل شيء ما قد يتسبب في مشكلة، ومن أدخل مشكلة ومتى، والمزيد.
استخدام VCS (نظام التحكم في الإصدارات) يعني أيضاً بشكل عام أنه إذا أفسدت الأمور أو فقدت ملفات، يمكنك بسهولة الاسترداد (recover).
بالإضافة إلى ذلك، يمكنك الحصول على كل هذا مقابل القليل جداً من العبء الإضافي (overhead).
Comment on lines +1 to +11
Copy link

Copilot AI Mar 20, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This section is being translated into Arabic in the English source repository. The documented process is to maintain translations in per-language repos (see TRANSLATING.md); please move these edits to the Arabic translation repo and keep this repo’s content in English.

Copilot uses AI. Check for mistakes.

==== Local Version Control Systems
==== Local Version Control Systems (أنظمة التحكم في الإصدارات المحلية)

(((version control,local)))
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.
طريقة Version-control (التحكم في الإصدارات) المفضلة لدى الكثير من الناس هي نسخ الملفات إلى دليل آخر (ربما دليل يحمل طابعاً زمنياً، إذا كانوا أذكياء).
هذا النهج شائع جداً لأنه بسيط للغاية، ولكنه أيضاً عرضة للخطأ بشكل لا يصدق.
من السهل أن تنسى الدليل الذي تتواجد فيه وتكتب عن طريق الخطأ في الملف الخاطئ أو تنسخ فوق ملفات لا تقصدها.

To deal with this issue, programmers long ago developed local VCSs that had a simple database that kept all the changes to files under revision control.
للتعامل مع هذه المشكلة، قام المبرمجون منذ فترة طويلة بتطوير أنظمة VCS (أنظمة التحكم في الإصدارات) محلية تحتوي على قاعدة بيانات بسيطة تحتفظ بجميع التغييرات التي تطرأ على الملفات تحت Revision control (نظام التحكم في المراجعة).

.Local version control diagram
.Local version control diagram (مخطط نظام التحكم في الإصدارات المحلي)
image::images/local.png[Local version control diagram]

One of the most popular VCS tools was a system called RCS, which is still distributed with many computers today.
https://www.gnu.org/software/rcs/[RCS^] works by keeping patch sets (that is, the differences between files) in a special format on disk; it can then re-create what any file looked like at any point in time by adding up all the patches.
أحد أكثر أدوات VCS (أنظمة التحكم في الإصدارات) شيوعاً كان نظاماً يسمى RCS، والذي لا يزال يتم توزيعه مع العديد من أجهزة الكمبيوتر اليوم.
يعمل https://www.gnu.org/software/rcs/[RCS^] عن طريق الاحتفاظ بمجموعات التصحيح (patch sets) (أي الاختلافات بين الملفات) بتنسيق خاص على القرص؛ يمكنه بعد ذلك إعادة إنشاء شكل أي ملف في أي وقت عن طريق جمع جميع التصحيحات (patches).

==== Centralized Version Control Systems
==== Centralized Version Control Systems (أنظمة التحكم في الإصدارات المركزية)

(((version control,centralized)))
The next major issue that people encounter is that they need to collaborate with developers on other systems.
To deal with this problem, Centralized Version Control Systems (CVCSs) were developed.
These systems (such as CVS, Subversion, and Perforce) have a single server that contains all the versioned files, and a number of clients that check out files from that central place.(((CVS)))(((Subversion)))(((Perforce)))
For many years, this has been the standard for version control.
المشكلة الرئيسية التالية التي يواجهها الأشخاص هي أنهم بحاجة إلى التعاون مع مطورين على أنظمة أخرى.
للتعامل مع هذه المشكلة، تم تطوير Centralized Version Control Systems (CVCSs) (أنظمة التحكم في الإصدارات المركزية).
تحتوي هذه الأنظمة (مثل CVS و Subversion و Perforce) على خادم واحد (single server) يحتوي على جميع الملفات ذات الإصدارات، وعدد من العملاء (clients) الذين يقومون بسحب (check out) الملفات من ذلك المكان المركزي.(((CVS)))(((Subversion)))(((Perforce)))
لسنوات عديدة، كان هذا هو المعيار للتحكم في الإصدارات.

.Centralized version control diagram
.Centralized version control diagram (مخطط نظام التحكم في الإصدارات المركزي)
image::images/centralized.png[Centralized version control diagram]

This setup offers many advantages, especially over local VCSs.
For example, everyone knows to a certain degree what everyone else on the project is doing.
Administrators have fine-grained control over who can do what, and it's far easier to administer a CVCS than it is to deal with local databases on every client.
يوفر هذا الإعداد العديد من المزايا، خاصة على أنظمة VCS (أنظمة التحكم في الإصدارات) المحلية.
على سبيل المثال، يعرف الجميع إلى حد معين ما يفعله كل شخص آخر في المشروع.
يتمتع المسؤولون (Administrators) بتحكم دقيق في من يمكنه فعل ماذا، ومن الأسهل بكثير إدارة نظام CVCS (نظام تحكم في الإصدارات مركزي) بدلاً من التعامل مع قواعد البيانات المحلية على كل عميل (client).

However, this setup also has some serious downsides.
The most obvious is the single point of failure that the centralized server represents.
If that server goes down for an hour, then during that hour nobody can collaborate at all or save versioned changes to anything they're working on.
If the hard disk the central database is on becomes corrupted, and proper backups haven't been kept, you lose absolutely everything -- the entire history of the project except whatever single snapshots people happen to have on their local machines.
Local VCSs suffer from this same problem -- whenever you have the entire history of the project in a single place, you risk losing everything.
ومع ذلك، فإن هذا الإعداد يحتوي أيضاً على بعض السلبيات الخطيرة.
الأكثر وضوحاً هو نقطة الفشل الوحيدة (single point of failure) التي يمثلها الخادم المركزي (centralized server).
إذا تعطل ذلك الخادم لمدة ساعة، فخلال تلك الساعة لا يمكن لأي شخص التعاون على الإطلاق أو حفظ التغييرات ذات الإصدارات لأي شيء يعملون عليه.
إذا تلف القرص الصلب الموجود عليه قاعدة البيانات المركزية (central database)، ولم يتم الاحتفاظ بنسخ احتياطية (backups) مناسبة، فإنك تفقد كل شيء تماماً -- السجل الكامل (entire history) للمشروع باستثناء أي لقطات (snapshots) فردية قد يمتلكها الأشخاص على أجهزتهم المحلية.
تعاني أنظمة VCS (أنظمة التحكم في الإصدارات) المحلية من نفس هذه المشكلة -- متى ما كان لديك السجل الكامل للمشروع في مكان واحد، فإنك تخاطر بفقدان كل شيء.

==== Distributed Version Control Systems
==== Distributed Version Control Systems (أنظمة التحكم في الإصدارات الموزعة)

(((version control,distributed)))
This is where Distributed Version Control Systems (DVCSs) step in.
In a DVCS (such as Git, Mercurial or Darcs), clients don't just check out the latest snapshot of the files; rather, they fully mirror the repository, including its full history.
Thus, if any server dies, and these systems were collaborating via that server, any of the client repositories can be copied back up to the server to restore it.
Every clone is really a full backup of all the data.
هنا تتدخل Distributed Version Control Systems (DVCSs) (أنظمة التحكم في الإصدارات الموزعة).
في نظام DVCS (مثل Git أو Mercurial أو Darcs)، لا يكتفي العملاء (clients) بسحب أحدث لقطة (snapshot) للملفات فحسب؛ بل إنهم يعكسون (mirror) المستودع (repository) بالكامل، بما في ذلك سجله الكامل (full history).
وبالتالي، إذا تعطل أي خادم، وكانت هذه الأنظمة تتعاون عبر ذلك الخادم، يمكن نسخ أي من مستودعات العملاء مرة أخرى إلى الخادم لاستعادته (restore it).
كل نسخة (clone) هي في الواقع نسخة احتياطية كاملة (full backup) من جميع البيانات.

.Distributed version control diagram
.Distributed version control diagram (مخطط نظام التحكم في الإصدارات الموزع)
image::images/distributed.png[Distributed version control diagram]

Furthermore, many of these systems deal pretty well with having several remote repositories they can work with, so you can collaborate with different groups of people in different ways simultaneously within the same project.
This allows you to set up several types of workflows that aren't possible in centralized systems, such as hierarchical models.
علاوة على ذلك، فإن العديد من هذه الأنظمة تتعامل بشكل جيد مع وجود العديد من Remote repositories (المستودعات البعيدة) التي يمكنهم العمل معها، بحيث يمكنك التعاون مع مجموعات مختلفة من الأشخاص بطرق مختلفة في وقت واحد داخل نفس المشروع.
يتيح لك ذلك إعداد عدة أنواع من مسارات العمل (workflows) غير الممكنة في الأنظمة المركزية، مثل النماذج الهرمية (hierarchical models).
18 changes: 9 additions & 9 deletions book/01-introduction/sections/command-line.asc
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
=== The Command Line
=== The Command Line (سطر الأوامر)

There are a lot of different ways to use Git.
There are the original command-line tools, and there are many graphical user interfaces of varying capabilities.
For this book, we will be using Git on the command line.
For one, the command line is the only place you can run _all_ Git commands -- most of the GUIs implement only a partial subset of Git functionality for simplicity.
If you know how to run the command-line version, you can probably also figure out how to run the GUI version, while the opposite is not necessarily true.
Also, while your choice of graphical client is a matter of personal taste, _all_ users will have the command-line tools installed and available.
هناك الكثير من الطرق المختلفة لاستخدام Git.
هناك أدوات سطر الأوامر (command-line tools) الأصلية، وهناك العديد من واجهات المستخدم الرسومية (graphical user interfaces) ذات الإمكانيات المتفاوتة.
في هذا الكتاب، سنستخدم Git على سطر الأوامر (command line).
أولاً، سطر الأوامر (command line) هو المكان الوحيد الذي يمكنك فيه تشغيل _جميع_ أوامر Git -- فمعظم واجهات المستخدم الرسومية (GUIs) تنفذ فقط مجموعة فرعية جزئية من وظائف Git للتبسيط.
إذا كنت تعرف كيفية تشغيل إصدار سطر الأوامر (command-line version)، فربما يمكنك أيضاً معرفة كيفية تشغيل إصدار واجهة المستخدم الرسومية (GUI version)، بينما العكس ليس صحيحاً بالضرورة.
أيضاً، في حين أن اختيارك للعميل الرسومي (graphical client) هو مسألة ذوق شخصي، فإن _جميع_ المستخدمين سيكون لديهم أدوات سطر الأوامر (command-line tools) مثبتة ومتاحة.
Comment on lines +1 to +8
Copy link

Copilot AI Mar 20, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This section has been translated into Arabic in-place. The English source repo should remain English; translations are maintained separately per language per TRANSLATING.md. Please move these edits to the Arabic translation repository (or revert here).

Copilot uses AI. Check for mistakes.

So we will expect you to know how to open Terminal in macOS or Command Prompt or PowerShell in Windows.
If you don't know what we're talking about here, you may need to stop and research that quickly so that you can follow the rest of the examples and descriptions in this book.
لذلك نتوقع منك أن تعرف كيفية فتح نافذة Terminal في نظام macOS أو Command Prompt أو PowerShell في نظام Windows.
إذا كنت لا تعرف عما نتحدث عنه هنا، فقد تحتاج إلى التوقف والبحث عن ذلك بسرعة حتى تتمكن من متابعة بقية الأمثلة والأوصاف في هذا الكتاب.
Loading