Dealing with spam¶
In the case that some spam or inappropriate comment makes its way
through you interface, you can (sometimes) remove the offending commit
XYZ.
If the offending commit is the last commit¶
| arch | |
| bzr | bzr uncommit && bzr revert |
| darcs | darcs obliterate –last=1 |
| git | git reset –hard HEAD^ |
| hg | hg rollback && hg revert |
| mtn | mtn db kill_rev_locally $(mtn automate get_base_revision_id) |
If the offending commit is not the last commit¶
| arch | |
| bzr [1] | bzr rebase -r <XYZ+1>..-1 –onto before:XYZ . |
| darcs | darcs obliterate –matches ‘name XYZ’ |
| git | git rebase –onto XYZ~1 XYZ |
| hg [2] | |
| mtn [3] |
| [1] | Requires the `bzr-rebase plugin`_. Note, you have to
increment XYZ by hand for <XYZ+1>, because bzr does not
support after:XYZ. |
| [2] | From Mercurial, The Definitive Guide: “Mercurial also does not provide a way to make a file or changeset completely disappear from history, because there is no way to enforce its disappearance” |
| [3] | See Rebuilding ancestry in the Monotone documentation. |
Warnings about changing history¶
Note that all of these change the repo history , so only do this on your interface-specific repo before it interacts with any other repo. Otherwise, you’ll have to survive by cherry-picking only the good commits.