gpt4 book ai didi

c# - TF命令行工具: Compare local sourcecode files with shelved TFS files

转载 作者:太空狗 更新时间:2023-10-29 23:25:22 25 4
gpt4 key购买 nike

我的硬盘驱动器上有我的项目本地文件所在的文件夹的全名。现在我需要从TFS服务器上获取这个项目最新的对应文件。

我的目标是检索两个版本并进行比较(使用 C#)。

通过 Microsoft 的 TF 命令行工具获取这些文件的最佳方式是什么?

最佳答案

您尝试执行的操作可能已作为folderdiff 命令内置到tf.exe 中。这将向您显示本地源代码树与服务器上最新版本之间的差异。例如:

tf folderdiff C:\MyTFSWorkspace\ /recursive

此功能也存在于 Visual Studio 和 Eclipse 的 TFS 客户端中。只需浏览到源代码管理资源管理器中的路径并选择“与...比较”,也就是说,这肯定有一些原因可以在

如果这不是您想要的,我建议不要尝试编写 tf.exe 脚本,而是使用 TFS SDK 与直接上服务器。虽然使用 tf.exe(更新您的工作文件夹)获取最新版本很容易,但是将文件下载到用于比较的临时位置。

使用 TFS SDK 既强大又相当简单。您应该能够很容易地连接到服务器并下载临时文件。此代码片段未经测试,并假设您在 folderPath 有一个工作区映射,您希望将其与服务器上的最新版本进行比较。

/* Some temporary directory to download the latest versions to, for comparing. */
String tempDir = @"C:\Temp\TFSLatestVersion";

/* Load the workspace information from the local workspace cache */
WorkspaceInfo workspaceInfo = Workstation.Current.GetLocalWorkspaceInfo(folderPath);

/* Connect to the server */
TfsTeamProjectCollection projectCollection = new TfsTeamProjectCollection(WorkspaceInfo.ServerUri);
VersionControlServer vc = projectCollection.GetService<VersionControlServer>();

/* "Realize" the cached workspace - open the workspace based on the cached information */
Workspace workspace = vc.GetWorkspace(workspaceInfo);

/* Get the server path for the corresponding local items */
String folderServerPath = workspace.GetServerItemForLocalItem(folderPath);

/* Query all items that exist under the server path */
ItemSet items = vc.QueryItems(new ItemSpec(folderServerPath, RecursionType.Full),
VersionSpec.Latest,
DeletedState.NonDeleted,
ItemType.Any,
true);

foreach(Item item in items.Items)
{
/* Figure out the item path relative to the folder we're looking at */
String relativePath = item.ServerItem.Substring(folderServerPath.Length);

/* Append the relative path to our folder's local path */
String downloadPath = Path.Combine(folderPath, relativePath);

/* Create the directory if necessary */
String downloadParent = Directory.GetParent(downloadPath).FullName;
if(! Directory.Exists(downloadParent))
{
Directory.CreateDirectory(downloadParent);
}

/* Download the item to the local folder */
item.DownloadFile(downloadPath);
}

/* Launch your compare tool between folderPath and tempDir */

关于c# - TF命令行工具: Compare local sourcecode files with shelved TFS files,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9838764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com