هل أستطيع نقل .بوابة الدليل الريبو إلى الوالدين الدليل ؟

StackOverflow https://stackoverflow.com/questions/614229

سؤال

لدي اثنين من الدلائل الفرعية مع كل الريبو ، وبالتالي :

PPP/
 |--ABC/
 |   |--.git/
 |   |--AAA/
 |   |    BBB/
 |   |   CCC/
 |   
 |--DEF/
 |   |--.git/
 |   |--DDD/
 |   |--EEE/

وأود أن الجمع بينهما في واحدة الريبو لذا أود أن نفترض بنية الدليل سوف يكون مثل هذا الطقس:

PPP/
 |--.git/
 |--ABC/
 |   |--AAA/
 |   |--BBB/
 |   |--CCC/
 |   
 |--DEF/
 |   |--DDD/
 |   |--EEE/

هذا هو posible?

أيضا حاليا العديد من الناس لديهم اتفاقيات إعادة الشراء على الأجهزة الخاصة بهم.كيف أكثر من ذلك بكثير تعقيدا لا تجعل الحياة ؟

تا.

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

المحلول

يمكنك أن تفعل ما كنت تصف مثل هذا:

  1. نقل المحتوى من ABC إلى ABC/ فرعي ، وتحديد التاريخ بحيث يبدو أنه كان دائما هناك:

    $ cd /path/to/ABC
    $ git filter-branch --index-filter \
        'git ls-files -s | sed "s-\t-&ABC/-" |
         GIT_INDEX_FILE=$GIT_INDEX_FILE.new \
         git update-index --index-info &&
         mv $GIT_INDEX_FILE.new $GIT_INDEX_FILE' HEAD
    

    الآن بنية الدليل الخاص بك هو ABC/ABC/your_code

  2. نفسه عن محتوى DEF:

    $ cd /path/to/DEF
    $ git filter-branch --index-filter \
        'git ls-files -s | sed "s-\t-&DEF/-" |
         GIT_INDEX_FILE=$GIT_INDEX_FILE.new \
         git update-index --index-info &&
         mv $GIT_INDEX_FILE.new $GIT_INDEX_FILE' HEAD
    

    الآن بنية الدليل الخاص بك هو DEF/DEF/your_code

  3. أخيرا, إنشاء PPP مستودع وسحب كل ABC و DEF في ذلك:

    $ mkdir /path/to/PPP
    $ cd /path/to/PPP
    $ git init
    $ git pull /path/to/ABC
    $ git pull /path/to/DEF
    

    الآن لديك PPP/ABC/your_code و PPP/DEF/your_code, جنبا إلى جنب مع التاريخ.

ربما يجب أن تسأل أنت وزملائك لتشغيل أوامر سابقة على النظام من أجل أن يكون الجميع متزامنة.

ملاحظة: غير تقليدي filter-branch الأوامر تأتي من رجل الصفحة. :-)

نصائح أخرى

هل كنت حقا بحاجة إلى دمج اثنين من القائمة مستودعات في ملف واحد أو هل تريد فقط أن مجموعة منهم ؟

إذا كنت ترغب فقط في مجموعة منهم ، ثم بوابة submodule سوف تفعل ما تريد:عليك في نهاية المطاف مع ثلاثة مستودعات حيث أعلى مستوى واحد روابط الثاني الحالي.

كدليل:

  • يجب دمجها في مستودع واحد إذا كنت تريد الذهاب إلى زيادة اقتران بينهما بحيث أنه لم يعد من المنطقي أن استخدام نسخة واحدة من الريبو مع نسخة مختلفة من الريبو B.

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

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

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

وأفضل نصيحتي سيكون لإنشاء مستودع جديد لاحتواء ABC و DEF، وحفظ الريبو القديم من هذين أن يكون النسخ الاحتياطي التاريخ وبدء تاريخ جديد مع هذا المشروع الجديد.

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