2011-02-04 12 views
8

मैं अपने टीएफएस उदाहरण में बड़ी संख्या में चाल करने के लिए एक स्क्रिप्ट बनाने के बीच में हूं। मेरे पास 2010 TFS पावर टूल्स के साथ उपलब्ध tfs cmdlets हैं, लेकिन उनके लिए सहायता-सहायता दस्तावेज़ बहुत दुर्लभ है। विशेष रूप से, Add-TfsPendingChange नाम बदलने का समर्थन नहीं करता है, जो मुझे इसके बजाय "tf.exe rename" का उपयोग करने के लिए मजबूर करता है।पावरहेल और टीएफएस: tf.exe बनाम पावर टूल्स टीएफएस cmdlets?

पहला बंद: क्या मैंने किसी भी तरह से cmdlets के लिए प्रलेखन को याद किया है? मैंने आदेशों पर सहायता प्राप्त करने का प्रयास किया है, लेकिन वे समर्थन नहीं करते हैं - या झुकाव झंडे। क्या कुछ और उपलब्ध है?

दूसरा: मुझे नियमित tf.exe पर किसी भी cmdlets को प्राथमिकता देने का क्या कारण है? समान कार्य करने के दौरान पाइप के माध्यम से वस्तुओं को पारित करने के अलावा अन्य लाभ हैं?

उत्तर

6

टीएफ cmdlets इस बिंदु पर एक न्यूनतम पेशकश की थोड़ी सी हैं और इसमें प्रदत्त दस्तावेज शामिल हैं। आम तौर पर मैं टीएफ cmdlets का उपयोग करता हूं जहां वे जो मैं करने की कोशिश कर रहा हूं उसका समर्थन करता हूं - खासकर अगर आपके पास कोई प्रश्न है। क्वेरी cmdlets के आउटपुट को प्रोसेस करना बहुत आसान है क्योंकि वे tf status . /r जैसे कुछ का उपयोग करते समय आपको टेक्स्ट स्ट्रीम की बजाय समृद्ध ऑब्जेक्ट देते हैं।

यह भी ध्यान रखें कि एक x64 विंडोज सिस्टम पर, टीएफ cmdlets केवल 32-बिट PowerShell होस्ट में काम करते हैं।

+1

86 सांत्वना बात पर अच्छा कॉल। मुझे dll-help.xml फ़ाइल मिली थी, लेकिन इसे प्राप्त करने के साथ पढ़ना बहुत अच्छा है। धन्यवाद! – bwerks

+0

वाह, स्पष्ट रूप से cmdlets या तो विलय परिवर्तनों का पता लगाने/संभालने में असमर्थ हैं। Tf.exe पर वापस जाएं मुझे लगता है। – bwerks

+0

भविष्य में, PowerShell के भीतर से TFS सार्वजनिक असेंबली का उपयोग करने पर विचार करें (मेरे उत्तर में नमूना कोड देखें)। – weir

6

टीएफ cmdlets बिल्कुल बेकार नहीं हैं, लेकिन ... हमने अभी हमारे निर्माण पर्यावरण में उनका उपयोग करने का प्रयास करने का फैसला किया है, भले ही इसका अर्थ टेक्स्ट-पार्सिंग है।

64 बात से

अलावा, वहां missing commands (धन्यवाद @Keith) के बहुत सारे और लापता मानकों हैं, और सबसे महत्वपूर्ण बात यह , वे दूरदराज के सत्र में काम नहीं करते!

3

एक तीसरा विकल्प PowerShell के भीतर से TFS सार्वजनिक असेंबली का उपयोग करना है। जब आप ऐसा करते हैं, तो आप सभी टीएफएस क्लाइंट क्षमताओं तक पहुंच सकते हैं और अभी भी टीएफएस cmdlets का उपयोग कर सकते हैं। चाहे आप इस दृष्टिकोण को tf.exe से अधिक चुनते हैं और अन्य TFS कमांड-लाइन निष्पादन योग्य हैं, आप किस स्क्रिप्टिंग पर्यावरण को पसंद करते हैं इस पर निर्भर करता है।

यहाँ (TFS 2012 या 2010 के लिए सिर्फ Version=11.0.0.0 या Version=10.0.0.0 को Version=12.0.0.0 बदल) TFS 2013 सार्वजनिक विधानसभाओं संदर्भित करने के लिए एक एक PowerShell आदेश है।

'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 और Checkin विधियों पर कॉल करें।

कुछ इस तरह:

$workspace = Get-Workspace 
$workspace.PendRename($oldItemPath, $newItemPath) 
$pendingChange = $workspace.GetPendingChanges($oldItemPath) 
$workspace.Checkin($pendingChange, $comment)