سؤال

أنا في منتصف إنشاء برنامج نصي للقيام بكمية كبيرة من التحركات في مثيل TFS الخاص بي.لدي أوامر cmdlets الخاصة بـ tfs المتوفرة مع 2010 TFS Power Tools، لكن وثائق الحصول على المساعدة الخاصة بها قليلة جدًا.على وجه التحديد، يبدو أن Add-TfsPendingChange لا يدعم إعادة التسمية، مما يجبرني على استخدام "إعادة تسمية tf.exe" بدلاً من ذلك.

أولا:هل فاتني بطريقة أو بأخرى وثائق أوامر cmdlets؟لقد حاولت الحصول على مساعدة بشأن الأوامر، لكنها لا تدعم العلامات -detailed أو -examples.هل هناك أي شيء أكثر المتاحة؟

ثانيًا:ما السبب الذي يجعلني أفضّل أيًا من أوامر cmdlets على tf.exe العادي؟هل هناك فوائد أخرى غير تمرير الأشياء عبر الأنبوب عند أداء وظائف مماثلة؟

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

المحلول

تعتبر أوامر TF cmdlets نوعًا من العرض البسيط في هذه المرحلة والتي تتضمن الوثائق المقدمة.بشكل عام ، سأستخدم TF cmdlets حيث يدعمون ما أحاول القيام به - خاصة إذا كان لديك أي استفسارات.تعد معالجة إخراج أوامر cmdlets الخاصة بالاستعلام أسهل بكثير لأنها توفر لك كائنات غنية بدلاً من دفق النص الذي يجب عليك تحليله عند استخدام شيء مثل رمز الترميز العام.

ضع في اعتبارك أيضًا أنه في نظام x64 Windows ، تعمل أوامر cmdlets TF إلا في مضيف PowerShell 32 بت.

نصائح أخرى

إن أوامر tf cmdlets ليست عديمة الفائدة تمامًا ، ولكن ... قررنا عدم محاولة استخدامها في بيئة الإنشاء لدينا حاليًا ، على الرغم من أنها تعني تحليل النص.

بصرف النظر عن شيء x64 ، هناك الكثير من الأوامر المفقودة (شكرًا @Keith) والمعلمات المفقودة ، والأهم من ذلك ، أنها لا تعمل في الجلسات البعيدة!

الخيار الثالث هو استخدام تجميعات TFS العامة من داخل PowerShell.عند القيام بذلك، يمكنك الوصول إلى كافة إمكانات عميل TFS مع الاستمرار في استخدام أوامر TFS cmdlets أيضًا.سواء اخترت هذا النهج tf.exe وتعتمد الملفات التنفيذية لسطر أوامر TFS الأخرى على بيئة البرمجة النصية التي تفضلها.

فيما يلي أمر PowerShell للإشارة إلى التجميعات العامة TFS 2013 (بالنسبة إلى TFS 2012 أو 2010، فقط قم بتغيير Version=12.0.0.0 ل Version=11.0.0.0 أو Version=10.0.0.0).

'Microsoft.TeamFoundation.Client', 'Microsoft.TeamFoundation.Common', 'Microsoft.TeamFoundation.VersionControl.Client' |
    ForEach-Object {
        Add-Type -AssemblyName "$_, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
    }

بالنسبة لمثال إعادة التسمية الخاص بك، يمكنك بعد ذلك:

  1. استخدم ال Get-TfsWorkspace cmdlet لإنشاء مثيل لMicrosoft.TeamFoundation.VersionControl.Client.Workspace هدف.
  2. اتصل ب Workspace أشياء PendRename, GetPendingChanges و تحقق في طُرق.

شيء من هذا القبيل:

$workspace = Get-Workspace
$workspace.PendRename($oldItemPath, $newItemPath)
$pendingChange = $workspace.GetPendingChanges($oldItemPath)
$workspace.Checkin($pendingChange, $comment)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top