Matt Harbison <matt_harbison@yahoo.com> [Wed, 15 Apr 2015 11:49:44 -0400] rev 24786
subrepo: calculate _relpath for hgsubrepo based on self instead of parent
Prior to 105758d1b37b, the subrelpath() (now _relpath) for hgsubrepo was
calculated by removing the root path of the outermost repo from the root path of
the subrepo. Since the root paths use platform specific separators, and the
relative path is printed by various commands, the output of these commands
require a glob (and check-code.py enforces this).
In an effort to be generic to all subrepos, 105758d1b37b started calculating
this path based on the parent repo, and then joining the subrepo path in .hgsub.
One of the tests in test-subrepo.t creates a subrepo inside a directory, so the
path being joined contained '/' instead of '\'. This made the test fail with a
'~' status, because the glob is unnecessary[1]. Removing them made the test
work, but then check-code complains. We can't just drop the check-code rule,
because sub-subrepos are still joined with '\'. Presumably the other subrepo
types have this issue as well, but there likely isn't a test with git or svn
repos inside a subdirectory.
This simply restores the exact _relpath value (and output) for hgsubrepos prior
to 105758d1b37b.
[1] http://www.selenic.com/pipermail/mercurial-devel/2015-April/068720.html
Matt Harbison <matt_harbison@yahoo.com> [Wed, 15 Apr 2015 11:23:26 -0400] rev 24785
subrepo: backout 93b0e0db7929 to restore reporelpath()
The path for hgsubrepo needs to be calculated slightly differently from other
subrepo types, but can reuse this. See the next patch for details.
Matt Mackall <mpm@selenic.com> [Thu, 16 Apr 2015 18:48:20 -0500] rev 24784
rollback: clear resolve state (issue4593)
Durham Goode <durham@fb.com> [Thu, 16 Apr 2015 11:31:48 -0700] rev 24783
diff: pass the diff matcher to the copy logic
This passes the existing diff matcher instance down to the copy logic so copy
tracing can be more efficient when possible and only trace copies for matching
files.
This only actually affects forwardcopies (i.e. Given A<-B<-C<-D, it works for
'hg diff -r B -r D foo.txt', but not for 'hg diff -r D -r B foo.txt') since
backward copies require walking all histories, and not just the individual
file's.
This reduces 'hg diff -r A -r B foo.txt' time from 15s to 1s when A and B have
80,000 files different.
Durham Goode <durham@fb.com> [Thu, 16 Apr 2015 11:29:30 -0700] rev 24782
copies: add matcher parameter to copy logic
This allows passing a matcher down the pathcopies() stack to _forwardcopies().
This will let us add logic in a later patch to avoid tracing copies when not
necessary (like when doing hg diff -r 1 -r 2 foo.txt).
Martin von Zweigbergk <martinvonz@google.com> [Sun, 12 Apr 2015 23:01:18 -0700] rev 24781
treemanifest: extract parse method from constructor
When we start to lazily load submanifests, it will be useful to be
able to create an treemanifest instance before manifest data gets
parsed into it. To prepare for this, extract the parsing code from
treemanifest's constructor to a separate method.
Martin von Zweigbergk <martinvonz@google.com> [Sun, 12 Apr 2015 14:37:55 -0700] rev 24780
manifest: duplicate call to addrevision()
When we start writing submanifests to their own revlogs, we will not
want to write a new revision for a directory if there were no changes
to it. To prepare for this, duplicate the call to addrevision() and
move them earlier where they can more easily be avoided.
Laurent Charignon <lcharignon@fb.com> [Thu, 16 Apr 2015 14:26:50 -0700] rev 24779
record: add message when starting record's curses interface
We are adding this log message to reduce a confusion when a command prints
something just before starting the curses interface.
Since the interactive mode is taking over the entire screen, starts with no
delay and does wait for a key press, the user believes that messages printed
before opening the interactive mode were actually printed after using
interactive mode, not before.
The fix adds the line "Starting interactive mode" helping the user separate
the messages that were printed before and after the start of the
interactive mode.
One particular example where this was a problem is the revert command where we
first print the list of changes to be considered for revert, then opens the
curses interface right away without letting the user see the messages.
The user then selects the changes, validates and then see the messages from
before opening the interactive mode and is confused.
Mathias De Maré <mathias.demare@gmail.com> [Tue, 14 Apr 2015 20:09:56 +0200] rev 24778
subrepo: add include/exclude support for diffing git subrepos
Previously, git subrepos were ignored if any type of path selection
was done.
This can be solved by using subrepo status and filtering matching files.
Yuya Nishihara <yuya@tcha.org> [Sun, 12 Apr 2015 19:00:31 +0900] rev 24777
revset: undocument wdir() until its command outputs get stable
wdir() implementation is still incomplete and shouldn't be advertised to
users. This patch will be backed out when
- template values such as {rev} and {node} are settled
- major commands and revsets work without crashing