想要用hgignore中的模式过滤器做一个水银克隆

问题描述

|| 随着时间的流逝,许多开发人员提交了文件,然后将其添加到.hgignore中。据我所知,没有办法从汞的历史中删除项目,这是可以的。但是我也听说,有一种方法可以进行克隆,我想使用convert插件来克隆/导出存储库,同时指定哪些文件包括在转换中。 我忍不住想,那里有人可以使用.hgignore文件中的模式执行导出/过滤/转换的脚本。 有没有人创造过这样的野兽?     

解决方法

        您可以通过.hgignore创建文件映射,如下所示:
hg clone -U yourrepo temprepo # create a temp repo with no files in working dir
cd tmprepo
hg revert --all # put files in working dir
hg forget **   # un-add the files
hg status --ignored --no-status | sed \'s/^/exclude /\' > ../filemap
这将为您提供一个文件映射,您可以将其传递到ѭ1中,以删除在您添加.hgignore时将被忽略的所有添加文件。 不过请务必理解,运行convert会创建一个与您先前的回购无关的全新回购。所有现有克隆都将无法与新克隆一起使用。通常不值得。     ,        hg convert确实是您要使用的东西。 您将要创建一个文件映射(仅是一个文本文件),它将列出您要包括,排除或重命名的所有内容: 包含子文件夹 排除子文件夹/超级子 等等... 阅读以下内容以获得更具体的示例: https://www.mercurial-scm.org/wiki/ConvertExtension#A--文件映射 创建此文件后,只需使用以下命令:
$ hg convert --filemap my_file_map /path/to/source/repo /path/to/dest/repo
源存储库将不会被修改,而目标存储库将被创建。我不想直接复制文档中已经说过的内容,因此这里是链接: 如何仅保留一个子目录(或在Mercurial存储库上运行): https://www.mercurial-scm.org/wiki/ConvertExtension#Converting_from_Mercurial