安全删除 TFS 分支项目
Posted
技术标签:
【中文标题】安全删除 TFS 分支项目【英文标题】:Safely delete a TFS branch project 【发布时间】:2011-01-21 10:07:36 【问题描述】:我目前正在为大量解决方案重新组织我们的 TFS 源代码控制,并且到目前为止我已经成功地做到了。
我现在遇到一个问题,我需要删除为旧结构分支的遗留“发布分支”TFS 项目,并且不再需要,因为我现在在新结构中托管发布分支。
这是移动所有内容后源代码管理现在的外观示例:
$/Source Project
/Trunk
/[Projects]
/Release
/[Projects]
$/Release Branch Project
/[Projects]
/[Other legacy stuff]
到目前为止,我发现的信息是:
tf delete /lock:checkout /recursive TestMain
删除一个分支。
TfsDeleteProject
删除项目
tf delete
似乎仅在我需要删除与主干在同一项目中的分支时才相关,而TfsDeleteProject
似乎不会删除 分支关联来自源项目(我希望我错了,见下文)。
有人可以告诉我上述是否可行,以及我应该以什么顺序执行它们,以成功删除 TFS $/Release Branch Project
同时还删除分支关联(从右键单击 $/Source Project
-> 属性 ->分支)?
【问题讨论】:
【参考方案1】:让我这样陈述事实:
在 TFS 源代码控制系统的上下文中,“删除”是一个纯粹的逻辑操作。您可以随时取消删除。随着时间的推移,您可以让多个已删除的项目占据相同的路径,甚至同时占据相同的路径。保留分支关系。 TFS “Destroy”是物理删除。为了保持数据库的完整性,这意味着所有实体关系也被删除:变更集历史、待处理的变更记录、搁置的版本、合并历史,还有——分支层次结构。此 Destroy 功能是在 TFS 2008 中引入的。 销毁是唯一允许更改合并历史表的操作(从中确定分支关系)。所有其他操作都严格只追加。 TfsDeleteProject 尽最大努力彻底删除项目的所有痕迹,主要目标是允许创建具有相同名称的全新项目。一些 TFS 子系统支持物理删除;有些,例如 WIT 字段元数据,仅支持逻辑删除,即使在 TFS 2008 及更高版本中也是如此。在源代码控制的情况下,TfsDeleteProject 在 2005 年调用“delete”,在 2008+ 年调用“destroy”。【讨论】:
【参考方案2】:在 TFS 中,您通常无法永久删除团队项目中的任何内容(TfsDeleteProject
会删除完整的团队项目,但尚不清楚源代码控制内容是否会真正被删除,因为团队项目只是源代码控制树)。
删除文件或整组文件只是另一个跟踪更改,回到历史记录仍然可以看到。
您可以使用权限使其对所有人都无法访问。或在“已过时”的团队项目下重命名。
编辑(我终于记得这个命令在哪里了):
还有另一个选项,来自命令行:tf destroy
:
从 Team Foundation 版本控制中销毁或永久删除版本控制的文件。
我希望这会删除分支记录以创建现已销毁的文件...但您可能需要检查。
【讨论】:
因此,如果我删除了发布分支团队项目,这会正确地将其与分支列表取消关联,还是会在其中保留参考?基本上我想“取消分支”。 感谢您的更新。似乎有风险:s 我想我会在执行此操作之前执行 TFS 备份,哈哈【参考方案3】:选择要取消分支的分支文件夹。然后
File > Source Control > Branching and Merging > Convert to Folder
.
【讨论】:
我没有这个选项。你用的是什么版本的 VS 和 TFS? 如果您已将文件夹转换为分支并希望将其转换回文件夹,这只是一个选项。必须使用“tf destroy”命令从命令行销毁分支(不是转换)。【参考方案4】:在VS2013
@Radhika 的回答下我找不到它
我确实在Team Explorer > Source Control Explorer >
鼠标右键下找到了它on project > Branching and Merging > Convert to folder
希望这可以节省您的时间。
编辑从@DdW的评论中复制:您需要在转换后执行Get Latest Version
,然后才能启用删除选项
【讨论】:
请注意,您需要在转换后执行Get Latest Version
,然后才能启用Delete
选项。【参考方案5】:
使用回滚删除分支
-
右键单击选择分支。
选择回滚到特定变更集。
输入1
set。 选择 1。
-
分支将被标记为删除。
-
签入更改,它将从源代码管理中删除。
【讨论】:
以上是关于安全删除 TFS 分支项目的主要内容,如果未能解决你的问题,请参考以下文章
TFS 获取分支 -> 回滚 -> 向后合并并希望删除所有更改