سؤال

لدي بوابة الإعلام مستودع حيث أنا أحفظ كل من جافا سكريبت و CSS الملفات الرئيسية والبرامج النصية التي سوف تستخدم في مشاريع مختلفة.

إن إنشاء مشروع جديد هذا في Git, كيف استخدم ملفات جافا سكريبت من وسائل الإعلام مستودع في مشروعي الجديد بطريقة تجعل ذلك حتى لا تضطر إلى تحديث كل نسخ البرنامج النصي عندما جعل التغييرات ؟

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

المحلول

المفتاح هو بوابة الوحدات الفرعية.

تبدأ القراءة الوحدات الفرعية الفصل من بوابة المجتمع المحلي الكتاب أو من دليل المستخدمين

نقول لديك مستودع مشروع1 PROJECT2 و الإعلام...

cd /path/to/PROJECT1
git submodule add ssh://path.to.repo/MEDIA
git commit -m "Added Media submodule"

كرر على الريبو...

الآن, بارد, أن أي وقت ارتكاب التغييرات في وسائل الإعلام ، يمكنك القيام بذلك:

cd /path/to/PROJECT2/MEDIA
git pull
cd ..
git add MEDIA
git commit -m "Upgraded media to version XYZ"

هذا فقط تسجيل حقيقة أن وسائل الإعلام submodule في PROJECT2 هو الآن في الإصدار XYZ.

يعطيك 100% السيطرة على ما نسخة من وسائل الإعلام كل مشروع الاستخدامات. بوابة الوحدات الفرعية هي رائعة لكن تحتاج إلى التجربة والتعرف عليها.

مع القوة الكبيرة تأتي فرصة كبيرة للحصول على للعض في الردف.

نصائح أخرى

إذا فهمت مشكلتك بشكل جيد كنت ترغب في الأمور التالية:

  1. لديك ملفات الوسائط المخزنة في واحد git ، والذي يستخدم من قبل العديد من المشاريع
  2. إذا قمت بتعديل ملف وسائط في أي من المشاريع الخاصة بك في الجهاز المحلي ، ينبغي أن تظهر على الفور في كل المشاريع الأخرى (إذا كنت لا ترغب في ارتكاب+دفع+سحب كل وقت)

للأسف لا يوجد الحل النهائي ما تريد, ولكن هناك بعض الأشياء التي يمكنك أن تجعل حياتك أسهل.

أولا يجب أن تقرر شيء واحد مهم:هل تريد تخزين كل نسخة في المشروع مستودع إشارة إلى نسخة من وسائل الاعلام الملفات ؟ هكذا على سبيل المثال إذا كان لديك مشروع يسمى example.com هل تحتاج معرفة أي نمط.css وهي تستخدم منذ 2 أسابيع أو أحدث هو دائما (أو معظمها) أفضل ؟

إذا كنت لا تحتاج إلى معرفة هذا الحل السهل:

  1. إنشاء مستودع الملفات واحد لكل مشروع
  2. إنشاء ارتباط رمزي في المشاريع الخاصة بك والتي تشير إلى محليا المستنسخة الإعلام مستودع.يمكنك إما إنشاء النسبية الارتباط الرمزي (مثلا ، ../الإعلام) و نفترض أن الجميع الخروج المشروع بحيث الإعلام الدليل في نفس المكان ، أو كتابة اسم الارتباط الرمزي في .gitignore الجميع أن تقرر أين تضع ملفات الوسائط.

في معظم الحالات, لكن, كنت تريد أن تعرف هذه الإصدارات المعلومات.في هذه الحالة لديك خياران:

  1. متجر كل مشروع واحد كبير مستودع.ميزة هذا الحل هو أن سيكون لديك فقط 1 نسخة من وسائل الإعلام مستودع.العيب الكبير هو أصعب بكثير من التبديل بين إصدارات المشروع (إذا كنت الخروج إلى نسخة مختلفة يمكنك دائما تعديل جميع المشاريع)

  2. استخدام الوحدات الفرعية (كما هو موضح في الجواب 1).بهذه الطريقة يمكنك تخزين الملفات في ملف واحد و المشاريع سوف تحتوي فقط إشارة إلى معين الإعلام الريبو الإصدار.ولكن هذه الطريقة سوف وعادة ما يكون العديد من النسخ المحلية من وسائل الإعلام مستودع و لا يمكن بسهولة تعديل ملف وسائط في جميع المشاريع.

إذا كنت على الأرجح اختيار الأولى أو الثالثة حل (وصلات رمزية أو الوحدات الفرعية).إذا اخترت استخدام الوحدات الفرعية يمكنك لا تزال تفعل الكثير من الأشياء لجعل حياتك أسهل:

  1. قبل ارتكاب يمكنك إعادة تسمية submodule الدليل ووضع الارتباط الرمزي المشترك الإعلام الدليل.عندما كنت على استعداد لارتكاب يمكنك إزالة الارتباط الرمزي وإزالة submodule الظهر ، ثم يرتكبها.

  2. يمكنك إضافة واحد من نسختك من وسائل الإعلام مستودع باعتباره مستودع بعيد أن جميع المشاريع الخاصة بك.

يمكنك إضافة المحلية الدلائل عن بعد بهذه الطريقة:

cd /my/project2/media
git remote add project1 /my/project1/media

إذا قمت بتعديل ملف في /بي/مشروع1 الإعلام, يمكنك ارتكابها وتسحبه من /بلدي/project2/وسائل الإعلام دون دفع إلى ملقم بعيد:

cd /my/project1/media
git commit -a -m "message"
cd /my/project2/media
git pull project1 master

أنت حر في أن إزالة هذه يرتكب في وقت لاحق (مع بوابة إعادة تعيين) لأنك لم تقاسمها مع المستخدمين الآخرين.

وكان لي مشاكل مع الأشجار الفرعية والوحدات الفرعية أن إجابات أخرى تشير ... ويرجع ذلك أساسا أستخدمه SourceTree ويبدو عربات التي تجرها الدواب إلى حد ما.

وبدلا من ذلك، انتهى بي الأمر باستخدام روابط الرمزية والتي يبدو أنها تعمل بشكل جيد لذلك أنا نشرها هنا كبديل محتمل.

وهناك دليل كامل هنا: <لأ href = "http://www.howtogeek.com/howto/16226/complete-guide-to-symbolic-links-symlinks-on-windows-or-linux/" يختلط = "نوفولو"> http://www.howtogeek.com/howto/16226/complete-guide-to-symbolic-links-symlinks-on-windows-or-linux/

ولكن في الأساس تحتاج فقط إلى mklink المسارين في موجه الأوامر مرتفعة. تأكد من استخدام / J ارتباط ثابت البادئة. شيء على طول هذه الخطوط: mklink / J C: \ مشاريع \ MainProject \ الإضافات C: \ مشاريع \ SomePlugin

ويمكنك أيضا استخدام مسارات المجلدات النسبية ووضعها في الخفافيش ليتم تنفيذها من قبل كل شخص عندما أولا تحقق من المشروع.

وعلى سبيل المثال: mklink / J. \ الأصول \ TaqtileTools .. \ TaqtileHoloTools

وبعد ربط المجلد قد تحتاج إلى تجاهل مجلد داخل المستودع الرئيسي الخاص بك على الرجوع إليها. إلا كنت على ما يرام.

<قوية> ملاحظة لقد حذف جوابي مكررة من وظيفة أخرى كما اتسم هذا المنصب في شكل سؤال مكرر لهذا واحد.

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