我使用hg forget <files>
来取消跟踪一些文件,而不会像使用hg rm <files>
那样从文件系统中删除它们。我提交了更改并运行hg status
,如预期的那样将这些文件列为未跟踪的? <files>
。然后我将变更集推送到我们的远程存储库,其他人拉出并更新,然后mercurial从他们的文件系统中删除这些文件!
为什么Mercurial不能将这些文件识别为在其他人的存储库副本上使用hg forget
未跟踪的文件,就像在更改产生的副本上一样?
是他们的另一种方法来解除跟踪文件,而不删除他们从任何人的文件系统?
Git和Mercurial在这里都有同样的问题:您有一些提交O(一个旧的),其中有一个文件F。现在你从O更新到new commit N,显示"没有文件F"。
版本控制系统应该做什么?嗯,这取决于为什么F被删除了,不是吗?如果我们删除了F,因为它以前使用过,但现在是无用的杂乱,它应该被删除
那么,为什么删除no-longer-used
是正确的,但保持accidentally-committed
也是正确的?如果VCS只看到commit O同时具有no-longer-used
和 accidentally-committed
,而commit N两个文件都没有,那么VCS应该如何知道这两个文件中的哪个是指的?
(据我所知,Git和Mercurial都没有很好的答案)