From: Glenn Morris Date: Thu, 11 Jun 2015 01:13:51 +0000 (-0400) Subject: Improve generated ChangeLog for gitmerge.el commits. (Bug#20717) X-Git-Tag: emacs-25.0.90~1804 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=62afb85efbaaa1e8f4c2015486e7453614027141;p=emacs.git Improve generated ChangeLog for gitmerge.el commits. (Bug#20717) * build-aux/gitlog-to-changelog: Handle gitmerge.el skipped commits. * admin/gitmerge.el (gitmerge-commit-message): Exclude "skipped" messages from ChangeLog once again. ; * ChangLog.2: Related fixes. --- diff --git a/ChangeLog.2 b/ChangeLog.2 index 4d59b8f2f0f..ff9cbdf7dc9 100644 --- a/ChangeLog.2 +++ b/ChangeLog.2 @@ -676,20 +676,6 @@ * test/automated/map-test.el: New file. * lisp/emacs-lisp/map.el: New file. -2015-04-11 Ulrich Müller - - Bump Emacs version to 24.5.50. - -2015-04-06 Nicolas Petton - - * lisp/ChangeLog: Remove a duplicate - -2015-04-05 Nicolas Petton - - lisp/ldefs-boot.el: Update for the 24.5 release - - Update the 24.5 release date in all ChangeLog files - 2015-05-30 Dmitry Gutov Make sure there's no explicit tag name diff --git a/admin/gitmerge.el b/admin/gitmerge.el index 70dff295cd1..c8cf2dcc565 100644 --- a/admin/gitmerge.el +++ b/admin/gitmerge.el @@ -314,7 +314,10 @@ Returns non-nil if conflicts remain." SKIP denotes whether those commits are actually skipped. If END is nil, only the single commit BEG is merged." (with-temp-buffer - (insert ; (if skip "; " "") ; I have no idea what to do for this + ;; We do not insert "; " for non-skipped messages, + ;; because the date of those entries is helpful in figuring out + ;; when things got merged, since git does not track that. + (insert (if skip "; " "") "Merge from " branch "\n\n" (if skip (concat "The following commit" diff --git a/build-aux/gitlog-to-changelog b/build-aux/gitlog-to-changelog index 9abb693dabe..0cab1bf17cd 100755 --- a/build-aux/gitlog-to-changelog +++ b/build-aux/gitlog-to-changelog @@ -3,7 +3,7 @@ eval '(exit $?0)' && eval 'exec perl -wS "$0" ${1+"$@"}' if 0; # Convert git log output to ChangeLog format. -my $VERSION = '2015-05-19 01:37'; # UTC +my $VERSION = '2015-06-11 01:03'; # UTC # The definition above must lie within the first 8 lines in order # for the Emacs time-stamp write hook (at end) to update it. # If you change this file with Emacs, please let the write hook @@ -270,6 +270,7 @@ sub git_dir_option($) my $prev_multi_paragraph; my $prev_date_line = ''; my @prev_coauthors = (); + my @skipshas = (); while (1) { defined (my $in = ) @@ -290,6 +291,21 @@ sub git_dir_option($) $sha =~ /^[0-9a-fA-F]{40}$/ or die "$ME:$.: invalid SHA1: $sha\n"; + my $skipflag = 0; + if (@skipshas) + { + foreach(@skipshas) + { + if ($sha =~ /^$_/) + { + $skipflag = 1; + ## Perhaps only warn if a pattern matches more than once? + warn "$ME: warning: skipping $sha due to $_\n"; + last; + } + } + } + # If this commit's log requires any transformation, do it now. my $code = $amend_code->{$sha}; if (defined $code) @@ -348,9 +364,30 @@ sub git_dir_option($) while ($line[$#line] =~ /^\s*$/) { pop @line; } } + # Handle Emacs gitmerge.el "skipped" commits. + # Yes, this should be controlled by an option. So sue me. + if ( grep /^(; )?Merge from /, @line ) + { + my $found = 0; + foreach (@line) + { + if (grep /^The following commit.*skipped:$/, $_) + { + $found = 1; + ## Reset at each merge to reduce chance of false matches. + @skipshas = (); + next; + } + if ($found && $_ =~ /^([0-9a-fA-F]{7,}) [^ ]/) + { + push ( @skipshas, $1 ); + } + } + } + # Ignore commits that match the --ignore-matching pattern, if specified. - if (! (defined $ignore_matching - && @line && $line[0] =~ /$ignore_matching/)) + if (! ($skipflag || (defined $ignore_matching + && @line && $line[0] =~ /$ignore_matching/))) { if (defined $ignore_line && @line) {