2014-02-25 5 views
1

Я пытаюсь получить последнюю информацию о конкретной папке и задавался вопросом, как я это сделаю. Я читал документацию MSDN о классе Workspace, но, к сожалению, он, похоже, не предоставляет никакой информации о том, как я буду получать последнюю из конкретной папки.Powershell получить последние в рабочей папке?

Например, у меня есть одно рабочее пространство, но с несколькими рабочими папками. Мой сценарий PowerShell может быть последним, но только на уровне рабочей области. Можно ли получить его с рабочего уровня каталога или на определенном уровне папки?

Заранее спасибо, DS.

EDIT Я считаю, что это возможно, так как электроинструменты могут сделать это, щелкнув правой кнопкой мыши папку и получив последнюю. В идеале, хотите воспроизвести это.

http://msdn.microsoft.com/en-us/library/Microsoft.TeamFoundation.VersionControl.Client.Workspace.aspx

Ниже показан мой сценарий на практике ..

$tfs = .\tfs-get-instance.ps1 -uri $uri 
$vcs = $tfs.TfsTeamProjectCollection.GetService([Microsoft.TeamFoundation.VersionControl.Client.VersionControlServer]) 
[psobject]$workspace = $vcs.GetWorkspace([System.Environment]::MachineName, [System.Environment]::UserName) 
$workspace.Map($sourceFolder, $localFolder) 
$result = $workspace.GetLocalItemForServerItem($sourceFolder); 

if ($result -ne "") 
{ 
    echo $result 
} 

ответ

1

Вы должны быть в состоянии использовать Workspace.Get Method (String[], VersionSpec, RecursionType, GetOptions), чтобы получить то, что вы хотите.

С другой стороны, если вы не обязательно хотят сделать это с помощью объектов .NET, вы могли бы позволить tf.exe делать реальную работу, как в следующем:

& $TfExePath workfold /map "$codePath" "$LocalFolderPath" /collection:"$tfCollection" /workspace:$workspaceName 
& $TfExePath get "$codePath" /version:$ChangeSet /force /overwrite /all /recursive $workspaceName 

На другой Если у вас установлен TF PowerTools, у вас также должны быть командлеты PowerShell для работы с TFS. Я никогда не использовал их, но я предполагаю, что вы сможете использовать их вместо использования tf.exe, если хотите. Я, вероятно, поеду для командлетов PowerShell в электроинструменты, если они восполнят ваши потребности.

+0

Я пытаюсь избежать использования TFExePath :) Workspace.Get() получает все в рабочей области. Обходной путь, который я придумал, заключается в создании нового временного рабочего пространства, его сопоставлении, затем его удалении. –

+0

Метод Get, связанный выше, не обязательно получит всю рабочую область. Первый параметр позволяет предоставить массив путей к элементам ($ codePath). Поэтому попробуйте использовать этот метод и сделайте что-то похожее на '$ workspace.Get (@ ('$/Path/That/I/Want/To/Get'), $ versionSpec, [Microsoft.TeamFoundation.VersionControl.Client.RecursionType]: : Полный, [Microsoft.TeamFoundation.VersionControl.Client.GetOptions] :: Overwrite) '(документация о том, что вы можете передать как $ versionSpec по адресу http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation. versioncontrol.client.versionspec.aspx). Дайте мне знать, как это происходит. –

Смежные вопросы