obliterate functionality?

Matt Mackall mpm at selenic.com
Tue Mar 18 09:46:39 CDT 2008

On Tue, 2008-03-18 at 06:51 -0700, cowwoc wrote:
> Peter Arrenbrecht wrote:
> > 
> > On Tue, Mar 18, 2008 at 6:21 AM, cowwoc <cowwoc at bbs.darktech.org> wrote:
> >>  How does one permanently remove a file in Mercurial (aka "obliterate")?
> >> CVS
> >>  had this, SVN does not and I'm wondering how Mercurial stacks up.
> > 
> > If you mean to remove it from the version history of a published repo
> > entirely, then you cannot (short of exporting and reimporting the
> > repo, and this would change revision hashes). Hg's philosophy is that
> > you cannot rewrite history.
> > 
> <sigh> Unfortunately, that is a poor assumption:
> http://blogs.quintor.nl/bbottema/2008/03/01/subversion-obliterate-the-forgotten-feature/

It's much more than an assumption in Mercurial's case. Mercurial is a
distributed system and thus, obliteration is generally not possible even
in theory. Think of Mercurial like a newspaper: if you publish the
Pentagon Papers one morning, you cannot simply quietly retract them the
next. At that point, it's no longer a technical issue.

> Subversion also lets you export and re-import but this is a cop-out in my
> view. This needs to be a lot faster (especially if the files are leaves in
> the repository tree) and more flexible to be usable. Imagine Apache having
> to take their repository offline for an entire day while they obliterate
> files, it's simply not an option.

Now imagine Apache having to hunt down every single user who pulled from
them around the world and coerce them into destroying their private copy
of the Apache history.

It is possible to remove stuff from an official repository, it's just
not easy. Pretending there's a simple single-command safety net is
unhelpful. It just encourages people to make mistakes.

Mathematics is the supreme nostalgia of our time.

More information about the Mercurial mailing list