Show More
@@ -2322,9 +2322,11 b' def walkchangerevs(repo, match, opts, pr' | |||
|
2322 | 2322 | |
|
2323 | 2323 | return iterate() |
|
2324 | 2324 | |
|
2325 | def _makelogmatcher(repo, pats, opts): | |
|
2325 | def _makelogmatcher(repo, revs, pats, opts): | |
|
2326 | 2326 | """Build matcher and expanded patterns from log options |
|
2327 | 2327 | |
|
2328 | If --follow, revs are the revisions to follow from. | |
|
2329 | ||
|
2328 | 2330 | Returns (match, pats, slowpath) where |
|
2329 | 2331 | - match: a matcher built from the given pats and -I/-X opts |
|
2330 | 2332 | - pats: patterns used (globs are expanded on Windows) |
@@ -2339,8 +2341,17 b' def _makelogmatcher(repo, pats, opts):' | |||
|
2339 | 2341 | slowpath = match.anypats() or (not match.always() and opts.get('removed')) |
|
2340 | 2342 | if not slowpath: |
|
2341 | 2343 | follow = opts.get('follow') or opts.get('follow_first') |
|
2344 | startctxs = [] | |
|
2345 | if follow and opts.get('rev'): | |
|
2346 | startctxs = [repo[r] for r in revs] | |
|
2342 | 2347 | for f in match.files(): |
|
2343 |
if follow and |
|
|
2348 | if follow and startctxs: | |
|
2349 | # No idea if the path was a directory at that revision, so | |
|
2350 | # take the slow path. | |
|
2351 | if any(f not in c for c in startctxs): | |
|
2352 | slowpath = True | |
|
2353 | continue | |
|
2354 | elif follow and f not in wctx: | |
|
2344 | 2355 | # If the file exists, it may be a directory, so let it |
|
2345 | 2356 | # take the slow path. |
|
2346 | 2357 | if os.path.exists(repo.wjoin(f)): |
@@ -2518,17 +2529,13 b' def getlogrevs(repo, pats, opts):' | |||
|
2518 | 2529 | """ |
|
2519 | 2530 | follow = opts.get('follow') or opts.get('follow_first') |
|
2520 | 2531 | followfirst = opts.get('follow_first') |
|
2521 | if opts.get('rev'): | |
|
2522 | # TODO: do not mutate opts here | |
|
2523 | opts.pop('follow', None) | |
|
2524 | opts.pop('follow_first', None) | |
|
2525 | 2532 | limit = loglimit(opts) |
|
2526 | 2533 | revs = _logrevs(repo, opts) |
|
2527 | 2534 | if not revs: |
|
2528 | 2535 | return smartset.baseset(), None |
|
2529 | match, pats, slowpath = _makelogmatcher(repo, pats, opts) | |
|
2536 | match, pats, slowpath = _makelogmatcher(repo, revs, pats, opts) | |
|
2530 | 2537 | if follow: |
|
2531 |
if |
|
|
2538 | if slowpath or not pats: | |
|
2532 | 2539 | revs = dagop.revancestors(repo, revs, followfirst=followfirst) |
|
2533 | 2540 | else: |
|
2534 | 2541 | revs = _fileancestors(repo, revs, match, followfirst) |
@@ -95,7 +95,7 b' o (0) root' | |||
|
95 | 95 | > revs = cmdutil._logrevs(repo, opts) |
|
96 | 96 | > if not revs: |
|
97 | 97 | > return None |
|
98 | > match, pats, slowpath = cmdutil._makelogmatcher(repo, pats, opts) | |
|
98 | > match, pats, slowpath = cmdutil._makelogmatcher(repo, revs, pats, opts) | |
|
99 | 99 | > return cmdutil._makelogrevset(repo, match, pats, slowpath, opts)[0] |
|
100 | 100 | > |
|
101 | 101 | > def uisetup(ui): |
@@ -465,6 +465,104 b' log -vf dir/b' | |||
|
465 | 465 | 2 |
|
466 | 466 | 0 |
|
467 | 467 | |
|
468 | follow files from the specified revisions (issue4959) | |
|
469 | ||
|
470 | $ hg log -G -T '{rev} {files},{file_copies % " {source}->{name}"}\n' | |
|
471 | @ 4 dir/b e, dir/b->e | |
|
472 | | | |
|
473 | o 3 a b d g, a->b f->g | |
|
474 | | | |
|
475 | o 2 b dir/b f g, b->dir/b | |
|
476 | | | |
|
477 | o 1 b g, a->b f->g | |
|
478 | | | |
|
479 | o 0 a f, | |
|
480 | ||
|
481 | ||
|
482 | $ hg log -T '{rev}\n' -fr 4 e | |
|
483 | 4 | |
|
484 | 2 | |
|
485 | 1 | |
|
486 | 0 | |
|
487 | $ hg log -T '{rev}\n' -fr 2 g | |
|
488 | 2 | |
|
489 | 1 | |
|
490 | 0 | |
|
491 | $ hg log -T '{rev}\n' -fr '2+3' g | |
|
492 | 3 | |
|
493 | 2 | |
|
494 | 1 | |
|
495 | 0 | |
|
496 | ||
|
497 | follow files from the specified revisions with glob patterns (issue5053) | |
|
498 | (BROKEN: should follow copies from e@4) | |
|
499 | ||
|
500 | $ hg log -T '{rev}\n' -fr4 e -X '[abcdfg]' | |
|
501 | 4 | |
|
502 | 2 (false !) | |
|
503 | 1 (false !) | |
|
504 | 0 (false !) | |
|
505 | ||
|
506 | follow files from the specified revisions with missing patterns | |
|
507 | (BROKEN: should follow copies from e@4) | |
|
508 | ||
|
509 | $ hg log -T '{rev}\n' -fr4 e x | |
|
510 | 4 | |
|
511 | 2 (false !) | |
|
512 | 1 (false !) | |
|
513 | 0 (false !) | |
|
514 | ||
|
515 | follow files from the specified revisions across copies with -p/--patch | |
|
516 | ||
|
517 | $ hg log -T '== rev: {rev},{file_copies % " {source}->{name}"} ==\n' -fpr 4 e g | |
|
518 | == rev: 4, dir/b->e == | |
|
519 | diff -r 2ca5ba701980 -r 7e4639b4691b e | |
|
520 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
|
521 | +++ b/e Thu Jan 01 00:00:05 1970 +0000 | |
|
522 | @@ -0,0 +1,1 @@ | |
|
523 | +a | |
|
524 | ||
|
525 | == rev: 3, a->b f->g == | |
|
526 | diff -r f8954cd4dc1f -r 2ca5ba701980 g | |
|
527 | --- a/g Thu Jan 01 00:00:03 1970 +0000 | |
|
528 | +++ b/g Thu Jan 01 00:00:04 1970 +0000 | |
|
529 | @@ -1,2 +1,2 @@ | |
|
530 | f | |
|
531 | -g | |
|
532 | +f | |
|
533 | ||
|
534 | == rev: 2, b->dir/b == | |
|
535 | diff -r d89b0a12d229 -r f8954cd4dc1f dir/b | |
|
536 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
|
537 | +++ b/dir/b Thu Jan 01 00:00:03 1970 +0000 | |
|
538 | @@ -0,0 +1,1 @@ | |
|
539 | +a | |
|
540 | diff -r d89b0a12d229 -r f8954cd4dc1f f | |
|
541 | --- a/f Thu Jan 01 00:00:02 1970 +0000 | |
|
542 | +++ b/f Thu Jan 01 00:00:03 1970 +0000 | |
|
543 | @@ -1,1 +1,2 @@ | |
|
544 | f | |
|
545 | +f | |
|
546 | ||
|
547 | == rev: 1, a->b f->g == | |
|
548 | diff -r 9161b9aeaf16 -r d89b0a12d229 b | |
|
549 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
|
550 | +++ b/b Thu Jan 01 00:00:02 1970 +0000 | |
|
551 | @@ -0,0 +1,1 @@ | |
|
552 | +a | |
|
553 | ||
|
554 | == rev: 0, == | |
|
555 | diff -r 000000000000 -r 9161b9aeaf16 a | |
|
556 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
|
557 | +++ b/a Thu Jan 01 00:00:01 1970 +0000 | |
|
558 | @@ -0,0 +1,1 @@ | |
|
559 | +a | |
|
560 | diff -r 000000000000 -r 9161b9aeaf16 f | |
|
561 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 | |
|
562 | +++ b/f Thu Jan 01 00:00:01 1970 +0000 | |
|
563 | @@ -0,0 +1,1 @@ | |
|
564 | +f | |
|
565 | ||
|
468 | 566 | |
|
469 | 567 | log copies with --copies |
|
470 | 568 | |
@@ -1725,11 +1823,6 b' Also check when maxrev < lastrevfilelog' | |||
|
1725 | 1823 | date: Thu Jan 01 00:00:00 1970 +0000 |
|
1726 | 1824 | summary: add foo, related |
|
1727 | 1825 | |
|
1728 | changeset: 2:c4c64aedf0f7 | |
|
1729 | user: test | |
|
1730 | date: Thu Jan 01 00:00:00 1970 +0000 | |
|
1731 | summary: add unrelated old foo | |
|
1732 | ||
|
1733 | 1826 | $ cd .. |
|
1734 | 1827 | |
|
1735 | 1828 | Issue2383: hg log showing _less_ differences than hg diff |
General Comments 0
You need to be logged in to leave comments.
Login now