المزامنة وتعدد المستودعات

المستودعات

غرفة التحكم تجيب عن «أي مستودعاتي المفتوحة يحتاج إليّ؟». وهي لا تعرف إلا تبويبات مساحة العمل النشطة. المستودعات تجيب عن سؤال آخر: أين ذلك المستودع، وهل هو مفتوح أصلًا في أي مكان؟ وهي تغطي كل ما رآه Gitcito من قبل. كل مساحة عمل، وكل تبويب، وما يجده بفحص المجلدات التي تشير إليها.

صفحة المستودعات: أقسام ملوّنة للمستودعات المفتوحة والمفضلة والأخيرة
ومساحات العمل، وكل صف يعرض الاسم والمالك والفرع وحالة العمل

الأقسام

يمكن أن يظهر المستودع في أكثر من قسم. عمدًا: كل قسم إجابة كاملة عن سؤاله هو، لا شريحة من قائمة واحدة.

القسم ما فيه
المستودعات المفتوحة كل تبويب في مساحة العمل النشطة الآن
المفضلة المستودعات ذات النجمة، عبر كل مساحات العمل
الأخيرة كل ما فتحته، الأحدث أولًا. بلا سقف، بخلاف قائمة الـ 8 في المشغّل
واحد لكل مساحة عمل محفوظة تبويبات تلك المساحة، لتقفز إليها دون التحويل إليها أولًا
كل المستودعات كل مستودع يعرفه السجل، مفتوحًا أو لا

الشريط فوق القائمة شريط واحد: طي الكل وتوسيع الكل، ثم حقل بحث يأخذ بقية العرض، ثم مفتاح ملخص العمل الجاري WIP.

البحث يصفّي الصفوف في كل الأقسام دفعة واحدة، ويخفي الأقسام التي لا تطابق شيئًا حتى لا تُدفن النتائج تحت عمود عناوين فارغة. يطابق اسم المستودع أو اسمه المستعار أو مالكه أو أي جزء من مساره. وحين لا يطابق شيء في أي مكان، تقول الصفحة ذلك بدل أن تبيض.

والصندوق فارغ، يُعرض كل قسم حتى إن لم يحمل شيئًا: «المفضلة 0» يخبرك أن القسم موجود وفارغ، وهذا يستحق المعرفة. وهو ضوضاء فقط حين تكون تبحث أصلًا.

ألوان الأقسام

الأقسام تصل ملوّنة سلفًا. كل ترويسة تأخذ صبغتها من اللوحة القياسية، بما في ذلك مساحة عمل جديدة في لحظة ظهورها. القصد التوجيه لا الزينة: بقسم مساحة عمل لكل مشروع وخمسة أقسام مدمجة فوقها، تتوقف قائمة طويلة عن إخبارك أين أنت، والصبغة تجعل الترويسة قابلة للتعرّف قبل أن تقرأها.

لتغيير واحدة، استخدم ⋮ على ترويستها: تغيير اللون… يفتح نفس منتقي الألوان المستخدم لتبويبات المجموعات والمجلدات، عشر عينات جاهزة وقيمة hex حرّة. إعادة تعيين اللون يظهر بعد أن تتجاوز قسمًا، ويرجعه إلى الافتراضي المعيَّن له.

ثلاث أمور تستحق المعرفة:

  • التعيين ثابت، لا عشوائي. الأقسام نفسها تأخذ الألوان نفسها في كل تشغيل، وإضافة مساحة عمل لا تعيد تلوين ما فوقها أبدًا. لا يُحفظ إلا الألوان التي تغيّرها.
  • اللون محلي لهذه الصفحة. تلوين قسم مساحة عمل هنا لا يقول شيئًا عن تلك المساحة في بقية Gitcito. لون تبويبها إعداد منفصل.
  • اللون يُمزج إلى نسبة منخفضة من السطح بدل أن يُطبَّق بكامل قوته، حتى يبقى اختيار مشبع خلفية مقروءة في السمتين الفاتحة والداكنة. لون شاحب جدًا سيبدو لذلك شبه محايد.

ومع أكثر من عشرة أقسام تتكرر اللوحة، فيمكن لترويستين أن تشتركا في صبغة.

ما الذي يجعل مستودعًا معروفًا

يوجد صف هنا حين يفتحه Gitcito في وقت ما، أو يجده تحت مجلد للفحص. لا يُفهرس شيء لمجرد وجوده على القرص في مكان لم تخبر Gitcito عنه قط.

فتح هذه الصفحة يفهرس أيضًا ما لديك مفتوحًا في تبويب، وهكذا تحصل المستودعات المستعادة عند البدء على صف دون أن تعيد فتحها. وهو يغطي التبويبات المفتوحة فقط، ويحدث في أول زيارة لكل جلسة لا مرة واحدة إلى الأبد. مستودع تعامله بـ Forget يبقى منسيًا ما لم تفتحه من جديد.

تُضبط مجلدات الفحص في الإعدادات:

  • العمق هو كم مستوى دليل ينزل الفحص تحت الجذر (الافتراضي 3، والسقف 10).
  • الفحص يتوقف عند مستودع. سحب مورَّد أو وحدة فرعية داخل مستودع لا تُفهرس صفًا قائمًا بذاته.
  • لا يدخل أبدًا الأدلة التي تبدأ بنقطة، ويتجاوز node_modules ومجلدات الاعتماديات المشابهة.
  • وهو يقرأ أسماء المجلدات فقط: إيجاد دليل .git هو ما يجعل شيئًا مستودعًا هنا. الاسم والمالك والفرع تأتي من ملفات داخل .git (HEAD، الإعداد)، لا بتشغيل git.

الصفوف

الصفوف مرتبة أعمدة: نجمة، اسم (يراعي الاسم المستعار إن أعدت تسميته)، مالك (من عنوان remote الأصل)، شريحة فرع، ملخص WIP، وإجراءات. الأعمدة مشتركة في الصفحة كلها، لا تُقاس لكل قسم، فيصطف اسم في القسم الأخير تحت اسم في الأول وتُقرأ القائمة جدولًا لا كومة.

إجراءات النهاية ظاهرة في السكون، لا تُكشف عند المرور: فتح في تبويب، و ⋮ يفتح نفس قائمة سياق المستودع التي يفتحها زر الفأرة الأيمن. تلك القائمة المستخدمة في بقية Gitcito، موسَّعة بمدخلين خاصين بهذه الصفحة:

الإجراء ماذا يفعل
نجمة / إزالة النجمة يضيف المستودع إلى المفضلة أو يزيله منها
Locate… يعيد توجيه مجلد نُقل أو أُعيدت تسميته. الاسم المستعار وربط الملف الشخصي والنجمة تنتقل. إن كان للوجهة إعداداتها أصلًا، تفوز الوجهة
Forget يزيل المدخل من هذه القائمة. لا يمس المجلد على القرص أبدًا

مستودع لم يعد مجلده موجودًا يظهر مفقودًا، مع Locate… وForget في السطر بدل إجراءات الصف المعتادة.

النجمة مفتاح مفضلة، لا مربع تحديد جماعي. العمل على دفعة هنا حسب القسم لا حسب التحديد. انظر أدناه.

تحويل شجرة مجلدات إلى مساحات عمل

مجلد شفرتك يشفّر أصلًا التجميع الذي تريده. إن حمل ~/Code المجلدات client-a وclient-b وpersonal، فتلك سياقات تنتقل بينها، ومساحة العمل هي ذلك بالضبط، بشريط تبويباتها.

إضافة مجلد للفحص… يعرض بناءها. بعد أن يفهرس الفحص ما وجده، يسرد حوار المجلدات مباشرة داخل الذي اخترته، وكم مستودعًا يحمل كل منها. علّم التي تريدها. كل واحدة تصير مساحة عمل فيها تبويب لكل مستودع.

الصف المعنى
اسم مجلد وعدد معلَّم افتراضيًا. يصير مساحة عمل
"{n} جديدة، تُدمج في …" مساحة لهذا المجلد موجودة أصلًا. تُضاف المستودعات الجديدة فقط
"موجود أصلًا في مساحة عمل" لا شيء يُفعل، رمادي بدل المخفي
اسم الجذر نفسه مستودعات طليقة في المجلد الذي اخترته، لا في مجلد فرعي. غير معلَّم افتراضيًا

يُدرج المستودع تحت أول مجلد تحت الجذر، مهما بلغ عمقه: ~/Code/client-a/nested/app يذهب إلى client-a. المجلدات بلا مستودعات لا تُعرض.

لا يُنشأ شيء حتى تؤكد، والإلغاء يترك فهرسة الفحص في مكانها. المستودعات معروفة على أي حال، وهذا ما كان يفعله هذا الزر من قبل.

الفحص من جديد لاحقًا

آمن للتكرار. فحص ثانٍ يضيف ولا يحذف أبدًا:

  • تُلحق المستودعات الجديدة بمساحة العمل المطابقة.
  • المستودعات التي نقلتها أو أعدت تسميتها أو أزلتها يدويًا تبقى كما تركتها.
  • مساحة عمل أعيدت تسميتها ما زالت تُتعرَّف. Gitcito يتذكر المجلد الذي جاءت منه، فيدمج بدل أن ينشئ نسخة.
  • مستودع حُذف من القرص يحتفظ بتبويبه ويظهر مفقودًا.

مساحات العمل المولَّدة عادية. أعد تسميتها أو رتّبها أو لوّنها أو احذفها كما تفعل مع أي غيرها. لا شيء فيها يبقى خاصًا.

إغلاق كل ما هو مفتوح

ترويسة المستودعات المفتوحة تحمل زر إغلاق. إغلاق المستودع حين يكون واحدًا مفتوحًا، وإغلاق كل التبويبات حين تكون عدة. وهو معطَّل حين لا شيء مفتوحًا.

يغلق التبويبات التي تحمل مستودعات ويترك تبويبات الصفحات وشأنها، حتى لا تغلق صفحة المستودعات التي تقف عليها نفسها. لا يُمس شيء على القرص، ولا يُلتزم بشيء ولا يُخبأ ولا يُطرح. التبويب مجرد عرض.

إغلاق عدة يسأل أولًا ويقول كم. إغلاق واحد لا يسأل: خطأ رخيص، يُتراجع عنه باختصار إعادة فتح التبويب المغلق المعتاد. التبويبات المغلقة تذهب إلى نفس كومة العشرة التي يستخدمها إغلاق واحد، وتُفتح بالترتيب الذي كانت عليه في الشريط. أكثر من عشرة دفعة لا يمكن إرجاعها كلها.

fetch و pull لقسم بأكمله

كل ترويسة قسم تحمل زر fetch وزر pull منقسم. يعملان على كل مستودع في ذلك القسم، ويتجاوزان أيًا مجلده مفقود. لا يلزم أن تكون المستودعات مفتوحة. قسم مستودعات لم تفتحها في هذه الجلسة يعمل بالمثل.

كلاهما يجري تتابعًا لا توازيًا، حتى لا يولد قسم من أربعين مستودعًا أربعين عملية git دفعة واحدة. شريط الحالة يبيّن أي مستودع يُعمل عليه وأين أنت في الدفعة، وتنتهي الدفعة كلها بشعار واحد لا واحد لكل مستودع. إن فشل بعضها، يقول الشعار كم نجح وكم لم ينجح. ولا يتوقف الجري عند أول فشل.

السهم بجانب pull يختار ماذا يعني السحب:

الوضع ماذا يفعل
Pull (fast-forward إن أمكن) افتراضي Git. fast-forward حين يستطيع، ودمج حين لا يستطيع
Pull (fast-forward فقط) يرفض بدل إنشاء التزام دمج
Pull (rebase) يعيد تشغيل التزاماتك المحلية فوق المصدر

هذا الاختيار تفضيل عام واحد، لا لكل قسم: يصف كيف تسحب، وضبطه من سهم قسم واحد يغيّره في كل مكان. كل pull متعدد المستودعات يحترمه. أزرار الأقسام هنا، وfetch/pull على تبويب مجموعة، والسحب الجماعي في غرفة التحكم. سحب مستودع واحد من شريط الأدوات لا يتأثر، لأن تلك القائمة تسألك أصلًا أي نوع pull تريد.

شريط الإجراءات

فتح مجلد… واستنساخ… وإضافة مجلد للفحص…. ثلاث طرق لإدخال مستودع إلى سجل Gitcito، من الصفحة نفسها التي تبحث فيها عن واحد موجود أصلًا.

ملخص WIP

مربع اختياري. وهو مشغَّل، كل صف موسَّع يشغّل git status حقيقيًا ويعرض العمل غير الملتزم وحالة المزامنة. وهو مطفأ، لا تكلف الصفوف شيئًا سوى قراءة ملفات داخل .git.

وهو اختياري عمدًا: الملخص يكلف نحو خمس عمليات git لكل مستودع، على دفعات من ثمانية حتى لا يجمد سجل كبير الواجهة. تشغيله «انظر كل ما أراه الآن» عن قصد، لا تكلفة دائمة.

الحدود

  • لا شيء في هذه الصفحة يتحدّث بمؤقت. أعد فتح الصفحة، أو أطفئ ملخص WIP وأعد تشغيله، لترى الحالة الحالية.
  • ملخص WIP يغطي الأقسام الموسَّعة فقط. قسم مطوي لا يعرض حالة أصلًا، معلَّمًا كان أم لا.
  • المستودع معروف فقط حين تفتحه، أو تفحص مجلدًا يحتويه. لا سبيل للبحث في نظام الملفات من هنا.
  • بناء مساحات العمل لا يُتراجع عنه في خطوة واحدة. إلغاء الحوار لا ينشئ شيئًا، أما خطة أكّدتها ثم ندمت عليها فتُفك بحذف المساحات يدويًا.
  • مستوى واحد فقط عمقًا. المجلدات تحت المستوى الأول تُسطَّح في شريط تبويبات المساحة. client-a/nested/app يصير تبويبًا في client-a، لا مجلدًا داخله.
  • «افحص الآن» في الإعدادات لا يعرض هذا. يعيد فحص كل الجذور المضبوطة دفعة واحدة، حيث لا معنى لحوار لكل مجلد، ويفهرس فقط.
  • إغلاق الكل يعيد فتح تبويب واحد في كل مرة، حتى عشرة. إغلاق أكثر من عشرة مستودعات دفعة يعني أن الأقدم لا يُعاد فتحه من الكومة، وإن بقيت كلها في الأخيرة.
  • الـ pull لا يُصفَّى بما هو متأخر. يسحب كل مستودع في القسم، لأن معرفة أيها متأخر تعني fetch أولًا. سحب مستودع محدَّث لا يفعل شيئًا، فهذا يكلف وقتًا لا أمانًا.
  • fetch أو pull قسم لا يُتراجع عنه من كومة التراجع. الـ fetch لا يغيّر ما كان لديك. وpull يدمج أو يعيد أساسًا يُعكس لكل مستودع من تاريخ ذلك المستودع، لا من هنا.
  • ألوان الأقسام تجميلية. لا تصفّي ولا ترتّب ولا تجمّع ولا تزامن في أي مكان، ولون قسم مساحة عمل ليس لون تلك المساحة.
  • Forget يزيل المدخل من القائمة، لا من القرص أبدًا. إن كان المجلد ما زال هناك، فإن فحص الجذر نفسه (أو فتحه من جديد) يعيده فورًا.

انظر أيضًا: غرفة التحكم · مساحات العمل والتبويبات والمجموعات

حسّن هذه الترجمة على GitHub