62 ctx2 = repo[node2] |
62 ctx2 = repo[node2] |
63 if root: |
63 if root: |
64 relroot = pathutil.canonpath(repo.root, repo.getcwd(), root) |
64 relroot = pathutil.canonpath(repo.root, repo.getcwd(), root) |
65 else: |
65 else: |
66 relroot = '' |
66 relroot = '' |
|
67 copysourcematch = None |
67 if relroot != '': |
68 if relroot != '': |
68 # XXX relative roots currently don't work if the root is within a |
69 # XXX relative roots currently don't work if the root is within a |
69 # subrepo |
70 # subrepo |
70 uirelroot = match.uipath(relroot) |
71 uirelroot = match.uipath(relroot) |
71 relroot += '/' |
72 relroot += '/' |
74 ui.warn(_('warning: %s not inside relative root %s\n') % ( |
75 ui.warn(_('warning: %s not inside relative root %s\n') % ( |
75 match.uipath(matchroot), uirelroot)) |
76 match.uipath(matchroot), uirelroot)) |
76 |
77 |
77 relrootmatch = scmutil.match(ctx2, pats=[relroot], default='path') |
78 relrootmatch = scmutil.match(ctx2, pats=[relroot], default='path') |
78 match = matchmod.intersectmatchers(match, relrootmatch) |
79 match = matchmod.intersectmatchers(match, relrootmatch) |
|
80 copysourcematch = relrootmatch |
79 |
81 |
80 if stat: |
82 if stat: |
81 diffopts = diffopts.copy(context=0, noprefix=False) |
83 diffopts = diffopts.copy(context=0, noprefix=False) |
82 width = 80 |
84 width = 80 |
83 if not ui.plain(): |
85 if not ui.plain(): |
84 width = ui.termwidth() - graphwidth |
86 width = ui.termwidth() - graphwidth |
85 |
87 |
86 chunks = ctx2.diff(ctx1, match, changes, opts=diffopts, prefix=prefix, |
88 chunks = ctx2.diff(ctx1, match, changes, opts=diffopts, prefix=prefix, |
87 relroot=relroot, hunksfilterfn=hunksfilterfn) |
89 relroot=relroot, copysourcematch=copysourcematch, |
|
90 hunksfilterfn=hunksfilterfn) |
88 |
91 |
89 if fp is not None or ui.canwritewithoutlabels(): |
92 if fp is not None or ui.canwritewithoutlabels(): |
90 out = fp or ui |
93 out = fp or ui |
91 if stat: |
94 if stat: |
92 chunks = [patch.diffstat(util.iterlines(chunks), width=width)] |
95 chunks = [patch.diffstat(util.iterlines(chunks), width=width)] |