سؤال

كما ذكرت في السؤال السابق, ، أنا أبحث في ترحيل التحكم المصدر لدينا من Perforce إلى GIT.
تبحث حولها، لقد وجدت git-p4. (عليك أن تحفر أكثر قليلا، لأنه ليس حتى في المستودع الذي يشير إليه الرابط. الفعلي جيت-P4 النصي أصعب للعثور).

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

إليك سطر الأوامر الحالي الذي أستخدمه هو:

P4Client = My-p4-clientspec git-p4 استنساخ - التغييرات -max-change = 1000 - use-client-spec // p4 / path / to / be / المستوردة / ...

لذلك، السؤال الحقيقي هو: إذا تمكن أي شخص لاستيراد مستودع P4، بما في ذلك التاريخ, أود أن أعرف كيف فعلت ذلك.

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

المحلول

حاول إلحاق "@ جميع" إلى مسار الملف. على سبيل المثال، هذا ينتج ريبو مراجعة واحدة بالنسبة لي:

python /usr/share/doc/git-core/contrib/fast-import/git-p4 clone --destination=master-pom \
    //depot/services/master-pom/trunk/...

استورد هذا الأمر التاريخ الكامل:

python /usr/share/doc/git-core/contrib/fast-import/git-p4 clone --destination=master-pom \
    //depot/services/master-pom/trunk/...@all

حاولت استخدام المثال git-p4 لكنني استسلم لعدة أسباب وكتب مضخة الاستيراد السريع الخاصة بي. لقد ظهر بعض الوقت، لذا فقد تم إصلاح بعض المشكلات الآن: لكن GIT-P4 تواجه مشكلة في أي تغييرات كبيرة (مثل الإبداع الأولي للفرع) (على الرغم من أن استخدام المواصفات العميل قد يكون قد ساعدت، أنا لا أعتقد أنني جربت ذلك) وملفات مع معدل FileType "+ S" (وهو أمر سيء وشر، لكننا اعتدنا على استخدامه). ولم يكن بيثون فو ما يصل إلى السماح لي بإصلاح المشكلات التي كان لديها.

تحرير: منذ أن طلب شخص ما، ها هو.

https://github.com/araqnid/p4utils. يحتوي على العديد من الأشياء P4، منها P4-GIT-XFER هي النسخ المتماثل P4-> GIT (في اتجاه واحد). لديها عدد قليل من القضايا، بسبب كونها أساسا أداة مفيدة شخصية بدلا من قطعة حقيقية من البنية التحتية.

ابدء:

p4-git-xfer clone -d $PWD/dictionary.git -n //depot/services/midoffice/dictionary/... \
  trunk 'release/*' 'branch/*' \
  trunk=master release/*=r* branch/*=dev/*

سوف يستنسخ أن مسار Perforce إلى "قاموس" عارية. الحجج الأولى بعد المسار الأساسي هي "المواصفات الفرعية" التي تخبر النسخة المتماثلة حيث تجد الفروع تحت القاعدة. في وقت لاحق تلك (مع "=" الرموز) هي "مواصفات المرآة" التي تخبر النسخة المتكررة كيفية إنشاء فروع محلية من تلك المستوردة. تسبب المواصفات الفرعية "Refs / remotes / p4 / trunk"، "Refs / Remotes / p4 / الإصدار / 1.0" وما إلى ذلك. قوة المواصفات المرآة "تراجع / رؤساء / ماجستير" لمرآة "Refles / remotes / p4 / trunk"، "Refs / heads / r1.0" المرآة "Refs / remotes / p4 / الإصدار / 1.0" إلخ. كان المقصود كوسيلة للسماح لي بتحديد فروع معينة فقط من تلك التي تم نسخها لتكرارها للوصول إلى الحيوانات المستنسخة.

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

بعد الاستنساخ الأولي، تشغيل p4-git-xfer fetch من داخل النسخة المتماثلة GIT ستقوم بتحديث تدريجي. يبذل ما يطارد مور مارك مارك من marks/p4 داخل جيت الريبو. هذا ملف علامات تحميل سريع الاستيراد، لذلك إذا قمت بإجراء أي عمل فاخر مثل استخدام فرع المرشح لإعادة كتابة الأشياء، فقد تضطر إلى تحديث هذا أيضا.

انها ليست جميلة، ولديها بعض القضايا المتوسطة إلى الخطيرة؛ أستخدمها بشكل أساسي لراحتي الخاصة، لعزل نفسي من مشاكل Perforce، وليس كعنصر للبنية التحتية الانتقادية يوما بعد يوم. إنه اتجاه واحد: استخدم عموما البرنامج النصي P4-AM لتطبيق التصحيحات التي تم إنشاؤها بواسطة git format-patch. وبعد أن نفسها تعمل فقط في الغالب، مع تحليل العام NASTINAL، مشاكل مع خطوط النهاية نهاية الملفات، والتغيرات الثنائية إلخ.

نصائح أخرى

أحاول أيضا معرفة GIT-P4. ليس الكثير من الوثائق هناك، لسوء الحظ. أود أن أتصل بك كما يمكننا مساعدة بعضنا البعض.

  1. تثبيت جيت باش (CLI)
  2. تثبيت P4 cli.
  3. تثبيت بيثون 2.7.
  4. احصل على برنامج نصي GIT-P4 >> http://git.kernel.org/cgit/git/git.git/plain/git-p4.py
  5. ضع هذا البرنامج النصي في C / Program / files / GIT / BIN /
  6. الآن افتح Git Bash أو CMD تحقق من خلال كتابة Python تم القيام به، P4 تم القيام به، GIT Done، Git P4،
  7. إنشاء مساحة عمل العميل باسم GIT.
  8. Git P4 استنساخ DEPO / المسار / @ @ repo / المسار

فقط في حالة عدم عمل المسار في متغيرات البيئة ل Python إذا قام Python بإنشاء مشكلة تعيين P4Client = GIT

مساعدة GIT-P4 هي في الواقع جيدة جدا:

man git-p4

على Ubuntu 12.04 تشمل في git-man صفقة.

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