如何清理Mercurial存储库?

emu*_*rad 1 version-control mercurial

我需要从存储库中删除我的"uploads"文件夹及其所有历史记录,因为它只包含垃圾测试数据.

请帮忙.

bas*_*ero 8

您将需要使用mercurial附带的convert扩展.由于您要从历史记录中擦除目录,因此您必须完全过滤现有存储库,将其转换为新存储库.

假设以下组成了您的回购结构:

/
 src
 doc
 images
 upload
Run Code Online (Sandbox Code Playgroud)

使用以下内容创建一个简单的文本文件

exclude upload
Run Code Online (Sandbox Code Playgroud)

您可以使用此文件执行更多操作,但要轻松实现目标.要排除的路径是相对于存储库根目录

现在运行mercurial convert

hg convert --filemap path/to/the/textfile old-repo new-repo
Run Code Online (Sandbox Code Playgroud)

切换到新仓库的目录.请注意,mercurial创建了一个bare/null rev repo(除了.hg目录之外没有内容).运行以下命令以更新到最新的changset.请注意,上传目录已经消失!

cd path/to/new/repo
hg update
Run Code Online (Sandbox Code Playgroud)

警告:我不知道它如何处理命名分支或标记.你是独自一人.至少你没有修改原始回购.尽可能多地制作副本以使其正确.