gpt4 book ai didi

version-control - 如何从 mercurial 存储库中安全地禁用/删除 largefiles 目录?

转载 作者:行者123 更新时间:2023-12-04 07:12:59 25 4
gpt4 key购买 nike

过去,我一直在使用 mercurial 中的 largefiles 扩展来保存数据以及我一直在处理的代码。我认为这是一个错误,我想删除“大文件”目录(8GB)。我们的网络用户目录限制为 10 GB,我需要空间。我已经很长时间没有使用任何大文件了。当他们永远离开时,我不会想念他们。

所以我的问题是

  • 我可以在不损坏 repo 的情况下删除 .hg 下的 largefiles 目录吗?
  • 如果我这样做了,即使丢失了一些大型数据文件,我是否能够检查出旧代码?
  • 我是否应该从该存储库的所有克隆中删除这些文件,以避免再次使用来自另一个克隆的大文件污染所有存储库?
  • 最佳答案

    将普通存储库转换为大文件的相同命令,lfconvert , 也可以用在其他方向:

    $ hg --config extensions.largefiles= help lfconvert
    hg lfconvert SOURCE DEST [FILE ...]

    convert a normal repository to a largefiles repository

    Convert repository SOURCE to a new repository DEST, identical to SOURCE
    except that certain files will be converted as largefiles [...]

    Use --to-normal to convert largefiles back to normal files; after this,
    the DEST repository can be used without largefiles at all.

    所以下面的命令可以解决问题:
    $ hg --config extensions.largefiles= lfconvert --to-normal <LARGEFILE_REPO> <PLAIN_REPO>

    您需要与您的团队协调,以便:
  • 每个人都将他们的最新更改推送到大文件主存储库
  • 永久禁用对主存储库的访问(以避免意外推送)
  • 每个人都删除 largefiles从他们的 $HOME/.hgrc 扩展
  • 删除 largefiles hgrc 的扩展名提供对主存储库的访问权限的用户(hgrc 的位置取决于主存储库是服务器、SSH 还是 HTTP)。这将使某人不可能不小心将大文件添加到新仓库的克隆中并推送它!
  • 将主仓库转换为普通仓库
  • 决定新主存储库的名称/路径更改(如果有)
  • 允许访问新的、普通的主存储库
  • 每个人都克隆新的普通 repo

  • 请注意 lfconvert仅在 largefiles 时可用扩展已启用。我的建议是,按照第 3 点,将其从 $HOME/.hgrc 中删除。并使用 --config extensions.largefiles= 在单个命令中启用它选项,如上例所示。

    另请注意,转换为普通 repo 将启用最近的 fsmonitor extension ,它使用内核 inotify 机制(或 MacOSX 上的等效机制)来显着加快某些操作,如 hg status .例如对于我拥有的一个巨大的存储库, hg status从 10 秒到 0.5 秒 :-)

    关于version-control - 如何从 mercurial 存储库中安全地禁用/删除 largefiles 目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14449707/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com