الفروع والجراحة

أدوات الفروق والدمج الخارجية

يكفي عارض الفروق وأداة الحل ذات اللوحات الثلاث في Gitcito معظم الأيام. وبعض الأيام لا يكفيان: ملف مولَّد من 4,000 سطر، أو دمج تحتاج فيه أن ترى أربعة أعمدة دفعةً واحدة، أو ببساطة الأداة التي استخدمتها عقدًا كاملًا وتقرؤها أسرع من أي أداة جديدة.

الإعدادات ← عام ← أدوات الفروق والدمج الخارجية.

إنها قائمة git، لا قائمتنا

لا يحتفظ Gitcito بجدول خاص به. فالقوائم المنسدلة هي git difftool --tool-help وgit mergetool --tool-help، ولهذا:

  • الأدوات التي وجدها git على جهازك بالفعل تُسرد أولًا؛ وتلك التي يعرفها ولا يجدها تُسرد بعدها، موسومةً بـ غير مثبَّتة.

  • الأداة المخصصة تعمل بلا أي دعم إضافي. فإن كان لديك

    git config --global difftool.mine.cmd 'mycompare "$LOCAL" "$REMOTE"'
    

    فسيظهر mine في القائمة المنسدلة كأي أداة مدمجة.

  • واختياراتك تُكتب في diff.tool وmerge.tool في إعداد git العام لديك — المفتاحان نفساهما اللذان تقرؤهما طرفيتك. عيّنه هنا وسيتصرف git difftool في سطر الأوامر بالطريقة نفسها. وعيّنه هناك وسيلتقطه Gitcito.

ويعرف git نحو ثلاثين أداة جاهزةً، من بينها Kaleidoscope، وBeyond Compare، وMeld، وKDiff3، وP4Merge، وAraxis، وDiffMerge، وWinMerge، وFileMerge، وVS Code، وعائلة vim.

أين تظهر الإجراءات

السطح الإجراء
ملف متغيّر في مؤلِّف الالتزام مقارنة في <tool> — شجرة العمل مقابل الفهرس
أداة حل التعارضات دمج في <tool> — الدمج الثلاثي الكامل

ولا يظهر المدخلان إلا حين تكون أداة مضبوطة فعلًا؛ فـ git difftool غير المضبوط سيخطئ فحسب، والزر الخامل أسوأ من غياب الزر.

ماذا يحدث بينما الأداة مفتوحة

ينتظر Gitcito إغلاقها. وذلك مقصود — فـ git mergetool لا يحضّر الملف المحلول إلا بعد خروج الأداة، فيكون هناك نتيجة حقيقية للإبلاغ عنها — ولهذا يعرض الزر مؤشر انتظار بدل أن يعود فورًا.

وبقية التطبيق تبقى مستجيبة: فهذه تعمل خارج قفل المستودع الذي يسلسل عمليات git العادية، فأداة دمج تُركت مفتوحة طوال الغداء لا تجمّد التبويب الذي خلفها.

وحين ينجح دمج خارجي، يحضّر git الملف بنفسه ويغلق Gitcito أداة الحل ويحدّث. وإن أغلقت الأداة دون حفظ، قال git ذلك ولم يتغيّر شيء.

ملف .orig

يترك git mergetool نسخة احتياطية باسم <file>.orig بجانب الملف المحلول افتراضيًا — وهو سلوك git، لا سلوك Gitcito. والمفتاح في الإعدادات يكتب mergetool.keepBackup؛ عطّله ولن يترك الملف المحلول شيئًا وراءه.

الحدود

  • فروق شجرة العمل فقط. فمدخل المؤلِّف يقارن ما لديك الآن بالفهرس. أما مقارنة التزامين تاريخيين خارجيًا فغير موصولة — استخدم عارض الفروق المدمج أو المقارنة لذلك.
  • ملف واحد في المرة. فليس هناك مسحٌ من نوع «قارن كل ملف متغيّر».
  • Gitcito لا يثبّت شيئًا أبدًا. فالأداة الموسومة بـ غير مثبَّتة تبقى قابلةً للاختيار، لأن git قد يجدها بعد أن تثبّتها — لكنها ستفشل حتى تفعل.

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