diff -r de496752d936 -r 59e8bc22506e mercurial/commands.py --- a/mercurial/commands.py Fri Sep 30 15:11:19 2011 -0500 +++ b/mercurial/commands.py Fri Sep 30 21:58:54 2011 -0400 @@ -4612,7 +4612,8 @@ finally: wlock.release() -@command('rollback', dryrunopts) +@command('rollback', dryrunopts + + [('f', 'force', False, _('ignore safety measures'))]) def rollback(ui, repo, **opts): """roll back the last transaction (dangerous) @@ -4633,6 +4634,12 @@ - push (with this repository as the destination) - unbundle + It's possible to lose data with rollback: commit, update back to + an older changeset, and then rollback. The update removes the + changes you committed from the working directory, and rollback + removes them from history. To avoid data loss, you must pass + --force in this case. + This command is not intended for use on public repositories. Once changes are visible for pull by other users, rolling a transaction back locally is ineffective (someone else may already have pulled @@ -4642,7 +4649,8 @@ Returns 0 on success, 1 if no rollback data is available. """ - return repo.rollback(opts.get('dry_run')) + return repo.rollback(dryrun=opts.get('dry_run'), + force=opts.get('force')) @command('root', []) def root(ui, repo):