Mercurial > hg
changeset 23678:194d2f185008
subrepo: add full revert support for git subrepos
Previously, revert was only possible if the '--no-backup'
switch was specified.
Now, to support backups, we explicitly go over all modified
files in the subrepo.
author | Mathias De Maré <mathias.demare@gmail.com> |
---|---|
date | Sun, 28 Dec 2014 10:42:25 +0100 |
parents | 6bc1702e7333 |
children | dd1e73c4be13 |
files | mercurial/subrepo.py tests/test-subrepo-git.t |
diffstat | 2 files changed, 12 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/subrepo.py Tue Dec 23 19:54:48 2014 -0800 +++ b/mercurial/subrepo.py Sun Dec 28 10:42:25 2014 +0100 @@ -1658,10 +1658,14 @@ def revert(self, substate, *pats, **opts): self.ui.status(_('reverting subrepo %s\n') % substate[0]) if not opts.get('no_backup'): - self.ui.warn('%s: reverting %s subrepos without ' - '--no-backup is unsupported\n' - % (substate[0], substate[2])) - return [] + status = self.status(None) + names = status.modified + for name in names: + bakname = "%s.orig" % name + self.ui.note(_('saving current version of %s as %s\n') % + (name, bakname)) + util.rename(os.path.join(self._abspath, name), + os.path.join(self._abspath, bakname)) self.get(substate, overwrite=True) return []
--- a/tests/test-subrepo-git.t Tue Dec 23 19:54:48 2014 -0800 +++ b/tests/test-subrepo-git.t Sun Dec 28 10:42:25 2014 +0100 @@ -787,14 +787,13 @@ revert the subrepository $ hg revert --all reverting subrepo ../gitroot (glob) - ../gitroot: reverting git subrepos without --no-backup is unsupported (glob) $ hg status --subrepos - M s/foobar - A s/barfoo + ? s/barfoo + ? s/foobar.orig - $ hg revert --no-backup --all - reverting subrepo ../gitroot (glob) + $ mv s/foobar.orig s/foobar + $ hg revert --no-backup s reverting subrepo ../gitroot (glob)