<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>137982</bug_id>
          
          <creation_ts>2014-10-22 14:45:52 -0700</creation_ts>
          <short_desc>prepare-changelog does not read paths containing spaces properly</short_desc>
          <delta_ts>2019-11-15 11:17:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>204236</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Remy Demarest">rdemarest</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>bburg</cc>
    
    <cc>dbates</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>joepeck</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1043560</commentid>
    <comment_count>0</comment_count>
    <who name="Remy Demarest">rdemarest</who>
    <bug_when>2014-10-22 14:45:52 -0700</bug_when>
    <thetext>I run prepare-changelog on a repository that contains changes inside folders whose name contains spaces and I get multiple errors like this:
fatal: Path &apos;Safari/AppKit&apos; does not exist in &apos;origin/master&apos;
We have two folder named &quot;AppKit Extra Classes&quot; and &quot;AppKit Extra Methods&quot; for which this could apply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155568</commentid>
    <comment_count>1</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-01-14 13:53:49 -0800</bug_when>
    <thetext>Ugh, just ran into this too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155577</commentid>
    <comment_count>2</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-01-14 14:19:38 -0800</bug_when>
    <thetext>Relevant trace from using `perl -d:Trace prepare-Changelog`:

&gt;&gt; /Users/bburg/repos/webkit-tot/OpenSource/Tools/Scripts/prepare-ChangeLog:335:                 my @deleted_function_ranges = get_function_line_ranges(\*SOURCE, $file);
&gt;&gt; /Users/bburg/repos/webkit-tot/OpenSource/Tools/Scripts/prepare-ChangeLog:688:     my ($file_handle, $file_name) = @_;
&gt;&gt; /Users/bburg/repos/webkit-tot/OpenSource/Tools/Scripts/prepare-ChangeLog:692:     return get_function_line_ranges_for_cpp($file_handle, $file_name) if $file_name =~ /\.(c|cpp|m|mm|h)$/;
&gt;&gt; /Users/bburg/repos/webkit-tot/OpenSource/Tools/Scripts/prepare-ChangeLog:693:     return get_function_line_ranges_for_java($file_handle, $file_name) if $file_name =~ /\.java$/;
&gt;&gt; /Users/bburg/repos/webkit-tot/OpenSource/Tools/Scripts/prepare-ChangeLog:694:     return get_function_line_ranges_for_javascript($file_handle, $file_name) if $file_name =~ /\.js$/;
&gt;&gt; /Users/bburg/repos/webkit-tot/OpenSource/Tools/Scripts/prepare-ChangeLog:695:     return get_selector_line_ranges_for_css($file_handle, $file_name) if $file_name =~ /\.css$/;
&gt;&gt; /Users/bburg/repos/webkit-tot/OpenSource/Tools/Scripts/prepare-ChangeLog:696:     return get_function_line_ranges_for_perl($file_handle, $file_name) if $file_name =~ /\.p[lm]$/;
&gt;&gt; /Users/bburg/repos/webkit-tot/OpenSource/Tools/Scripts/prepare-ChangeLog:697:     return get_function_line_ranges_for_python($file_handle, $file_name) if $file_name =~ /\.py$/ or $file_name =~ /master\.cfg$/;
&gt;&gt; /Users/bburg/repos/webkit-tot/OpenSource/Tools/Scripts/prepare-ChangeLog:698:     return get_function_line_ranges_for_swift($file_handle, $file_name) if $file_name =~ /\.swift$/;
&gt;&gt; /Users/bburg/repos/webkit-tot/OpenSource/Tools/Scripts/prepare-ChangeLog:702:     my $first_line = &lt;$file_handle&gt;;
fatal: Path &apos;Safari.xcworkspace/xcshareddata/xcschemes/Only&apos; does not exist in &apos;HEAD&apos;
&gt;&gt; /Users/bburg/repos/webkit-tot/OpenSource/Tools/Scripts/prepare-ChangeLog:703:     seek($file_handle, 0, 0);
&gt;&gt; /Users/bburg/repos/webkit-tot/OpenSource/Tools/Scripts/prepare-ChangeLog:705:     return () unless $first_line =~ m|^#!(?:/usr/bin/env\s+)?(\S+)|;
Use of uninitialized value $first_line in pattern match (m//) at /Users/bburg/repos/webkit-tot/OpenSource/Tools/Scripts/prepare-ChangeLog line 705.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155601</commentid>
    <comment_count>3</comment_count>
      <attachid>269012</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-01-14 15:01:32 -0800</bug_when>
    <thetext>Created attachment 269012
Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155603</commentid>
    <comment_count>4</comment_count>
      <attachid>269012</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-01-14 15:03:21 -0800</bug_when>
    <thetext>Comment on attachment 269012
Proposed Fix

View in context: https://bugs.webkit.org/attachment.cgi?id=269012&amp;action=review

r=me

&gt; Tools/Scripts/prepare-ChangeLog:319
&gt; +        $file =~ s/ /\\ /;

I think this needs the trailing /g in order to change all occurrences.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155605</commentid>
    <comment_count>5</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-01-14 15:07:58 -0800</bug_when>
    <thetext>Committed r195080: &lt;http://trac.webkit.org/changeset/195080&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590559</commentid>
    <comment_count>6</comment_count>
      <attachid>269012</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2019-11-15 11:14:51 -0800</bug_when>
    <thetext>Comment on attachment 269012
Proposed Fix

View in context: https://bugs.webkit.org/attachment.cgi?id=269012&amp;action=review

&gt;&gt; Tools/Scripts/prepare-ChangeLog:319
&gt;&gt; +        $file =~ s/ /\\ /;
&gt; 
&gt; I think this needs the trailing /g in order to change all occurrences.

This change, including the chomp(), is not necessary. The actual fix for this bug was below with using the open() call that takes a mode. In fact, this change breaks function list generation for file paths that have a space in them because the code above ^^^ built up a dictionaries of line ranges keyed off the **unescaped** filename. However, after this substitution the code below will query these dictionaries for the **escaped** filename and hence **never** find a match.

&gt; Tools/Scripts/prepare-ChangeLog:323
&gt; +            open(SOURCE, &quot;&lt;&quot;, $file) or next;

This is the actual fix!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269012</attachid>
            <date>2016-01-14 15:01:32 -0800</date>
            <delta_ts>2016-01-14 15:03:21 -0800</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-137982-20160114150101.patch</filename>
            <type>text/plain</type>
            <size>1855</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0OTAwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWYzYWRjOGU1OGJiOGNlZTdlMjM5NjkyMmJlZTVmNTc1
NWJlYjhiNC4uMTEzMDE4MjdkYTM2MWNiY2Y1OTM2YWIxMjY4YWRjOTgyNWYyYzE3MiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDE2LTAxLTE0ICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAg
IHByZXBhcmUtY2hhbmdlbG9nIGRvZXMgbm90IHJlYWQgcGF0aHMgY29udGFpbmluZyBzcGFjZXMg
cHJvcGVybHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzNzk4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEVzY2FwZSB3aGl0ZXNwYWNlIGluIGZpbGVuYW1lcyBiZWZvcmUgcGFzc2luZyB0aGUgZmlsZSBw
YXRoIHRvIG90aGVyIGZ1bmN0aW9ucy4KKworICAgICAgICAqIFNjcmlwdHMvcHJlcGFyZS1DaGFu
Z2VMb2c6CisgICAgICAgIChnZW5lcmF0ZUZ1bmN0aW9uTGlzdHMpOgorCiAyMDE2LTAxLTEyICBC
ZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEFk
ZCBhIGhlbHAgbWVzc2FnZSB3aGVuIHJ1bi1qc2Mtc3RyZXNzLXRlc3RzIGZhaWxzCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3ByZXBhcmUtQ2hhbmdlTG9nIGIvVG9vbHMvU2NyaXB0cy9wcmVw
YXJlLUNoYW5nZUxvZwppbmRleCAyNzBiYzNjMWEwYjI0MDgxODllYzEzNGRmNjg3YjU0ZTcwOTAw
NmM5Li5kMzg3MGMyYjYxOGIzZDVhMTgwODUxNzE2NGI5M2UyZGU3ZTlhYmQ4IDEwMDc1NQotLS0g
YS9Ub29scy9TY3JpcHRzL3ByZXBhcmUtQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL1NjcmlwdHMvcHJl
cGFyZS1DaGFuZ2VMb2cKQEAgLTMxMywxMCArMzEzLDE0IEBAIHN1YiBnZW5lcmF0ZUZ1bmN0aW9u
TGlzdHMoJCQkJCQpCiAgICAgcHJpbnQgU1RERVJSICIgIEV4dHJhY3RpbmcgYWZmZWN0ZWQgZnVu
Y3Rpb24gbmFtZXMgZnJvbSBzb3VyY2UgZmlsZXMuXG4iOwogICAgIG15ICVmaWxlc1RvRXhhbWlu
ZSA9IG1hcCB7ICRfID0+IDEgfSAoa2V5cyglbGluZV9yYW5nZXNfYmVmb3JlX2NoYW5nZWQpLCBr
ZXlzKCVsaW5lX3Jhbmdlc19hZnRlcl9jaGFuZ2VkKSk7CiAgICAgZm9yZWFjaCBteSAkZmlsZSAo
a2V5cyAlZmlsZXNUb0V4YW1pbmUpIHsKKyAgICAgICAgIyBFc2NhcGUgd2hpdGVzcGFjZSBpbiBm
aWxlbmFtZXMgcmF0aGVyIHRoYW4gYWRkaW5nIHF1b3Rlcywgc2luY2UgbWFueSBmdW5jdGlvbnMg
Y2FuIG9wZW4gZmlsZXMKKyAgICAgICAgIyBhbmQgb3RoZXIgY29kZSBkb2Vzbid0IGV4cGVjdCB0
byBzZWUgYSB0cmFpbGluZyAiIGNoYXJhY3RlciB3aGVuIHNuaWZmaW5nIGEgZmlsZSBleHRlbnNp
b24uCisgICAgICAgIGNob21wICRmaWxlOworICAgICAgICAkZmlsZSA9fiBzLyAvXFwgLzsKICAg
ICAgICAgbXkgJXNhd19mdW5jdGlvbjsKICAgICAgICAgIyBGaW5kIGFsbCB0aGUgZnVuY3Rpb25z
IGluIHRoZSBmaWxlLgogICAgICAgICBpZiAoJGxpbmVfcmFuZ2VzX2FmdGVyX2NoYW5nZWR7JGZp
bGV9KSB7Ci0gICAgICAgICAgICBvcGVuIFNPVVJDRSwgJGZpbGUgb3IgbmV4dDsKKyAgICAgICAg
ICAgIG9wZW4oU09VUkNFLCAiPCIsICRmaWxlKSBvciBuZXh0OwogICAgICAgICAgICAgbXkgQGZ1
bmN0aW9uX3JhbmdlcyA9IGdldF9mdW5jdGlvbl9saW5lX3JhbmdlcyhcKlNPVVJDRSwgJGZpbGUp
OwogICAgICAgICAgICAgY2xvc2UgU09VUkNFOwogCg==
</data>
<flag name="review"
          id="293958"
          type_id="1"
          status="+"
          setter="joepeck"
    />
    <flag name="commit-queue"
          id="293959"
          type_id="3"
          status="-"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>