如何从 Mercurial 克隆中删除工作副本?
Posted
技术标签:
【中文标题】如何从 Mercurial 克隆中删除工作副本?【英文标题】:How can I remove the working copy from a Mercurial clone? 【发布时间】:2011-05-08 16:58:30 【问题描述】:使用 mercurial 克隆存储库时,您可以传递 -U/--noupdate 标志来创建没有工作副本的克隆。如果我在克隆时忘记传递此标志,我可以删除工作副本吗?如果有,怎么做?
这在概念上类似于 this git question,但用于 mercurial。
【问题讨论】:
【参考方案1】:Mercurial wiki 上的文档对裸存储库进行了以下说明:
"虽然这是一个小问题,但 Mercurial 显然可以处理 裸仓库;也就是说,没有工作副本的存储库。在 Git 中 你需要一个配置选项,而在 Hg 你只需要 检查空修订,如下所示:"
hg update null
null 版本类似于您刚刚完成hg init
时的空状态。它是修订版 0 的父版本(以及所有非合并修订版的第二个父版本),通过更新回它,您将再次获得一个空的工作副本。
链接可能看起来很讽刺:
https://www.mercurial-scm.org/wiki/GitConcepts【讨论】:
啊哈!这就是诀窍。实时调频。或者在这种情况下是 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 存储库时。以上是关于如何从 Mercurial 克隆中删除工作副本?的主要内容,如果未能解决你的问题,请参考以下文章
Mercurial:我如何找出我的工作副本和另一个副本之间的区别