0

我曾经hg forget <files>取消跟踪某些文件,而不会像使用hg rm <files>那样从我的文件系统中删除它们。我提交了更改并运行hg status将这些文件列为未跟踪? <files>的预期。然后我将变更集推送到我们的远程存储库,其他人拉取并更新,然后 mercurial 从他们的文件系统中删除了这些文件!

为什么 Mercurial 不将这些文件识别为hg forget在其他人的存储库副本中未被跟踪,就像它在更改起源的副本中所做的那样?

他们是在不从任何人的文件系统中删除文件的情况下取消跟踪文件的另一种方式吗?

4

1 回答 1

0

Git 和 Mercurial 在这里都有同样的问题:你有一些提交O(一个旧的),其中有一个文件F。现在你从O更新到新的提交N,它说“没有文件F ”。

版本控制系统应该做什么?嗯,这取决于为什么F被删除,不是吗?如果我们删除了F因为它以前使用过,但现在是无用的杂物,则应该删除它。

那么,为什么删除no-longer-used正确但保持accidentally-committed正确?VCS 应该如何知道这两者中的哪一个,因为它所能看到的只是提交O有两个no-longer-used and accidentally-committed,而提交N没有文件?

(据我所知,Git 和 Mercurial 都没有很好的答案。)

于 2016-08-20T02:08:39.087 回答