سؤال

قل أنني قد أنشأت فرعا في perforce من codebase لدينا. هنا هو فرع المواصفات:

//depot/code/main/... //depot/code/branch/...

ثم، في الفرع، أقول أنني نقل الملف المتفرع A.txt -> B.TXT باستخدام

p4 integrate //depot/code/branch/a.txt //depot/code/branch/b.txt
p4 delete //depot/code/branch/a.txt

الآن، دعنا نقول أن بعض التغييرات مصنوعة إلى A.TXT في Main الرئيسية التي أود دمجها في B.TXT في الفرع

عندما أحاول دمج استخدام المواصفات الفرعية الأصلية، لا يعكس التغييرات التي تم إجراؤها على A.TXT في Mainto B.TXT - هل هناك أي طريقة للحصول على التغييرات التي تم إجراؤها في المعرض الرئيسي في الملف الذي تمت إعادة تسميته؟

المواصفات الفرعية كبيرة إلى حد ما (مئات التغييرات) وإعادة تسمية عدد قليل من الملفات في الفرع، لذلك أود الحصول على طريقة آلية للقيام بذلك. اسمحوا لي أن أعرف إذا كان بإمكاني توضيح أي شيء هنا - فستساعد في الحصول على السبورة؛)

شكرًا! سام

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

المحلول

PERFORCE 2009.1 له إعادة تسمية مناسبة، والتي قد تساعد في ذلك - ربما، وفي أي حال فقط من أجل إعادة تسمية المستقبل. يرى Perforce 2009.1 ملاحظات الإصدار, ، خاصه:

#177023 * **
    The new 'p4 move' command allows for better support for
    renaming files.  A file must be already opened for 'edit'
    or 'add' in order to be moved.  Moved files can be synced,
    resolved and diffed against the repository just like files
    opened for 'edit'.  See 'p4 help move' for more info.

يمكنك إضافة إعادة تسمية إلى المواصفات الفرعية. ثم على الأقل سوف تكون التكامل تلقائيا - حتى لو كانت المواصفات الفرعية ستكون أطول وأكثر تعقيدا.

نصائح أخرى

يمكنك إضافة مفتاح "-3" لاستخدام محرك جديد للتكامل، والذي سيكتشف الملفات المستهدفة التي تم نقلها مسبقا ب "نقل P4"، وتوصيلها "Retarget" نفسه لاتباع عمليات الحركة هذه.

p4 integrate -3 //depot/code/main/... //depot/code/branch/...

ستقوم بدمج التغييرات في //depot/code/main/a.txt إلى //depot/code/branch/b.txt.

هذه هي ميزة "undoc" في إصدار 2010 الحالي 2010، ولكنها ستكون السلوك الافتراضي في 2011.1 القادم.

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

يمكنك النص على إنشاء مواصفات فرع للمناولة نقل الملفات باستخدام إخراج P4 FSTAT.

استخدم ما يلي كنقطة انطلاق:

ROOT_PATH="//depot/books/..."
FIRST_CHANGE=91212

p4 fstat -Os -T headChange -F "headAction=move/* headChange>$FIRST_CHANGE" $ROOT_PATH|grep headChange | sort -u|while read DUMMY1 DUMMY2 change; do p4 describe $change; done|grep "moved from"|sed 's/\.\.\./\t/g; s/\#[0-9]*//g; s/ moved from//g;'

سيؤدي ذلك إلى العثور على جميع الملفات في // Depot / Books / ... التي تم نقلها في التغيير 91212 أو الأحدث

بالنسبة لنا، فإن إخراج هذا يبدو

//depot/Books/bar.txt //depot/books/foo.txt.

استخدامه لصياغة فرع المواصفات.

أنا لا أصدق ذلك. لأنه لا يوجد مباشرة p4 rename, ، يجب عليك دمج والحذف - بمجرد القيام بذلك، يتكامل من فرع آخر لم يعد يذهب إلى الملف الصحيح. على الأقل كانت تجربتي.

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