How can I remove the working copy from a Mercurial clone?

MercurialRepositoryCloneWorking CopyBare

Mercurial Problem Overview


When cloning a repository with mercurial you can pass the -U/--noupdate flag to create a clone with no working copy. Can I remove the working copy if I forget to pass this flag at clone time? And if so, how?

This is conceptually similar to this git question, but for mercurial.

Mercurial Solutions


Solution 1 - Mercurial

Documentation at Mercurial wiki says following about bare repositories:

> "Although this is a minor issue, Mercurial can obviously handle a > bare repository; that is, a repository without a working copy. In Git > you need a configuration option for that, whereas in Hg you only need > to check out the null revision, like this:"

> hg update null

The null revision is similar to the empty state you have when you have just done hg init. It is the parent of revision 0 (and the second parent of all non-merge revisions) and by updating back to it you again get an empty working copy.

The link may look ironic:

Solution 2 - Mercurial

rm -rf *

This removes all "visible" files (under *nix). Since the Mercurial repository is stored in the "hidden" file .hg, it won't be touched. Unfortunately, neither will any hidden files of your own, such as .hgignore.

To restore the working copy, I'm sure there's an hg update flag that works, but this will as well:

hg revert --all

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionrichqView Question on Stackoverflow
Solution 1 - MercurialpyfuncView Answer on Stackoverflow
Solution 2 - MercurialAnonView Answer on Stackoverflow