Mercurial:从所有变更集中删除文件

发布于 2024-09-15 10:41:49 字数 161 浏览 4 评论 0原文

我了解如何从历史记录中删除整个变更集,但不清楚如何删除子集。

例如,如何从现有变更集中删除所有 DLL 文件,同时保留源代码?

I understand how to remove an entire changeset from history but it's not clear how to remove a subset instead.

For example, how do I remove all DLL files from an existing changeset while leaving the source-code alone?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

吃→可爱长大的 2024-09-22 10:41:50

由于修订 ID(例如 a8d7641f...)基于变更集的哈希,因此实际上不可能从历史记录中删除变更集的子集。

但是,可以使用 转换 扩展名。您将把 Mercurial 存储库转换为 Mercurial 存储库,并使用文件映射通过添加排除来排除您不需要的文件。这将创建一个新的、不相关的存储库,这意味着人们将无法再从中提取任何克隆,并且必须从这个新存储库重新克隆。

Because the revision ids (e.g. a8d7641f...) are based on a hash of the changeset, it's not really possible to remove a subset of a changeset from history.

However, it is possible to create a new repo with a parallel history, except for a certain set of files, by using the Convert extension. You'll be converting a Mercurial repo to a Mercurial repo, using the filemap to exclude the files you don't want by adding excludes. This will create a new, unrelated repository, which means that any clones people have won't be able to pull from it any more, and will have to re-clone from this new repo.

诺曦 2024-09-22 10:41:50
  1. 确保你的所有队友都将他们的本地更改推送到了
    中央存储库(如果有)
  2. 备份存储库
  3. 创建包含以下内容的“map.txt”文件:
    # 该文件映射用于排除特定文件
    排除“subdir/filename1.ext”
    排除“子目录/文件名2.ext”
    排除“subdir2”
  4. 运行此命令:
    hg Convert --filemap map.txt c:/oldrepo c:/newrepo

    注意:即使在 Windows 上,您也必须在路径中使用“正斜杠”。

  5. 等待并保持耐心
  6. 现在您在 c:\newrepo 处有了一个新的存储库,但没有文件

PS。在“上层”存储库中,您必须删除所有变更集重新推送您的新存储库。

聚苯硫醚。我实际上写了一篇关于此的博客文章,其中包含更多详细信息(包括剥离Bitbucket 等方面的变化

  1. Make sure all your teammates have pushed their local changes to the
    central repo (if any)
  2. Backup your repository
  3. Create a "map.txt" file with the following content:
    # this filemap is used to exclude specific files
    exclude "subdir/filename1.ext"
    exclude "subdir/filename2.ext"
    exclude "subdir2"
  4. Run this command:
    hg convert --filemap map.txt c:/oldrepo c:/newrepo

    NOTE: You have to use "forward-slash" in paths, even on windows.

  5. Wait and be patient
  6. Now you have a new repo at c:\newrepo but without the files

PS. In the "upper" repo you have to remove all changesets and re-push your new repo.

PPS. I actually wrote a blog post about this that has more details (including stripping the changesest in Bitbucket etc.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文