2011-04-11 George Guo <George.Guo@nokia.com>
[WebKit-https.git] / Tools / Scripts / prepare-ChangeLog
index 2fc03d2a9077408ceda13312653b32b81ad19605..e6fef408a7ba0d4fba9f20526c2eea59feb5f9b6 100755 (executable)
@@ -99,6 +99,7 @@ sub decodeEntities($);
 # Project time zone for Cupertino, CA, US
 my $changeLogTimeZone = "PST8PDT";
 
+my $bugDescription;
 my $bugNumber;
 my $name;
 my $emailAddress;
@@ -114,10 +115,11 @@ my $updateChangeLogs = 1;
 my $parseOptionsResult =
     GetOptions("diff|d!" => \$spewDiff,
                "bug|b:i" => \$bugNumber,
+               "description:s" => \$bugDescription,
                "name:s" => \$name,
                "email:s" => \$emailAddress,
                "merge-base:s" => \$mergeBase,
-               "git-commit:s" => \$gitCommit,
+               "git-commit|g:s" => \$gitCommit,
                "git-index" => \$gitIndex,
                "git-reviewer:s" => \$gitReviewer,
                "help|h!" => \$showHelp,
@@ -125,18 +127,20 @@ my $parseOptionsResult =
                "write!" => \$writeChangeLogs,
                "update!" => \$updateChangeLogs);
 if (!$parseOptionsResult || $showHelp) {
-    print STDERR basename($0) . " [-b|--bug=<bugid>] [-d|--diff] [-h|--help] [-o|--open] [--git-commit=<committish>] [--git-reviewer=<name>] [svndir1 [svndir2 ...]]\n";
-    print STDERR "  -b|--bug       Fill in the ChangeLog bug information from the given bug.\n";
-    print STDERR "  -d|--diff      Spew diff to stdout when running\n";
-    print STDERR "  --merge-base   Populate the ChangeLogs with the diff to this branch\n";
-    print STDERR "  --git-commit   Populate the ChangeLogs from the specified git commit\n";
-    print STDERR "  --git-index    Populate the ChangeLogs from the git index only\n";
-    print STDERR "  --git-reviewer When populating the ChangeLogs from a git commit claim that the spcified name reviewed the change.\n";
-    print STDERR "                 This option is useful when the git commit lacks a Signed-Off-By: line\n";
-    print STDERR "  -h|--help      Show this help message\n";
-    print STDERR "  -o|--open      Open ChangeLogs in an editor when done\n";
-    print STDERR "  --[no-]update  Update ChangeLogs from svn before adding entry (default: update)\n";
-    print STDERR "  --[no-]write   Write ChangeLogs to disk (otherwise send new entries to stdout) (default: write)\n";
+    print STDERR basename($0) . " [-b|--bug=<bugid>] [-d|--diff] [-h|--help] [-o|--open] [-g|--git-commit=<committish>] [--git-reviewer=<name>] [svndir1 [svndir2 ...]]\n";
+    print STDERR "  -b|--bug        Fill in the ChangeLog bug information from the given bug.\n";
+    print STDERR "  --description   One-line description that matches the bug title.\n";
+    print STDERR "  -d|--diff       Spew diff to stdout when running\n";
+    print STDERR "  --merge-base    Populate the ChangeLogs with the diff to this branch\n";
+    print STDERR "  -g|--git-commit Populate the ChangeLogs from the specified git commit\n";
+    print STDERR "  --git-index     Populate the ChangeLogs from the git index only\n";
+    print STDERR "  --git-reviewer  When populating the ChangeLogs from a git commit claim that the spcified name reviewed the change.\n";
+    print STDERR "                  This option is useful when the git commit lacks a Signed-Off-By: line\n";
+    print STDERR "  -h|--help       Show this help message\n";
+    print STDERR "  -o|--open       Open ChangeLogs in an editor when done\n";
+    print STDERR "  --[no-]update   Update ChangeLogs from svn before adding entry (default: update)\n";
+    print STDERR "  --[no-]write    Write ChangeLogs to disk (otherwise send new entries to stdout) (default: write)\n";
+    print STDERR "  --email=        Specify the email address to be used in the patch\n";
     exit 1;
 }
 
@@ -254,10 +258,12 @@ $emailAddress = changeLogEmailAddressFromArgs($emailAddress);
 
 print STDERR "  Change author: $name <$emailAddress>.\n";
 
-my $bugDescription;
 my $bugURL;
 if ($bugNumber) {
     $bugURL = "https://bugs.webkit.org/show_bug.cgi?id=$bugNumber";
+}
+
+if ($bugNumber && !$bugDescription) {
     my $bugXMLURL = "$bugURL&ctype=xml";
     # Perl has no built in XML processing, so we'll fetch and parse with curl and grep
     # Pass --insecure because some cygwin installs have no certs we don't
@@ -319,7 +325,7 @@ foreach my $prefix (keys %files) {
         $sortKey = "-, just after top level";
     } elsif ($prefixDir eq "WebBrowser") {
         $sortKey = lc "WebKit, WebBrowser after";
-    } elsif ($prefixDir eq "WebCore") {
+    } elsif ($prefixDir eq "Source/WebCore") {
         $sortKey = lc "WebFoundation, WebCore after";
     } elsif ($prefixDir eq "LayoutTests") {
         $sortKey = lc "~, LayoutTests last";