我正在使用VS2013 Update 4和TFS 2013 Update 4.在Source Control Explorer中,每当我将文件从一个文件夹移动到另一个文件夹时,我都可以看到文件的历史记录保存在新位置。但是,当我签入挂起的更改时,该历史记录已消失。当我尝试运行“tf move”命令时,会发生同样的事情。那么,如何在TFS中移动文件并保留文件的历史记录?
答案 0 :(得分:20)
正确地重命名文件时,“历史记录”不会过去"它与"旧名称"相关联。代替。以正确方式执行的重命名(作为重命名而不是作为删除+添加进行跟踪)具有向下钻取选项以查看"较旧的"病史:
当重命名在Source Control Explorer之外(或从旧版本的Source Control Explorer(例如VS 2008))或在Solution Explorer之外完成时,更改将被检测为两个单独的操作,一个删除和一个添加。您可以使用"待定更改"窗口将这些提升为重命名,以便保留历史记录:
在命令行上,只能使用" tf rename"并且" tf move"。使用标准" mv"和" ren"命令将无法保留历史记录。
下面是使用所有不同方法的另一个示例,并通过查看当前文件名的历史记录清楚地显示历史记录:
如评论中所述,历史记录存储在包含项目修订的团队项目中。在项目分支/移动时,您的历史记录将分布在这些项目中。如果删除团队项目,那么该项目中累积的所有历史记录都将丢失。
答案 1 :(得分:0)
我不认为jessehouwing修复适用于文件夹。实际上,如果您使用VS 2012+的源代码管理资源管理器,则文件夹的移动会保留文件历史记录(在VS中显示递归),但不会保留文件夹。文件夹历史不变。
解决此问题的方法:
答案 2 :(得分:0)
请找到我的main
经验
TFS中有main-rest
个分支。我已经在与main相同的层次结构级别上创建了main-rest
。然后,我尝试将tf move $/projectName/main-rest $/projectName/experimental/main-rest
移到另一个子文件夹(将实验分支从$根移到子文件夹。
我已经删除了本地文件夹映射并执行了
main-rest
该命令在输出中列出了分支中的所有文件。然后,我已经完成了更改。
看起来不错,但是 *没有分支文件夹的历史记录 * merge看不到要合并的变更集
在移动之前,有可能从main
合并到main-rest
分支。仍然可用,但是合并时没有更改集可供选择。
“仅合并所选变更集”选项中只有一个“移动”变更集。在experimental
移到master-rest
子文件夹后发生了这种情况。
我希望可以合并整个{{1}}分支(但现在不是测试的合适时机)
我使用了VS2017附带的tf.exe命令行实用程序(已修补了今天可用的最新更新)。源代码托管在云tfs(https://dev.azure.com)上
致谢