在 TFS 源代码管理中移动多个文件

Posted

技术标签:

【中文标题】在 TFS 源代码管理中移动多个文件【英文标题】:Moving multiple files in TFS Source Control 【发布时间】:2010-10-20 17:18:30 【问题描述】:

我使用的是 Team Foundation Server 2008 (SP 1),我需要将多个文件从一个文件夹移动到另一个文件夹(以保留文件历史记录)。除了 Team Explorer(带有 SP 1),我还安装了最新的 TFS Power Tools(2008 年 10 月)(用于 Windows Shell 集成)。

现在,问题是我似乎无法通过 shell 或源代码管理资源管理器窗口选择和移动多个文件。我可以移动单个文件(通过右键单击 +“移动”),也可以移动整个文件夹(相同的操作),但是当我选择多个文件(在一个文件夹中)时,“移动”上下文项是灰色/禁用的。

有谁知道这是否可能.. 如果没有.. 为什么不呢!?

谁能建议一个不太复杂的解决方法?

请在这里投票: https://connect.microsoft.com/VisualStudio/feedback/details/715041/support-moving-multiple-files-in-tfs-source-control-explorer 在这里 http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2271540-allow-to-move-more-than-one-file-at-once-in-tfs-so

【问题讨论】:

【参考方案1】:

使用 Visual Studio 命令行中的 tf.exe 工具 - 它可以处理通配符:

tf.exe move <olditem> <newitem>

例子:

tf.exe move "$/My Project/V*" "$/My Project/Archive"

[编辑] 如 cmets 所述:move 是重命名的别名。这两个命令都会移动历史记录。

【讨论】:

这个other answer 是这里更好的一个。 move 参数未记录且不会移动历史记录,而另一个答案的 rename 参数 记录在案并且还会移动历史记录。 作为记录,似乎在 TFS 2010 中,移动命令执行了重命名,从而移动了历史记录。 来自 TF.EXE 帮助:您可以使用重命名命令或别名移动,将文件或文件夹移动到新位置。所以 move 和 rename 是一回事。 另一件事,从映射路径运行它,使用 Visual Studio 的命令行。否则它会不知道工作空间并为您提供一种(无用的)方法来找出您拥有哪些工作空间(然后是什么??什么都没有...... - 所以从映射的目录运行它,你会没事的(为我) "当 $/X/Y/Z 分配有工作文件夹映射时,无法重命名。"为什么这么难?只是移动它,让我们处理后果。【参考方案2】:

使用 rename 而不是 move

tf.exe rename "$/PROJECT/SharedLibs/Log4Net/*.*" "$/PROJECT/SharedLibs/3rdParty/"
tf.exe rename "$/PROJECT/SharedLibs/ZipLib/*.*" "$/PROJECT/SharedLibs/3rdParty/"

查看帮助文档:TFS Command Line Reference

【讨论】:

上面的链接抛出了一个 HTTP500;万一它停止运行,这里是 MSDN 的 TFS 命令行参考:msdn.microsoft.com/en-us/library/z51z7zy0.aspx move 只是rename 的别名,所以使用哪个并不重要 我使用我的 Visual Studio Online 的 TFS 源代码控制,例如namgivu.visualstudio.com。并且通过调用tf workspaces 列出工作区没有我的存储库映射的条目。 “当 $/X/Y/Z 分配有工作文件夹映射时,无法重命名。”还;不再允许使用通配符 *.* "如果目标不是源代码管理中的文件夹,则不能将通配符指定为源。"我不知道那是什么意思。只需将其移至我指向的名称即可。【参考方案3】:

Holan Jan 编写了一个 Visual Studio 扩展,它为源代码管理资源管理器中的多个文件提供“移动”功能(即使用 GUI),这是一种享受,还支持最新版本。

对于 VS2019:https://marketplace.visualstudio.com/items?itemName=HolanJan.TFSSourceControlExplorerExtension-2019

对于 VS2017:https://marketplace.visualstudio.com/items?itemName=HolanJan.TFSSourceControlExplorerExtension-18397

对于 VS2015:https://marketplace.visualstudio.com/items?itemName=HolanJan.TFSSourceControlExplorerExtension-13343

对于 VS2013:https://marketplace.visualstudio.com/items?itemName=HolanJan.TFSSourceControlExplorerExtension-11508

对于 VS2012:https://marketplace.visualstudio.com/items?itemName=HolanJan.TFSSourceControlExplorerExtension-8896

在后台,它确实使用了上面提到的相同命令,但使用起来更友好一些。列出的每个版本都需要 RTM 版本的 Visual Studio。

【讨论】:

太棒了!这是唯一对我有用的东西,使用 VS2010:visualstudiogallery.msdn.microsoft.com/… 这个扩展太棒了——它在源代码管理浏览器中启用了一大堆附加功能,其中一次移动多个文件只是其中的一部分。我强烈推荐它。 这就是答案。谢谢!【参考方案4】:

将您要移动的所有文件粘贴到一个文件夹下,然后移动该文件夹。

【讨论】:

以上是关于在 TFS 源代码管理中移动多个文件的主要内容,如果未能解决你的问题,请参考以下文章

源代码管理工具——TFS

源代码管理工具——TFS

怎样使用vs2013开发工具中的源代码管理器TFS

TFS 发布管理

当我们在TFS中获得最新版本的排除文件时会发生什么?会更新吗?

TFS命令tf:undo(强制签入别人签出的文件)(转)