我了解如何从历史记录中remove an entire changeset,但目前尚不清楚如何删除子集。
例如,如何在保留源代码的同时从现有变更集中删除所有DLL文件?
答案 0 :(得分:18)
由于修订版ID(例如a8d7641f ...)基于变更集的哈希值,因此无法从历史记录中删除变更集的子集。
但是,可以使用Convert扩展名创建具有并行历史记录的新仓库,但某些文件集除外。您将使用文件映射将Mercurial仓库转换为Mercurial仓库,以通过添加exclude
来排除您不想要的文件。这将创建一个新的,不相关的存储库,这意味着人们所拥有的任何克隆都将无法再从中获取,并且必须从这个新的存储库中重新克隆。
答案 1 :(得分:13)
# this filemap is used to exclude specific files exclude "subdir/filename1.ext" exclude "subdir/filename2.ext" exclude "subdir2"
hg convert --filemap map.txt c:/oldrepo c:/newrepo注意:您必须在路径中使用“正斜杠”,即使在窗口上也是如此。
c:\newrepo
处有一个新的回购,但没有文件PS。在“上层”回购中,您必须删除所有更改集并重新推送您的新回购。
PPS。我实际上写了一个关于这个的blog post,它有更多的细节(包括在Bitbucket中删除更改等。