سؤال

في العمل ، يستخدم التطوير perforce للتعامل مع مشاركة الكود. لن أقول "التحكم في المراجعة" ، لأنه لا يُسمح لنا بالتحقق من التغييرات حتى يصبحوا جاهزين لاختبار الانحدار. من أجل الحصول على مجموعات التغيير الشخصية الخاصة بي تحت التحكم في المراجعة ، تم إعطائي الضوء الأخضر لبناء git الخاص بي وتهيئة عرض العميل لمستودع Perforce باعتباره ريبو غيت.

هناك بعض الصعوبات في القيام بذلك.

  1. يعيش العميل في مجلد فرعي لـ ~, (~/p4) ، وأريد أن أضع ~ تحت مراجعة المراجعة كذلك ، مع تاريخها المنفصل. لا يمكنني معرفة كيفية الحفاظ على التاريخ ~ منفصلة من ~/p4 دون استخدام وحدة فرعية. المشكلة في المواد الفرعية هي أنه يبدو أنني يجب أن أذهب لإنشاء مستودع سيصبح الجهاز الفرعي وبعد ذلك git submodule add <repo> <path>. ولكن لا يوجد مكان لجعل مستودع الجهاز الفرعي إلا في ~. يبدو أنه لا يوجد مكان آمن لإنشاء عرض العميل الأولي للمستودع مع استنساخ GIT P4.

    (أنا أعمل على افتراض أن إبطال أو استنساخ إعادة الريبو في دليل فرعي لإعادة الريبو غير مدعوم. على الأقل ، لا يمكنني العثور على أي شيء موثوق به على repos المتداخلة).

    تعديل: هو مجرد تجاهل ~/p4 في الريبو الجذور في ~ يكفي للسماح لي أن أبدأ ريبو متداخل في ~/p4؟ ما زالت وظيفتي __GIT_PS1 تعتقد أنني في مستودع GIT عندما أزور دليلًا فرعيًا تم تجاهله لإثبات GIT ، لذلك أنا أميل إلى التفكير.

  2. أحتاج إلى مستودع "Remote" الذي تم إنشاؤه بواسطة GIT P4 Sync ليكون فرعًا في ~/P4. نحن مطالبون بالحفاظ على جميع التعليمات البرمجية الخاصة بنا في ~/p4 حتى لا يتم دعمها. هل يمكنني الانسحاب من فرع "بعيد" وهو حقًا فرع محلي؟

  3. هذا واحد فقط من أجل الراحة ، لكنني اعتقدت أنه يمكنني تعلم شيء من خلال سؤاله. بالنسبة إلى 99 ٪ من المشروع ، أريد فقط أن أبدأ مع مراجعة رأس P4 ككائن الالتزام بالالتزام. بالنسبة للآخر 1 ٪ ، أود أن تمتص تاريخ P4 بأكمله حتى أتمكن من تصفحه في غيت. IOW ، بعد أن انتهيت من تعويضه ، سيتضمن الالتزام الأولي للفرع عن بعد/P4/Master:

    revision 1 of //depot/prod/Foo/Bar/*
    revision X of other files in //depot/prod/*, where X is the head revision
    

    و ال remotes/p4/master الفرع يحتوي على y ، حيث y هو عدد المغيرين الذين لديهم ملف في //depot/prod/Foo/Bar/*, ، مع كل التزام في التاريخ يتوافق مع أحد رواد P4 ، ورأسه يشبه رأس P4.

تحرير: إجابة Meagar لم تنجح بالنسبة لي.

لقد قمت بإعداد ~ وفحصت بضع ارتباطات. لقد تجاهلت ~/p4 و ~/p4 ليست في أي كائن ملتزم. =:

[~@ernie02] (master) $ git show HEAD:p4
fatal: Path 'p4' exists on disk, but not in 'HEAD'.

ثم ذهبت إلى ~/p4/prod ، وهو فرع أريد أن أتحقق منه. لكن هذا الريبو مكسور:

[~/p4/prod@ernie02] (master) $ git log
(shows the log for the repo rooted at ~)
[~/p4/prod@ernie02] (master) $ git init
Initialized empty Git repository in ~/p4/prod/.git/
[~/p4/prod@ernie02] (master) $ git log
fatal: bad default revision 'HEAD'

تحرير: عفوًا ، لقد نسيت الالتزام بشيء ما ~/p4/prod. أحاول مزامنة GIT P4 // depot/prod إليها الآن ...

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

المحلول

في إجابة على #1 ، إذا كنت تريد حقًا أن يكون لديك دليل منزلك بالكامل في مستودع git ، ولكن لديك ~/p4 في مستودع منفصل ، فقط أضف "p4" .git_ignore في الدليل المنزلي الخاص بك ، وجعل ريبو آخر في P4:

$ cd ~
$ git init
$ echo "p4" > .git_ignore
$ git add .git_ignore
# add all files/directories except p4
$ git commit
$ cd p4
$ git init
$ git add .
$ git commit

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

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