emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 62afb85: Improve generated ChangeLog for gitmerge.e


From: Glenn Morris
Subject: [Emacs-diffs] master 62afb85: Improve generated ChangeLog for gitmerge.el commits. (Bug#20717)
Date: Thu, 11 Jun 2015 01:14:06 +0000

branch: master
commit 62afb85efbaaa1e8f4c2015486e7453614027141
Author: Glenn Morris <address@hidden>
Commit: Glenn Morris <address@hidden>

    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.
---
 ChangeLog.2                   |   14 -------------
 admin/gitmerge.el             |    5 +++-
 build-aux/gitlog-to-changelog |   43 ++++++++++++++++++++++++++++++++++++++--
 3 files changed, 44 insertions(+), 18 deletions(-)

diff --git a/ChangeLog.2 b/ChangeLog.2
index 4d59b8f..ff9cbdf 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  <address@hidden>
-
-       Bump Emacs version to 24.5.50.
-
-2015-04-06  Nicolas Petton  <address@hidden>
-
-       * lisp/ChangeLog: Remove a duplicate
-
-2015-04-05  Nicolas Petton  <address@hidden>
-
-       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  <address@hidden>
 
        Make sure there's no explicit tag name
diff --git a/admin/gitmerge.el b/admin/gitmerge.el
index 70dff29..c8cf2dc 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 9abb693..0cab1bf 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 = <PIPE>)
@@ -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)
             {



reply via email to

[Prev in Thread] Current Thread [Next in Thread]