هل تتبع Perforce Deltas فريدة من نوعها لـ Changeset أم أنها تخزن الملف بأكمله؟

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

  •  28-09-2019
  •  | 
  •  

سؤال

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

كنت أتوقع أنه نظرًا لأن هذا المطور غير خمسة أسطر في كل من الملفات A و B و C ، عندما قمت بدمج من الرأس إلى الفرع المستقر ، فسوف أحصل على تغييراته في Changset المعلقة ، والتي يمكنني مراجعتها والالتزام بها.

بدلاً من ذلك ، يبدو أن الأمر قد اتخذ كل تغيير حدث لتقديم A ، لأن الاثنين كانا متفررين ، وقاموا بتطبيق جميع تلك التغييرات التي كانت موجودة أيضًا في نسخة عمل زميلي.

وبعبارة أخرى ، يبدو أنه لا يوجد سجل في تغييرات perforce ، لما تغيره زميلي بالفعل ، مقابل ما هو الملف من قبل.

إذا قمت بتصفح التغييرات المقدمة ، فيمكنني رؤية الفرق بين إصدار زميلي من الملف ، والإصدار السابق مباشرة. ولكن بعد ذلك ، لا يبدو ذلك ، تحديد ما يدور في الدمج.

ألا تعني التغييرات ، "مجموعة من التغييرات التي تم إجراؤها بين Rev X و Revision X+1 من ملف"؟ هل يمكن لأي شخص أن يساعدني في فهم ما يعنيه "دمج التغييرات" في حين أن ما يبدو في الواقع هو أن Perforce لا يتتبع التغييرات ، فهو يتتبع الملفات.

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

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

المحلول

perforce يفعل حفظ التغييرات على نص الملفات مثل deltas (يتم حفظ الملفات الثنائية في كل مرة يتم تقديم التغيير). يبدو أنك لا تقيد نطاق المراجعة بشكل صحيح أثناء التكامل.

أنت تقول إن فرع العمل "... تم تغييره من خلال ما لا يقل عن عشرات التغييرات منذ أن تم فصل الفروع." دعنا نسميهم changelists 1-12. إذا فهمت لك بشكل صحيح ، فأنت تحاول دمج التعديلات التي تم إجراؤها في واحد فقط من هؤلاء المتغيرين ، وليس كلهم.

أثناء عملية التكامل البسيطة ، ستفترض Perforce أنك ترغب في دمج جميع التغييرات التي تم تقديمها منذ إجراء الفرع. إذا كنت تريد فقط مجموعة فرعية من هذه التغييرات ، فيجب عليك تحديد نطاق المراجعة. لذلك ، إذا كنت ترغب فقط في دمج التغييرات التي حدثت بين Changelist 11 و 12 ، فستحدد نطاق المراجعة كما هو موضح في التقاط الشاشة. (ملاحظة: نطاق المراجعة شامل ، لذا فإن تحديد نطاق يتراوح بين 11 و 12 عامًا ، كما أفعل في هذه اللقطة الشاشة ، سيتضمن بالفعل تغييرات في رواد التغيير 11 و 12. إذا كنت ترغب فقط في دمج التغييرات التي تم إجراؤها في Changelist 12 ، فأدخل 12 في كلا مجالين نطاق المراجعة.)

فقط كن على دراية بأن الصراعات الحتمية التي تنشأ قد يكون من الصعب حلها ، اعتمادًا على المدى الذي تباعدت فيه الفروع وطبيعة التغييرات.

alt text

نصائح أخرى

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

من السهل جدًا القيام به في العميل المرئي ، لكنني لست متأكدًا من مفتاح سطر الأوامر الدقيق الذي تحتاج إلى استخدامه.

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