summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--IkiWiki/Rcs/git.pm4
-rw-r--r--debian/changelog5
-rw-r--r--doc/todo/git_recentchanges_should_not_show_merges.mdwn11
3 files changed, 17 insertions, 3 deletions
diff --git a/IkiWiki/Rcs/git.pm b/IkiWiki/Rcs/git.pm
index a9efbb092..68b573fb9 100644
--- a/IkiWiki/Rcs/git.pm
+++ b/IkiWiki/Rcs/git.pm
@@ -258,7 +258,7 @@ sub git_commit_info ($;$) { #{{{
$num ||= 1;
my @raw_lines = run_or_die('git', 'log', "--max-count=$num",
- '--pretty=raw', '--raw', '--abbrev=40', '--always', '-m',
+ '--pretty=raw', '--raw', '--abbrev=40', '--always', '-c',
'-r', $sha1, '--', '.');
my ($prefix) = run_or_die('git', 'rev-parse', '--show-prefix');
@@ -412,7 +412,7 @@ sub rcs_recentchanges ($) { #{{{
when => $when,
message => [@messages],
pages => [@pages],
- };
+ } if @pages;
last if @rets >= $num;
}
diff --git a/debian/changelog b/debian/changelog
index 14ace4193..8326de6ce 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -9,8 +9,11 @@ ikiwiki (2.12) UNRELEASED; urgency=low
stay the same for the duration of the function.
* Avoid using commands like git-diff and instead use "git diff".
In some configurations, only the main git command is in the path.
+ * Improve the RecentChanges display for git merges, by passing -c instead
+ of -m to git-log, and by skipping display of commits that change no
+ pages.
- -- Joey Hess <joeyh@debian.org> Wed, 31 Oct 2007 17:34:59 -0400
+ -- Joey Hess <joeyh@debian.org> Wed, 31 Oct 2007 18:30:54 -0400
ikiwiki (2.11) unstable; urgency=low
diff --git a/doc/todo/git_recentchanges_should_not_show_merges.mdwn b/doc/todo/git_recentchanges_should_not_show_merges.mdwn
index 22cf1c08f..e65efdc81 100644
--- a/doc/todo/git_recentchanges_should_not_show_merges.mdwn
+++ b/doc/todo/git_recentchanges_should_not_show_merges.mdwn
@@ -7,3 +7,14 @@ A merge in general is a commit with two parents, right? But such a merge
might be what gitweb calls a "simple merge", that is I think, just a
fast-forward. Or it could be a merge that includes manual conflict resolution,
and should be shown in recentchanges.
+
+Seems that the problem is that it's calling git-log with the -m option,
+which makes merges be listed with the diff from the perspective of each
+parent. I think it would be better to not use that (or possibly to use the
+-c option instead?). The -m makes it show the merge from the POV of
+each of the parents. If the -m is left off, none of the changes in the
+merge are shown, even if it includes changes not in any of the parents
+(manual conflict resolution). With -c, it seems to show only the unique
+changes introduced by the merge.
+
+[[done]], using -c, hope that was the right choice --[[Joey]]