سؤال

لنفترض أن أحد المطورين في فريقي قام بتعليق التغييرات التي أجراها في الفرع أ.وأنا أعمل في الفرع ب.هل يمكنني إلغاء تغييراته في الفرع B؟(عن طريق واجهة المستخدم الرسومية أو موجه الأوامر)

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

المحلول

ال أدوات الطاقة فيجوال ستوديو يجب أن تتيح لك القيام بذلك.

C:\src\2\Merlin\Main>tfpt unshelve /?
tfpt unshelve - Unshelve into workspace with pending changes

Allows a shelveset to be unshelved into a workspace with pending changes.
Merges content between local and shelved changes. Allows migration of shelved
changes from one branch into another by rewriting server paths.

Usage: tfpt unshelve [shelvesetname[;username]] [/nobackup]
                     [/migrate /source:serverpath /target:serverpath]

 shelvesetname          The name of the shelveset to unshelve
 /nobackup              Skip the creation of a backup shelveset
 /migrate               Rewrite the server paths of the shelved items
                        (for example to unshelve into another branch)
 /source:serverpath     Source location for path rewrite (supply with /migrate)
 /target:serverpath     Target location for path rewrite (supply with /migrate)
 /nobackup              Skip the creation of a backup shelveset

على سبيل المثال، لدمج مجموعة أرفف تسمى "اسم مجموعة الأرفف" التي تم إنشاؤها على الفرع 1 إلى الفرع 2، استخدم هذا:

>tfpt unshelve "Shelve Set Name";domain\userName /migrate /source:"$/Project/Branch1/" /target:"$/Project/Branch2/"

نصائح أخرى

حل بديل لـ tfpt يتجنب الاضطرار إلى دمج كل ملف يدويًا

المشكلة في أداة الطاقة tfs هي ذلك أنت تقوم بعملية "دمج لا أساس له" لذا عليك التأكد من كل ملف.كانت لدي مجموعة رفوف تحتوي على أكثر من 800 ملف ولم أثق مطلقًا في زر "الدمج التلقائي" ولم أرغب في تصفح كل ملف على حدة - لذا كان علي أن أجد طريقة أخرى!

  • تحميل وتثبيت TFS الرفوف الصاحب.
  • تظهر الأداة ضمن "الأدوات" في VS2010
  • قم بتشغيل أداة "Shelveset Sidekick"، وانقر فوق "بحث" لإظهار مجموعات الرفوف
  • انقر بزر الماوس الأيمن على مجموعة الرفوف الخاصة بك وحدد "تصدير مجموعة الرفوف"
  • احفظه في مكان فارغ مثل C:\temp\shelveset-name
  • أصبح لديك الآن بنية دليل كاملة تحتوي على الملفات الجديدة فقط

(ملحوظة:لا يوجد شريط تقدم عند التصدير - لذلك إذا كان لديك مجموعة رفوف كبيرة تستغرق وقتًا طويلاً للتصدير، فسيتعين عليك فقط التحقق في Windows Explorer (ملف>خصائص>الحجم) من أن الملفات لا تزال تنزل إذا كنت تعتقد أنها مجمدة ).

عليك الآن فقط نسخها إلى الفرع الجديد باستخدام Windows Explorer.

هذا عملت بالنسبة لي:

  • التحقق من الحل كاملاً أولاً (في الفرع الجديد)
  • أغلق هذا الحل
  • خذ TFS دون اتصال من داخل VS (أداة للقيام بذلك) - انظر أدناه لمعرفة سبب أهمية ذلك...
  • انسخ الملفات في مستكشف Windows.هيكل الدليل في c:\temp\shelveset-name يجب إعادة تسميته ليتوافق مع الفرع الجديد. نصيحة:تأكد من النسخ إلى المكان الصحيح !!!
  • جلب VS عبر الإنترنت
  • يجب أن تجد كافة التغييرات وإضافة الملفات الجديدة
  • إذا طلب منك ربط التحكم بالمصادر، فتأكد من التحقق من صحة المسار للفرع الجديد.
  • اختبار - ومن ثم التحقق من الملفات الجديدة

مهم:لقد وجدت أنه إذا لم تقم أولاً باستخدام TFS في وضع عدم الاتصال، فسوف ينتهي بك الأمر إلى ظهور أي ملفات جديدة (من مجموعة التغييرات غير الرفوف) بدون علامة اختيار حمراء صغيرة وسيتعين عليك استبعادها وإدراجها مرة أخرى للحصول عليها لهم أن يضيفوا.إذا كان لدى أي شخص حل بديل لهذه المشكلة، فأنا أرغب في معرفته - يبدو أن التحديث لا يعمل.

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

يحرر:حسنًا، أعتقد أنني كنت أفعل ذلك بالطريقة الصعبة.سأضطر إلى تجربة حل كيرت.:)

لقد أمضيت وقتًا طويلاً لإنجاز ذلك ولم يكن لدي سوى عدد قليل من المشكلات التي يجب التغلب عليها.من الممكن ولكن هنا بعض المشكلات والقليل من القواعد التي يجب اتباعها لتجنب هذه المشكلات

خطأ:

غير قادر على تحديد مساحة العمل

تم حل هذه المشكلة بالذات عن طريق تشغيل الأمر من مصدر مجلد جذر الفرع.وهذا يتعارض مع بعض الإجابات على SO حيث يقولون لاستخدام فرع "الهدف" - لا، استخدم "المصدر":

cd [your !!source!! branch root]
tfpt unshelve /migrate /source:"$/MyCollection/Development/Maint1.1" /target:"$/MyCollection/Development/Maint1.2" "myShelveset;UserName"

وظهر العدد الثاني بعد هذا.يبدو أنه لا يمكن الاتصال بخادم TFS.ما أدركته هو أنني قمت بتثبيت عدة VS ومتصلة بخوادم TFS مختلفة.كنت أستخدم VS12 وكان لدي اتصال بمساحة العمل والخادم.لكنني لم أدرك أن نفس الاتصال يحتاج إلى النسخ المتماثل في VS13 حتى يعمل TFPT2013.يتصل بنفس الخادم ومساحة العمل.

لقد حاولت أيضًا القيام بذلك باستخدام TFPT2015 ولكني قمت بتثبيته ولم يتم تثبيت TFPT.exe وبالتالي كان عديم الفائدة.لذلك حاولت من TFPT2013 إلى TFS2015 وقد نجحت مع هذا الأمر بالتحديد.وأتساءل، لماذا لا، إذا كان VS12/13 يعمل بشكل جيد ضد TFS2015؟

كي تختصر

  • استخدم CMD أو DevCMD - لا يهم
  • تشغيل الأمر من مصدر مجلد جذر الفرع
  • تحقق من اتصال Team Explorer Server لـ VS محدد
  • تعمل أدوات TF Power Tools 2013 ضد TFS v15، على الأقل يهاجر يعمل الخيار
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top