Mercurial > hg-stable
changeset 13343:69e69b131458
merge with stable
author | Martin Geisler <mg@lazybytes.net> |
---|---|
date | Fri, 04 Feb 2011 09:17:07 +0100 |
parents | 2dc7a2a96cfd (current diff) 02aa06a021a0 (diff) |
children | 6367459decf7 |
files | mercurial/commands.py mercurial/dirstate.py tests/test-subrepo-recursion.t |
diffstat | 3 files changed, 29 insertions(+), 21 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/commands.py Wed Feb 02 13:51:22 2011 +0100 +++ b/mercurial/commands.py Fri Feb 04 09:17:07 2011 +0100 @@ -204,26 +204,22 @@ def backout(ui, repo, node=None, rev=None, **opts): '''reverse effect of earlier changeset - The backout command merges the reverse effect of the reverted - changeset into the working directory. - - With the --merge option, it first commits the reverted changes - as a new changeset. This new changeset is a child of the reverted - changeset. - The --merge option remembers the parent of the working directory - before starting the backout, then merges the new head with that - changeset afterwards. - This will result in an explicit merge in the history. - - If you backout a changeset other than the original parent of the - working directory, the result of this merge is not committed, - as with a normal merge. Otherwise, no merge is needed and the - commit is automatic. - - Note that the default behavior (without --merge) has changed in - version 1.7. To restore the previous default behavior, use - :hg:`backout --merge` and then :hg:`update --clean .` to get rid of - the ongoing merge. + Prepare a new changeset with the effect of REV undone in the + current working directory. + + If REV is the parent of the working directory, then this changeset + is committed automatically. Otherwise, hg needs to merge the + changes and the merged result is left uncommitted. + + By default, the pending changeset will have one parent, + maintaining a linear history. With --merge, the pending changeset + will instead have two parents: the old parent of the working + directory and a child of REV that simply undoes REV. + + Before version 1.7, the default behavior was equivalent to + specifying --merge followed by :hg:`update --clean .` to cancel + the merge and leave the child of REV as a head to be merged + separately. See :hg:`help dates` for a list of formats valid for -d/--date.
--- a/mercurial/dirstate.py Wed Feb 02 13:51:22 2011 +0100 +++ b/mercurial/dirstate.py Fri Feb 04 09:17:07 2011 +0100 @@ -508,7 +508,7 @@ if files[i] < subpath: i += 1 continue - while files and files[i].startswith(subpath): + while i < len(files) and files[i].startswith(subpath): del files[i] j += 1
--- a/tests/test-subrepo-recursion.t Wed Feb 02 13:51:22 2011 +0100 +++ b/tests/test-subrepo-recursion.t Fri Feb 04 09:17:07 2011 +0100 @@ -413,3 +413,15 @@ $ rm -r foo $ hg status -S warning: error "unknown revision '65903cebad86f1a84bd4f1134f62fa7dcb7a1c98'" in subrepository "foo" + +Issue2619: IndexError: list index out of range on hg add with subrepos +The subrepo must sorts after the explicit filename. + + $ cd .. + $ hg init test + $ cd test + $ hg init x + $ echo "x = x" >> .hgsub + $ hg add .hgsub + $ touch a x/a + $ hg add a x/a