سؤال

في مشروعي ، أحتاج إلى استخدام رمز الطرف الثالث ، المخزّن في العديد من مستودعات GIT. يتم تخزين مشروعي أيضًا في مستودع GIT (منفصل). هناك العديد من الأشخاص الذين يعملون معي في المشروع الرئيسي ، وأنا المشرف.

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

الآن هذا غير مريح إلى حد ما لأنني بحاجة إلى تحديث واحدة من التبعيات اليومية ، وغالبًا ما أساهم في رمزها بنفسي ، في معظم الوقت إلى جانب التغييرات في المشروع الرئيسي.

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

إليكم بعض مخاوفي:

  • لم نعد قادرين على الحصول على حالة مستودع ثابت مع أمر واحد (git checkout يحتاج الآن git submodule update --init).
  • لم نتمكن من استخدام بعض أدوات GIT بشكل صحيح (git archive هو الأكثر شهرة).
  • لسنا قادرين على رؤية تغييرات الحالة / الاختلافات في عروض فرعية من المشروع الرئيسي.
  • كما وجدت للتو بطريقة صعبة ، git submodule لا يعمل مع --git-dir و --work-tree الخيارات ، وتتطلب تغييرًا جسديًا للدليل الحالي إلى "Toplevel of the Tree".

يبدو أنه من أجل تبسيط سير العمل الفرعي الخاص بنا (أي عملية واحدة == أمر واحد) علينا أن نكتب غلافًا سميكًا إلى حد ما حول git. هذا محزن.

لاحظ أنه ليس خيارًا للابتعاد عن GIT أو دمج تطوير المشروعات الفرعية بالكامل في المشروع الرئيسي.

ربما أستخدم git submodules بطريقة خاطئة؟ هل هناك أي برنامج تعليمي جيد في سير العمل؟

يرجى التحدث حتى لو كنت لا تعرف الإجابة المناسبة ، ولكن تشارك مخاوفي. :-)

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

المحلول

قد ترغب في المحاولة الشجرة الفرعية git (رابط بديل) في حين أن. لقد حظيت كثيرًا من الحظ في ذلك ، باستخدام كل من الإعادة البعيدة ونظيفة (غير مرتبط بـ master التاريخ) فروع في مشروعي.

نصائح أخرى

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

http://thread.gmane.org/gmane.comp.version-control.git/130155/focus=130330

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