【问题标题】:Will history be preserverd when doing a destroy in tfs?在 tfs 中进行销毁时会保留历史吗?
【发布时间】:2012-03-25 19:00:35
【问题描述】:

假设我有两个分支;主人和孩子。我对孩子进行了一些更改并将它们合并回主控。在子分支上进行销毁时,子分支中所做更改的历史记录会丢失还是合并回主分支?我必须指定/keephistory 参数吗?

【问题讨论】:

    标签: tfs


    【解决方案1】:

    无论您是否删除原始来源。 TFS 中的任何内容都不会被真正删除,只是置于“已删除状态”。

    查看此链接

    Will deleting a project in TFS remove the files, or will the history be preserved?

    【讨论】:

    • 我认为如果您执行常规删除,但如果您执行破坏,则文件将被永久删除。从您发布的链接中:“但是,您可以使用 tf.exe destroy 永久删除您的更改。”
    • 这与所写的不正确。 “删除”将保留历史中的实际内容和修订,但不会在最新版本中看到。如果某些内容已被删除,您可以稍后取消删除。但是,“destroy”将其标记为从数据库中完全删除。它不会立即删除,但有一个 TFS 作业可以找到所有这些内容并清理/删除定期销毁的内容。
    【解决方案2】:

    任何被“删除”的分支或项目都会保留在历史记录中。任何被破坏的分支或项目都将从数据库中删除,因此不在历史记录中。删除时没有 /keephistory 选项,因为所有删除都会保留历史记录。我没有亲自使用 /keephistory 和 destroy 命令,所以我不能给你推荐。只需阅读它的文档here 我猜想常规删除和使用 /keephistory 的破坏之间的区别在于破坏无法逆转。

    在您描述的情况下,我不建议删除分支,因为这是您关于谁改变了生活的历史。当您合并时,只有一个签入包含所有合并的更改,并且它与合并中的签入相关联。

    在 TFS 2010 之前,很难了解合并的历史,但如果您花时间弄清楚的话,这是可能的。在 TFS 2010 中,通过分支查看更改的流程要容易得多。

    如果我知道您想要销毁的原因,我可以更好地回答,但这里有几件事需要考虑:如果您正在销毁以帮助您减少磁盘空间 1) 分支不会花费太多,因为它们只会保持差异不是整个副本 2)如果您正在销毁以节省磁盘空间并且您使用 /keephistory 我猜它不会减少磁盘空间的使用。如果你是因为 OMG 代码是垃圾而破坏,并且没有人应该有机会遭受它的恐怖,那么你可能想多了。

    【讨论】:

    • BitOff 写的几乎是正确的。如果您大量修改文件的内容,则分支会显着增加磁盘使用率——在这种情况下,即使是 deltification 也无济于事。销毁文件内容,同时保留元数据、更改历史等是添加 /keephistory 的原因。如果你只是直接销毁分支的历史将会丢失。
    • 好的,但这确实是 TFS 的一大缺点。当我合并某些内容时,我也想合并更改。
    【解决方案3】:

    我实际上在 TFS 2013 中测试了 tf destroy /keephistory 选项。/keephistory 选项实际上只保留了查看历史记录和评论,但删除了文件的所有版本。如果您尝试比较版本,您将收到文件版本被破坏的错误。因此,如果您想保存 cmets 和谁更改了代码的历史,但真的不关心确切的更改是什么,您可以使用 /keephistory 来节省磁盘空间。如果您确实想查看和比较旧版本,则应将其保持为已删除状态,因为使用 /keephistory 选项进行销毁不会保留内容。如果代码无用或签入错误名称或其他内容,请在不使用 /keephistory 的情况下执行 tf destroy 以清除所有内容,包括查看历史记录和评论。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-07
      • 1970-01-01
      • 1970-01-01
      • 2014-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多