أدوات مساحة العمل

سطر الأوامر

من الطرفية يُطرح نوعان من الأسئلة، وgitcito يجيب عنهما معًا.

الأول هو «أرِني هذا» — أنت داخل نسخة من المستودع، وثمة ما يستحق النظر، والتطبيق هو المكان المناسب للنظر فيه. هذه الاستدعاءات تفتح نافذة، أقرب ما يمكن إلى ما سألت عنه.

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

gitcito .                        # افتح هذا المجلد
gitcito blame src/api.ts -l 84   # …عند لوم ذلك السطر
gitcito doctor                   # بلا نافذة: يفحص المستودع ويخرج بالرمز 1 عند الفشل

التثبيت

لوحة الأوامر (⌘K) ← تثبيت الأمر 'gitcito' في PATH. على macOS يُنشئ وصلة رمزية إلى وسيط صغير في /usr/local/bin أو /opt/homebrew/bin، ولا يطلب صلاحيات المدير إلا إذا لم يكن أيٌّ منهما قابلًا للكتابة لديك. على لينكس يذهب إلى ~/.local/bin الذي لا يحتاج صلاحيات أصلًا. الأمر نفسه يزيله. ويندوز غير مدعوم بعد.

ثم، اختياريًا:

gitcito completions zsh >> ~/.zshrc     # أو bash أو fish

فتح الأشياء

الأمر يفتح
gitcito [مسار] المستودع (افتراضيًا: المجلد الحالي)
gitcito open <اسم> مستودعًا باسم لسانه — gitcito open api
gitcito diff تغييرات نسخة العمل
gitcito graph مخطط الإيداعات
gitcito show <ref> إيداعًا واحدًا — HEAD~2 أو وسمًا أو بصمة قصيرة
gitcito blame <ملف> لوم ملف؛ أضف -l 84 للهبوط على سطر بعينه
gitcito search <استعلام> بحث الشيفرة والاستعلام مكتوب سلفًا
gitcito stack وstash وreflog وconflicts وtodos وchat وsettings تلك اللوحة
gitcito ci وclean وbisect وabsorb وsnapshots وinsights وterminal …وهكذا

الأمر gitcito help verbs يطبع القائمة كاملة. وثلاثة خيارات تنطبق عليها جميعًا: -n <اسم> يضبط الاسم المعروض للسان، و-g <مجموعة> يضعه في لسان مجموعة (تُنشأ عند الحاجة)، و-l <n> يختار سطرًا.

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

الإجابة في الطرفية

هذه تطبع ثم تنتهي. لا نافذة تُفتح، ولا حاجة حتى أن يكون التطبيق قيد التشغيل.

gitcito status

الفرع، والتتبّع، والتقدّم/التأخّر، وشجرة العمل، والمخبّآت — وإن كان المستودع يحمل واحدة — قائمة التحقق قبل الدفع من .gitcito.json. يخرج بالرمز 1 حين تكون في شجرة العمل تعارضات، فيعمل gitcito status || echo محجوب.

gitcito doctor [--fix]

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

- run: gitcito doctor          # في التكامل المستمر، قبل أي شيء مكلف

الخيار --fix يطبّق الإصلاحات التي يعرفها الطبيب (تهيئة الوحدات الفرعية، وlfs pull، وضبط core.hooksPath، ونسخ ملف عن مثاله) ثم يعيد الفحص. ولا ينفّذ أبدًا أمرًا جاء من ملف الإعداد؛ فمجموعة الإصلاحات مغلقة.

التحذيرات لا تُفشل التشغيل. التحذير يعني أن الطبيب لم يستطع تحديد شيء، لا أن شيئًا معطوب؛ وإفشال البناء بسببها يجعل هذا الملف باهظ التبنّي.

gitcito commit-check [ملف]

يفحص رسالة إيداع. بلا وسيط يقرأ .git/COMMIT_EDITMSG، و-m "…" يفحص نصًا. وهو يعرف ما أعلنه المستودع: النطاق المجهول خطأ حين يسرد .gitcito.json نطاقات، ومجرد نصيحة أسلوبية حين لا يسردها. اربطه بخطّاف:

# .husky/commit-msg
gitcito commit-check "$1"

gitcito config init | show | check

الأمر init يقرأ المستودع ويقترح .gitcito.json مما هو موجود فعلًا — .nvmrc، و.gitmodules، و.env.example بلا .env، ونطاقات الإيداع التي يستعملها التاريخ. و--dry-run يطبع بدل أن يكتب. وshow يطبع الملف الحالي، وcheck يتحقق منه ويسرد كل حقل سيُهمَل.

gitcito repos [مرشّح]

كل مستودع يعرفه Gitcito — الألسنة المفتوحة أولًا ثم الأخيرة — مع مجموعته. والخيار --paths يطبع المسارات مجرّدة، واحدًا في كل سطر، للاستعمال في السكربتات:

cd "$(gitcito repos --paths api | head -1)"

Gitcito محرِّرًا لـ git

gitcito editor install

يضبط core.editor وsequence.editor على gitcito --wait. ومن ثَمّ يفتح git commit (بلا -m) وgit commit --amend وgit tag -a وgit rebase -i ملفّاتها في Gitcito بدل vim، مع عدّاد للأحرف والتلميحات نفسها التي يعرضها مؤلّف الرسائل.

المحرِّر الذي يفتحه Gitcito حين يطلب git واحدًا

المهم هنا كلمة ينتظر: فـ git متوقف عند ذلك الحوار. لذلك

  • حفظ ومتابعة يعيد كتابة الملف ويمضي git في طريقه.
  • إلغاء يكتب ملفًّا فارغًا، وهو ما يقرؤه git على أنه إجهاض.
  • إغلاق الحوار بأي طريقة أخرى — Escape، أو الخلفية، أو إنهاء Gitcito — يُحسب إلغاءً. فطرفية تنتظر إلى الأبد نتيجة أسوأ بكثير من رسالة يُعاد كتابتها.

أضف --local لقصره على مستودع واحد، وتراجع عنه بـ gitcito editor uninstall.

ما لن يفعله

  • لا فعل طرفي يعدّل المستودع. الاستثناء الوحيد doctor --fix، وإصلاحاته قائمة ثابتة لا يستطيع ملف إعداد توسيعها.
  • repos للقراءة فقط. التطبيق العامل يملك ملف إعداداته؛ وسطر الأوامر يقرؤه ولا يكتبه أبدًا.
  • الفعل الذي لا يعرفه التطبيق المثبَّت يُتجاهل ولا يُرفض — فالوسيط الأحدث مع تطبيق أقدم يفتح المستودع رغم ذلك.
  • لا وسيط لويندوز بعد. كل الأفعال منفَّذة؛ الناقص هو مسار التثبيت وحده.

انظر أيضًا: مساحات العمل والألسنة والمجموعات · إعداد المستودع · الإيداع

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