Show More
@@ -0,0 +1,18 b'' | |||
|
1 | #!/bin/sh | |
|
2 | # | |
|
3 | mkdir t | |
|
4 | cd t | |
|
5 | hg init | |
|
6 | echo 0 > a | |
|
7 | echo 0 > b | |
|
8 | hg ci -A -m m -d "0 0" | |
|
9 | hg rm a | |
|
10 | hg cat a | |
|
11 | sleep 1 # make sure mtime is changed | |
|
12 | echo 1 > b | |
|
13 | hg ci -m m -d "0 0" | |
|
14 | echo 2 > b | |
|
15 | hg cat -r 0 a | |
|
16 | hg cat -r 0 b | |
|
17 | hg cat -r 1 a | |
|
18 | hg cat -r 1 b |
@@ -42,16 +42,16 b' def matchpats(repo, pats=[], opts={}, he' | |||
|
42 | 42 | return util.cmdmatcher(repo.root, cwd, pats or ['.'], opts.get('include'), |
|
43 | 43 | opts.get('exclude'), head) + (cwd,) |
|
44 | 44 | |
|
45 | def makewalk(repo, pats, opts, head=''): | |
|
45 | def makewalk(repo, pats, opts, node=None, head=''): | |
|
46 | 46 | files, matchfn, anypats, cwd = matchpats(repo, pats, opts, head) |
|
47 | 47 | exact = dict(zip(files, files)) |
|
48 | 48 | def walk(): |
|
49 | for src, fn in repo.walk(files=files, match=matchfn): | |
|
49 | for src, fn in repo.walk(node=node, files=files, match=matchfn): | |
|
50 | 50 | yield src, fn, util.pathto(cwd, fn), fn in exact |
|
51 | 51 | return files, matchfn, walk() |
|
52 | 52 | |
|
53 | def walk(repo, pats, opts, head=''): | |
|
54 | files, matchfn, results = makewalk(repo, pats, opts, head) | |
|
53 | def walk(repo, pats, opts, node=None, head=''): | |
|
54 | files, matchfn, results = makewalk(repo, pats, opts, node, head) | |
|
55 | 55 | for r in results: |
|
56 | 56 | yield r |
|
57 | 57 | |
@@ -634,20 +634,14 b' def cat(ui, repo, file1, *pats, **opts):' | |||
|
634 | 634 | mf = {} |
|
635 | 635 | rev = opts['rev'] |
|
636 | 636 | if rev: |
|
637 |
|
|
|
638 | mf = repo.manifest.read(change[0]) | |
|
639 | for src, abs, rel, exact in walk(repo, (file1,) + pats, opts): | |
|
637 | node = repo.lookup(rev) | |
|
638 | else: | |
|
639 | node = repo.changelog.tip() | |
|
640 | change = repo.changelog.read(node) | |
|
641 | mf = repo.manifest.read(change[0]) | |
|
642 | for src, abs, rel, exact in walk(repo, (file1,) + pats, opts, node): | |
|
640 | 643 | r = repo.file(abs) |
|
641 | if rev: | |
|
642 | try: | |
|
643 | n = mf[abs] | |
|
644 | except (hg.RepoError, KeyError): | |
|
645 | try: | |
|
646 | n = r.lookup(rev) | |
|
647 | except KeyError, inst: | |
|
648 | raise util.Abort(_('cannot find file %s in rev %s'), rel, rev) | |
|
649 | else: | |
|
650 | n = r.tip() | |
|
644 | n = mf[abs] | |
|
651 | 645 | fp = make_file(repo, r, opts['output'], node=n, pathname=abs) |
|
652 | 646 | fp.write(r.read(n)) |
|
653 | 647 |
@@ -462,8 +462,14 b' class localrepository(object):' | |||
|
462 | 462 | |
|
463 | 463 | def walk(self, node=None, files=[], match=util.always): |
|
464 | 464 | if node: |
|
465 | fdict = dict.fromkeys(files) | |
|
465 | 466 | for fn in self.manifest.read(self.changelog.read(node)[0]): |
|
466 |
|
|
|
467 | fdict.pop(fn, None) | |
|
468 | if match(fn): | |
|
469 | yield 'm', fn | |
|
470 | for fn in fdict: | |
|
471 | self.ui.warn(_('%s: No such file in rev %s\n') % ( | |
|
472 | util.pathto(self.getcwd(), fn), short(node))) | |
|
467 | 473 | else: |
|
468 | 474 | for src, fn in self.dirstate.walk(files, match): |
|
469 | 475 | yield src, fn |
General Comments 0
You need to be logged in to leave comments.
Login now