سؤال

أرغب في دمج GIT في خط أنابيب الإنتاج لتنظيم ملفات 3DSMAX. على الرغم من أنه من الجيد العمل مع Git من خلال TortoiseGit ، إلا أنني أود التواصل معها من MaxScript لإضافة أوامر قائمة مخصصة إلى 3Dsmax.

هل يجب أن أقوم بتحليل git status نص الإخراج لتحديد حالة المجلد أو يجب أن أستخدم بعض أداة التغليف للتواصل بشكل صحيح مع GIT؟

كنت أفكر حول gitsharp نظرًا لأنه من السهل استدعاء كائنات dotnet من MaxScript ، لكنني لم أستخدم برامج dotnet الخارجية.

هل كانت مفيدة؟

المحلول

محاولتي الخاصة لحل هذا أسفرت عن تحليل حالة git. يبدو أنظف وأسهل في التنفيذ. من ناحية أخرى ، أبحث عن كلمة لإنشاء ملف XML مصنوع خاصًا للحصول على المعلومات المطلوبة بطريقة أكثر "نظيفة".

نصائح أخرى

منذ الإصدار GIT 1.7.0 ، كان هناك أ --porcelain خيار ل git status. إخراج:

git status --porcelain

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

تنسيق البورسلين

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

  1. لا يتم احترام تكوين status الخاص بالمستخدم. سوف يكون اللون دائمًا متوقفًا.
  2. لا يتم احترام تكوين حالة المستخدم. ستكون المسارات المعروضة دائمًا نسبة إلى جذر المستودع.

هناك أيضًا تنسيق بديل -Z موصى به لحلية الماكينة. في هذا التنسيق ، يكون حقل الحالة هو نفسه ، لكن بعض الأشياء الأخرى تتغير. أولاً ، تم حذف -> من إعادة تسمية الإدخالات ويتم عكس ترتيب الحقل (على سبيل المثال -من -> إلى أن يصبح من). ثانياً ، يتبع NUL (ASCII 0) كل اسم ملف ، ويحل محل المساحة كفاصل حقل وخط جديد إنهاء (ولكن لا تزال المساحة تفصل حقل الحالة عن اسم الملف الأول). ثالثًا ، لا يتم تنسيق أسماء الملفات التي تحتوي على شخصيات خاصة بشكل خاص ؛ لا يتم إجراء اقتباس أو تنصيب عكسي.

لذلك ، كما يقول ، قد ترغب أيضًا في التفكير في استخدام:

git status -z

... لتنسيق الإخراج الأكثر قوة.

يحتوي GIT عمومًا على "الخزف" ، أوامر عالية المستوى مصممة لتفاعل المستخدم اليومي ، و "السباكة" التي هي أوامر منخفضة المستوى لها واجهات بسيطة ومستقرة لبناء المزيد من الخزف. يمكنك العثور على قائمة في صفحة Git Man. لاستخدام مثال Sergo ، git ls-files هو السباكة ل git status. إن التفاف السباكة أسهل وأكثر أمانًا من الخزف ، على الرغم من أنه قد يتطلب بعضًا من محير لمعرفة مجموعة خرائط السباكة إلى الخزف.

لقد اكتشفت git ls-files وأنا راضٍ تمامًا عن تنسيق الإخراج الخاص به. git status كان موجه نحو الإنسان للغاية لتحليله.

انا افضل Mercurial ل git من خلال أمر الحالة الواضح ، ولكن مع الملفات الثنائية الكبيرة يبدو ذلك git يعمل بشكل أفضل بالنسبة لي.

لا أعرف شيئًا عن MaxScript ، ولكن إذا اكتشفت كيفية الاتصال .NET Assemblies ، فيمكنك استخدام Gitsharp وأعتقد أنه سيكون أفضل وأسهل خيار!

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

- هينون

الكثير من Max يستخدم بالفعل .NET التجميعات. يجب أن يكون ذلك أسهل شيء لتطويره. إلى جانب تحليل النص .... هش جدا. أنا فقط أنسى تحليل النص.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top