【问题标题】:How can I remove the working copy from a Mercurial clone?如何从 Mercurial 克隆中删除工作副本?
【发布时间】:2011-05-08 16:58:30
【问题描述】:

使用 mercurial 克隆存储库时,您可以传递 -U/--noupdate 标志来创建没有工作副本的克隆。如果我在克隆时忘记传递此标志,我可以删除工作副本吗?如果有,怎么做?

这在概念上类似于 this git question,但用于 mercurial。

【问题讨论】:

    标签: mercurial repository clone working-copy bare


    【解决方案1】:

    Mercurial wiki 上的文档对裸存储库进行了以下说明:

    "虽然这是一个小问题,但 Mercurial 显然可以处理 裸仓库;也就是说,没有工作副本的存储库。在 Git 中 你需要一个配置选项,而在 Hg 你只需要 检查空修订,如下所示:"

    hg update null
    

    null 版本类似于您刚刚完成hg init 时的空状态。它是修订版 0 的父版本(以及所有非合并修订版的第二个父版本),通过更新回它,您将再次获得一个空的工作副本。

    链接可能看起来很讽刺:

    【讨论】:

    • 啊哈!这就是诀窍。实时调频。或者在这种情况下是 RTFW。我读过“hg clone --help”,它确实暗示了这个解决方案......但前提是你知道答案。谢谢!
    • @rq:这发生在我们所有人身上。我每周都有很多 RTFM 时刻。
    • 如果还有剩余的文件,hg purge 可能有助于摆脱它们。
    • 在 TortoiseHg Workbench 中,您可以通过 Repository > Update 并将 null 指定为 Update to: 来完成此操作
    【解决方案2】:
    rm -rf *
    

    这将删除所有“可见”文件(在 *nix 下)。由于 Mercurial 存储库存储在“隐藏”文件.hg 中,因此不会被触及。不幸的是,您自己的任何隐藏文件也不会,例如.hgignore

    要恢复工作副本,我确信有一个 hg update 标志可以工作,但这也可以:

    hg revert --all
    

    【讨论】:

    • -1 完全不对。这是我尝试过的,并将整个工作副本标记为“!”已删除,这可能会使推送和拉动变得混乱。
    • @rq - 也许你应该在你原来的问题中这么说。就个人而言,我不知道为什么要复制没有工作目录的存储库。运行大量的推拉而不试图在两者之间进行构建是麻烦的秘诀。
    • 一种用途是在网络驱动器上创建本地克隆的备份副本,使用自动推送到备份的提交挂钩。
    • 绝对没有理由拥有本地工作副本,例如,在从 Web 服务器提供 mercurial 存储库时。
    猜你喜欢
    • 2013-05-16
    • 2016-03-17
    • 1970-01-01
    • 1970-01-01
    • 2011-08-12
    • 2018-01-28
    • 2011-06-12
    • 2015-12-31
    • 2020-08-08
    相关资源
    最近更新 更多