如何从Mercurial克隆中删除工作副本?

61

使用Mercurial克隆存储库时,您可以传递-U / --noupdate标志以创建没有工作副本的克隆。如果我在克隆时忘记传递此标志,是否可以删除工作副本?如果可以,如何操作?

这在概念上类似于此git问题,但适用于Mercurial。

2个回答

94

Mercurial维基上的文档对裸库(bare repositories)有如下说明:

"虽然这只是一个小问题,但Mercurial显然可以处理裸库,也就是没有工作副本的库。在Git中,你需要配置选项才能实现这一点;而在Hg中,你只需要检出空版本(null revision),像这样:"

hg update null

空值版本类似于在执行hg init后的空状态。它是版本0的父级(以及所有非合并版本的第二个父级),通过更新到它,您可以再次获得一个空的工作副本。

链接可能看起来有些讽刺:


4
啊哈!这就行了。RTFM,或者在这种情况下是RTFW。我读过“hg clone --help”,它暗示了这个解决方案...但只有你知道答案才行。谢谢! - richq
@rq:这种情况发生在我们所有人身上。我每周都有许多RTFM的时刻。 - pyfunc
2
如果还有剩余的文件,“hg purge”可能有助于将它们清除掉。 - gbmhunter
从TortoiseHg Workbench中,您可以通过“Repository”>“Update”并指定“null”作为“Update to:”来完成此操作。 - erdomke

-24
rm -rf *

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

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

hg revert --all

13
完全不正确。这是我尝试过的方法,并将整个工作副本标记为“!”删除,这可能会影响推送和拉取。 - richq
@rq - 或许你应该在最初的问题中说清楚这一点。就我个人而言,我不知道为什么你想要复制一个没有工作目录的存储库。连续进行大量的推送和拉取操作而不尝试在两者之间构建是麻烦的源头。 - Anon
11
一个用途是在网络驱动器上创建本地克隆的备份副本,使用自动推送到备份的提交钩子。 - Niall C.
3
从网络服务器提供Mercurial仓库时,完全没有必要拥有本地工作副本。 - ebyrob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接