obliterate functionality?
Martin Geisler
mg at daimi.au.dk
Tue Mar 18 14:28:20 CDT 2008
cowwoc <cowwoc at bbs.darktech.org> writes:
Hello
> 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.
As others have told you, then this is not possible if other people have
already pulled from the repository -- they now have their own copy of
the data you want to delete, and there is nothing you can do to make
them delete it!
But if you have your own local repository (since Mercurial is
distributed there is no reason not to have a local clone) where you have
committed something stupid, then it is easy to change. You can remove
the top-most changeset with 'hg rollback', and you can remove/edit
changesets further back in history using the Mercurial Queues extension:
http://www.selenic.com/mercurial/wiki/index.cgi/MqExtension
If tip is revision 100, and you wish to edit revision 90, and there is a
linear history from 90-100, then this is what you do:
# Change permanent changesets into editable patches
hg qimport -r 90:100
# Make the desired patch the top patch
hg qpop 90.diff
# Edit files, remove the passwords, etc...
# Look at your changes against the original patch
hg diff
# Look at your changes against the previous revision
hg qdiff
# When satisfied, store the edits in the patch
hg qrefresh
# Apply all patches
hg qpush -a
# Change patches into changesets
hg qdelete -r qbase:qtip
If you run 'hg tip' before and after this session you will notice that
the changeset hash has changed -- this is a natural consequence of
changing history since the hash is computed based on the contents of
each revision and on the revisions before it.
So it is simple: if you have given people access to your confidential
data, well... then its out there and you cannot stop it. If you still
have control over the data, then it is easy to remove it from your
repository, even if you have committed more stuff on top of it.
--
Martin Geisler
VIFF (Virtual Ideal Functionality Framework) brings easy and efficient
SMPC (Secure Multi-Party Computation) to Python. See: http://viff.dk/.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 188 bytes
Desc: not available
Url : http://selenic.com/pipermail/mercurial/attachments/20080318/bd534ae0/attachment.pgp
More information about the Mercurial
mailing list