Make commit-log-editor work with git
authoraroben <aroben@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 19 Jul 2007 17:24:03 +0000 (17:24 +0000)
committeraroben <aroben@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 19 Jul 2007 17:24:03 +0000 (17:24 +0000)
        Reviewed by Sam.

        * Scripts/commit-log-editor: Use VCSUtils and accept a git-style
        commit message template. Also removed the unused $breakPoint variable.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@24449 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebKitTools/ChangeLog
WebKitTools/Scripts/commit-log-editor

index 7dab342c901c89fd3b47fa41500e2a4d8071d9f7..8c7188318e2fbeb43645a6985b4bc9b724207c15 100644 (file)
@@ -1,3 +1,12 @@
+2007-07-19  Adam Roben  <aroben@apple.com>
+
+        Make commit-log-editor work with git
+
+        Reviewed by Sam.
+
+        * Scripts/commit-log-editor: Use VCSUtils and accept a git-style
+        commit message template. Also removed the unused $breakPoint variable.
+
 2007-07-19  Adam Roben  <aroben@apple.com>
 
         Move generally-useful VCS code into a new VCSUtils.pm module
index 7144c6e8706833d24d4f1444a21cd1ca900a7ba7..b0c12a392ddfdd85272e7a9112c3e833181ad7ef 100755 (executable)
@@ -1,6 +1,6 @@
 #!/usr/bin/perl -w
 
-# Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+# Copyright (C) 2006, 2007 Apple Inc.  All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
 # modification, are permitted provided that the following conditions
@@ -31,6 +31,7 @@
 use strict;
 use FindBin;
 use lib $FindBin::Bin;
+use VCSUtils;
 use webkitdirs;
 
 my $log = $ARGV[0];
@@ -57,17 +58,31 @@ if (!$editor) {
     $editor = $ENV{EDITOR} || "/usr/bin/vi";
 }
 
-my $breakPoint = 0;
+my $inChangesToBeCommitted = !isGit();
 my @changeLogs = ();
 my $logContents = "";
+my $existingLog = 0;
 open LOG, $log or die;
 while (<LOG>) {
-    $breakPoint = /^--This line, and those below, will be ignored--$/ unless $breakPoint;
+    if (isGit()) {
+        if (/^# Changes to be committed:$/) {
+            $inChangesToBeCommitted = 1;
+        } elsif ($inChangesToBeCommitted && /^# \S/) {
+            $inChangesToBeCommitted = 0;
+        }
+    }
+
     $logContents .= $_;
-    push @changeLogs, $1 if /^M....(.*ChangeLog)$/ && !/-ChangeLog/;
+    $existingLog = isGit() && !/^#/ unless $existingLog;
+
+    push @changeLogs, makeFilePathRelative($1) if $inChangesToBeCommitted && (/^M....(.*ChangeLog)$/ || /^#\tmodified:   (.*ChangeLog)/) && !/-ChangeLog/;
 }
 close LOG;
 
+# Don't change anything if there's already a log message
+# (as can happen with git-commit --amend)
+exec $editor, @ARGV if $existingLog;
+
 my %changeLogSort;
 my %changeLogContents;
 for my $changeLog (@changeLogs) {