2012-06-14 13 views
5

मुझे प्लेनटेक्स्ट -> स्ट्रिंग से कार्य आइटम फ़ील्ड बदलने की आवश्यकता है। क्योंकि मैं कार्य आइटम पर प्रकार नहीं बदल सका, एक नया क्षेत्र बना रहा हूं और दूसरे क्षेत्र से इसका मूल्य अपडेट कर रहा हूं, मेरा दृष्टिकोण है।टीएफएस "कॉपी" मान एक फ़ील्ड से दूसरे क्षेत्र में

मैंने टीएफएस/वेब से "थोक संपादन चयनित कार्य आइटम .." की कोशिश की है, लेकिन मुझे यकीन नहीं है कि क्या आप उस टेम्पलेट में किसी अन्य फ़ील्ड मान का संदर्भ दे सकते हैं।

मैं [कार्य आइटम] कैसे सेट कर सकता हूं। [फ़ील्डन्यू]। वैल्यू = [कार्य आइटम]। [फील्डऑरिगिनल]। वैल्यू ??

क्या यह टीएफडी एपीआई का उपयोग किए बिना भी संभव है?

enter image description here

कारण है कि मैं स्ट्रिंग को प्लेन से आइटम फ़ील्ड प्रकार को बदलने की जरूरत है कि मैं एक स्तंभ ऑपरेटर के साथ एक प्रश्न यदि फ़ील्ड मान है या नहीं का परीक्षण करने के लिए चाहते हैं।

एक सादे पाठ क्षेत्र के लिए केवल स्वीकृत ऑपरेटर में शामिल/शामिल नहीं है। क्या मैं इसे ">" की अनुमति देने के लिए ओवरराइड कर सकता हूं? enter image description here

उत्तर

2

एक्सेल के माध्यम से संभव है।

  1. पुराने और नए फ़ील्ड कॉलम दोनों के साथ एक क्वेरी बनाएं।
  2. एक्सेल में क्वेरी निर्यात करें।
  3. पुराने फ़ील्ड कॉलम से डेटा को नए फ़ील्ड में कॉपी और पेस्ट करें।
  4. एक्सेल में, टीम मेनू से टीएफएस में परिवर्तनों को अपडेट करने के लिए प्रकाशित करें पर क्लिक करें।
+1

मुझे एक ही समस्या थी। लेकिन, मैं इसे उपरोक्त समाधान के साथ हल कर सकता हूं। मेरा पुराना क्षेत्र "स्ट्रिंग" है और फ़ील्ड प्रकार "एचटीएमएल" है। यह नया क्षेत्र केवल तभी पढ़ा जाता है जब टीएफएस को निर्यात किया जाता है। किसी भी विचार स्वागत से ज्यादा हैं! –

4

केमोराज़ का समाधान मेरे लिए भी काम नहीं करता है, क्योंकि HTML फ़ील्ड केवल एक्सेल में निर्यात होने पर ही पढ़ा जाता है। Bulk update TFS work items using Powershell

Link to code

: इसलिए, मैं दूसरे में एक फ़ील्ड का मान कॉपी करने के लिए

कोड संदर्भ (बस स्रोत क्षेत्र आप कॉपी कर रहे के साथ "$ wiFieldNewValue" चर की जगह) एक PowerShell स्क्रिप्ट का इस्तेमाल किया एंबेडेड कोड:

#This script sets a specific field to a specified value for all work items in a specific project 

Function LoadTfsAssemblies() { 
Add-Type –AssemblyName "Microsoft.TeamFoundation.Client, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
Add-Type -AssemblyName "Microsoft.TeamFoundation.WorkItemTracking.Client, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 

} 

##### SETTINGS 
#The TFS Team Project Collection to connect to 
$tfsUri = "http://tfsserver:8080/tfs/DefaultCollection" 

#The TFS Team Project from which to select the work items 
$tfsProject = "Test Project" 

#The work item type of the work items to update 
$wiType = "Test Case" 

#The reference name of the field to update 
$wiFieldRefName = "Microsoft.VSTS.Common.Priority" 

#The value to set the field to 
$wiFieldNewValue = "1" 
##### END SETTINGS 

LoadTfsAssemblies 
$tfs = [Microsoft.TeamFoundation.Client.TfsTeamProjectCollectionFactory]::GetTeamProjectCollection($tfsUri) 
$tfs.EnsureAuthenticated() 
if($tfs.HasAuthenticated) 
{ 
Write-Output "Successfully authenticated to TFS server [$tfsUri]" 
$workItemStore = $tfs.GetService([Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemStore]) 
$query = "SELECT [System.Id], [System.Title] FROM WorkItems WHERE [System.TeamProject] = '{0}' AND [System.WorkItemType] = '{1}'" -f $tfsProject, $wiType 
Write-Output("Using query [$query]") 

$workItems = $workItemStore.Query($query) 
Write-Output("Going to update [{0}] work items" -f $workItems.Count) 
$successCount = 0 
$failureCount = 0 
ForEach($wi in $workItems) { 
Write-Output("Updating work item [{0}]" -f $wi.Title) 

try { 
$wi.Open() 
$wi.Fields[$wiFieldRefName].Value = $wiFieldNewValue 
Write-Output("Set field [{0}] to [{1}]" -f $wiFieldRefName, $wiFieldNewValue) 
$validationMessages = $wi.Validate() 

if($wi.IsValid() -eq $true) 
{ 
$wi.Save() 
Write-Output("Successfully updated work item [{0}]" -f $wi.Title) 
$successCount++ 
} else { 
Write-Error("Work item is not valid!") 
ForEach($validationMessage in $validationMessages) 
{ 
Write-Error("Error: {0}" -f $validationMessage) 
} 
$failureCount++ 
} 
} catch { 
Write-Error("Couldn't set field [{0}] to [{1}] for work item [{2}]" -f $wiFieldRefName,$wiFieldNewValue,$wi.Title) 
Write-Error $_ 
$failureCount++ 
} 
} 

Write-Output("Finished!") 
Write-Output("Successfully updated: {0}" -f $successCount) 
Write-Output("Failed to update: {0}" -f $failureCount) 

} else { 
Write-Error("Couldn't authenticate to TFS server [$tfsUri]") 
} 
संबंधित मुद्दे