# HG changeset patch # User Matt Mackall # Date 1165632298 21600 # Node ID 7df171ea50cd9e3da3e37f431cc8e02eef015603 # Parent 925b1816c746f03f8ab8a5e1a38b700dcc92ef95 Fix log regression where log -p file showed diffs for other files diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py --- a/mercurial/cmdutil.py +++ b/mercurial/cmdutil.py @@ -314,7 +314,7 @@ class changeset_printer(object): def showpatch(self, node): if self.patch: prev = self.repo.changelog.parents(node)[0] - patch.diff(self.repo, prev, node, fp=self.ui) + patch.diff(self.repo, prev, node, match=self.patch, fp=self.ui) self.ui.write("\n") class changeset_templater(changeset_printer): @@ -510,7 +510,7 @@ class changeset_templater(changeset_prin except SyntaxError, inst: raise util.Abort(_('%s: %s') % (self.t.mapfile, inst.args[0])) -def show_changeset(ui, repo, opts, buffered=False): +def show_changeset(ui, repo, opts, buffered=False, matchfn=False): """show one changeset using template or regular display. Display format will be the first non-empty hit of: @@ -522,7 +522,12 @@ def show_changeset(ui, repo, opts, buffe regular display via changeset_printer() is done. """ # options - patch = opts.get('patch') + patch = False + if opts.get('patch'): + patch = lambda x: True + if matchfn: + patch = matchfn + br = None if opts.get('branches'): ui.warn(_("the --branches option is deprecated, " diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -1548,7 +1548,7 @@ def log(ui, repo, *pats, **opts): df = util.matchdate(opts["date"]) - displayer = cmdutil.show_changeset(ui, repo, opts, buffered=True) + displayer = cmdutil.show_changeset(ui, repo, opts, True, matchfn) for st, rev, fns in changeiter: if st == 'add': changenode = repo.changelog.node(rev) diff --git a/tests/test-log b/tests/test-log --- a/tests/test-log +++ b/tests/test-log @@ -14,6 +14,8 @@ hg mv b dir hg ci -mc -d '3 0' hg mv a b +echo a > d +hg add d hg ci -md -d '4 0' hg mv dir/b e @@ -39,6 +41,9 @@ echo foo > foo hg ci -Ame2 -d '6 0' hg log -vC --template '{rev} {file_copies%filecopy}\n' -r 5 +echo '% log -p d' +hg log -pv d + # log --follow tests hg init ../follow cd ../follow diff --git a/tests/test-log.out b/tests/test-log.out --- a/tests/test-log.out +++ b/tests/test-log.out @@ -7,13 +7,13 @@ summary: a % -f, directory abort: can only follow copies/renames for explicit file names % -f, but no args -changeset: 4:8c1c8408f737 +changeset: 4:b30c444c7c84 tag: tip user: test date: Thu Jan 01 00:00:05 1970 +0000 summary: e -changeset: 3:c4ba038c90ce +changeset: 3:16b60bf3f99a user: test date: Thu Jan 01 00:00:04 1970 +0000 summary: d @@ -43,7 +43,7 @@ a % many renames -changeset: 4:8c1c8408f737 +changeset: 4:b30c444c7c84 tag: tip user: test date: Thu Jan 01 00:00:05 1970 +0000 @@ -86,6 +86,21 @@ 0 1 files updated, 0 files merged, 1 files removed, 0 files unresolved adding foo 5 e (dir/b) +% log -p d +changeset: 3:16b60bf3f99a +user: test +date: Thu Jan 01 00:00:04 1970 +0000 +files: a b d +description: +d + + +diff -r 21fba396af4c -r 16b60bf3f99a d +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ b/d Thu Jan 01 00:00:04 1970 +0000 +@@ -0,0 +1,1 @@ ++a + adding base 1 files updated, 0 files merged, 0 files removed, 0 files unresolved adding b1