<?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>26999</bug_id>
          
          <creation_ts>2009-07-06 13:45:15 -0700</creation_ts>
          <short_desc>bugzilla-tool/svn-apply can&apos;t handle patches made from a non-root directory</short_desc>
          <delta_ts>2009-10-23 14:31:33 -0700</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>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>joepeck</cc>
    
    <cc>mrowe</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>129996</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-07-06 13:45:15 -0700</bug_when>
    <thetext>bugzilla-tool/svn-apply can&apos;t handle patches made from a non-root directory

We need to make some part of this scripting smarter so that it can figure out where the patch was made from instead of failing when people attach patches made in just WebCore/ or JavaScriptCore/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130440</commentid>
    <comment_count>1</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-07-08 09:00:33 -0700</bug_when>
    <thetext>Should this be handled on the patch generation side? By changing WebKit/WebKitTools/Scripts/svn-create-patch?

Calculate the path difference between the current working directory and the WebKit root (substring of the pwd).  Run generateFileList() as normal from the pwd.  Now you have the list of all files changed from the pwd (current behavior) but you can change directory to the WebKit root and run the diffs from the root (for `svn diff`).

Or should this be handled on the applying side?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130581</commentid>
    <comment_count>2</comment_count>
      <attachid>32491</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-07-08 17:29:58 -0700</bug_when>
    <thetext>Created attachment 32491
This would make it so svn-create-patch provides full paths from the WebKit root directory.

This should keep the current svn-create-patch behavior, but just make it so that the paths for the files are from the WebKit root directory.  This would be on the create patch side, not on the apply patch side.  I don&apos;t know how common it is to get patches in a form other then one produced by svn-create-patch.  If its better to handle the apply side then I&apos;m perfectly fine with this getting r-.  I tested this a number of different ways on OS X, I haven&apos;t tried Windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131121</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-07-11 11:28:37 -0700</bug_when>
    <thetext>These seems like an OK idea to me.

# Change to WebKit dir and get the difference from the current dir
 458 sub chdirWebKitAndGetPrefix
 459 {
 460     my $before = File::Spec-&gt;rel2abs( File::Spec-&gt;curdir() );
 461     chdirWebKit();
 462     my $after = File::Spec-&gt;rel2abs( File::Spec-&gt;curdir() );
 463     $before =~ s/^$after\/?//;
 464     return $before if $before eq &apos;&apos;;    # Already at WebKit dir
 465     $before .= &apos;/&apos; if $before !~ /\/$/; # Prefix needs a trailing &apos;/&apos;
 466     return $before;
 467 }

seems a little complicated and hard to read...  Shouldn&apos;t we just have a command in wkdirs.pm like:
git rev-parse --show-prefix
?

Which is then separate from the chdirWebKit command?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131122</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-07-11 11:29:06 -0700</bug_when>
    <thetext>I would like an svn user, like Mark or Darin or someone to comment though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131581</commentid>
    <comment_count>5</comment_count>
      <attachid>32491</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2009-07-14 09:07:59 -0700</bug_when>
    <thetext>Comment on attachment 32491
This would make it so svn-create-patch provides full paths from the WebKit root directory.

&gt; +use webkitdirs;

It&apos;s unfortunate that we need to use the webkitdirs module since this script could be used on any SVN working directory previously.  (Darin Adler may have more input on this.)

&gt; +sub chdirWebKitAndGetPrefix;

This needs empty parenthesis after the declaration (an empty prototype) to match the style of the rest of the source.

&gt; +    my $file = $prefix . $fileData-&gt;{path};

This should use File::Spec-&gt;catdir($prefix, $fileData-&gt;{path}) instead.  Then you don&apos;t have to worry about the trailing &apos;/&apos; in chdirWebKitAndGetPrefix().

&gt; +# Change to WebKit dir and get the difference from the current dir

This comment isn&apos;t really needed; the method name explains what it does already.

&gt; +sub chdirWebKitAndGetPrefix

Needs parenthesis after the method to match the style of the rest of the source.

&gt; +{
&gt; +    my $before = File::Spec-&gt;rel2abs( File::Spec-&gt;curdir() );
&gt; +    chdirWebKit();
&gt; +    my $after = File::Spec-&gt;rel2abs( File::Spec-&gt;curdir() );
&gt; +    $before =~ s/^$after\/?//;

I think it would be clearer to use File::Spec::abs2rel() instead of rolling your own regex here:

my $relativePath = File::Spec-&gt;abs2rel($after, $before);

&gt; +    return $before if $before eq &apos;&apos;;    # Already at WebKit dir
&gt; +    $before .= &apos;/&apos; if $before !~ /\/$/; # Prefix needs a trailing &apos;/&apos;
&gt; +    return $before;
&gt; +}

With the change to use File::Spec::catdir() above, and because File::Spec::abs2rel() will either return a relative path or an empty string, this logic goes away:

    return $relativePath;

In fact, you should just remove the $relativePath variable and return the result directly:

    return File::Spec-&gt;abs2rel($after, $before);

r- to fix everything except the &apos;use webkitdirs&apos; issue.

IMO, it would be great to have a replacement subroutine for chdirwebkit() that got the svn URL from the &quot;svn info&quot; command in the current directory, then did a &quot;chdir ..&quot; until the current svn URL no longer matched the previous svn URL (minus one directory), then you could chdir back into the last directory.  This would then put you at the root of the svn working directory regardless of whether you&apos;re working on WebKit or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131589</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-07-14 09:35:34 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; It&apos;s unfortunate that we need to use the webkitdirs module since this script
&gt; could be used on any SVN working directory previously.  (Darin Adler may have
&gt; more input on this.)

Exactly. This was originally intended to be a Subversion script, not a WebKit-project-specific script.

&gt; IMO, it would be great to have a replacement subroutine for chdirwebkit() that
&gt; got the svn URL from the &quot;svn info&quot; command in the current directory, then did
&gt; a &quot;chdir ..&quot; until the current svn URL no longer matched the previous svn URL
&gt; (minus one directory), then you could chdir back into the last directory.  This
&gt; would then put you at the root of the svn working directory regardless of
&gt; whether you&apos;re working on WebKit or not.

I agree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131591</commentid>
    <comment_count>7</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-07-14 09:38:39 -0700</bug_when>
    <thetext>David, thanks for the through review.  My inexperience with Perl is apparent. =)

However, is it worth cleaning this up?  I still haven&apos;t gotten an answer wether or not it makes more sense to just fix the &quot;svn-apply&quot; side instead.  I am not a committer so I don&apos;t know if even making this modification to svn-create-patch will stop enough of these problems, or end up just fixing a few.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131599</commentid>
    <comment_count>8</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2009-07-14 10:06:24 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; David, thanks for the through review.  My inexperience with Perl is apparent.
&gt; =)

Your Perl is fine.  We&apos;re just picky.  :)

&gt; However, is it worth cleaning this up?  I still haven&apos;t gotten an answer wether
&gt; or not it makes more sense to just fix the &quot;svn-apply&quot; side instead.  I am not
&gt; a committer so I don&apos;t know if even making this modification to
&gt; svn-create-patch will stop enough of these problems, or end up just fixing a
&gt; few.

It&apos;s a step forward, which is what&apos;s important.  If there are still issues with svn-apply, we can address those after this fix lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131721</commentid>
    <comment_count>9</comment_count>
      <attachid>32742</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-07-14 15:55:27 -0700</bug_when>
    <thetext>Created attachment 32742
svn-create-patch provides full paths Subversion Repository&apos;s Root Directory

Much cleaner!  This addresses the points in David&apos;s review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131722</commentid>
    <comment_count>10</comment_count>
      <attachid>32743</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-07-14 15:55:27 -0700</bug_when>
    <thetext>Created attachment 32743
svn-create-patch provides full paths Subversion Repository&apos;s Root Directory

Much cleaner!  This addresses the points in David&apos;s review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131726</commentid>
    <comment_count>11</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-07-14 16:03:19 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 32491 [details])
&gt; &gt; +use webkitdirs;
&gt; 
&gt; It&apos;s unfortunate that we need to use the webkitdirs module since this script
&gt; could be used on any SVN working directory previously.  (Darin Adler may have
&gt; more input on this.)

This removes the dependency on &quot;webkitdirs&quot; which removes a few other includes that this had introduced.


&gt; &gt; +sub chdirWebKitAndGetPrefix;
&gt; 
&gt; This needs empty parenthesis after the declaration (an empty prototype) to
&gt; match the style of the rest of the source.

Done. This and all other style changes.


&gt; &gt; +    my $file = $prefix . $fileData-&gt;{path};
&gt; 
&gt; This should use File::Spec-&gt;catdir($prefix, $fileData-&gt;{path}) instead.  Then
&gt; you don&apos;t have to worry about the trailing &apos;/&apos; in chdirWebKitAndGetPrefix().

Done. Much cleaner.


&gt; &gt; +{
&gt; &gt; +    my $before = File::Spec-&gt;rel2abs( File::Spec-&gt;curdir() );
&gt; &gt; +    chdirWebKit();
&gt; &gt; +    my $after = File::Spec-&gt;rel2abs( File::Spec-&gt;curdir() );
&gt; &gt; +    $before =~ s/^$after\/?//;
&gt; 
&gt; I think it would be clearer to use File::Spec::abs2rel() instead of rolling
&gt; your own regex here:
&gt; 
&gt; my $relativePath = File::Spec-&gt;abs2rel($after, $before);

Done. Much cleaner.


&gt; IMO, it would be great to have a replacement subroutine for chdirwebkit() that
&gt; got the svn URL from the &quot;svn info&quot; command in the current directory, then did
&gt; a &quot;chdir ..&quot; until the current svn URL no longer matched the previous svn URL
&gt; (minus one directory), then you could chdir back into the last directory.  This
&gt; would then put you at the root of the svn working directory regardless of
&gt; whether you&apos;re working on WebKit or not.

The way I went about it was using &quot;svn info [PATH]&quot;.  And building up that path as a trail of &quot;../&quot;.  I also use system() to check the error code of svn info.  Let me know if there is a problem with this approach (cross platform?) or if you think of a better way and I&apos;ll see what I can do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131785</commentid>
    <comment_count>12</comment_count>
      <attachid>32743</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2009-07-14 18:30:06 -0700</bug_when>
    <thetext>Comment on attachment 32743
svn-create-patch provides full paths Subversion Repository&apos;s Root Directory

(In reply to comment #11)
&gt; (In reply to comment #5)
&gt; &gt; IMO, it would be great to have a replacement subroutine for chdirwebkit() that
&gt; &gt; got the svn URL from the &quot;svn info&quot; command in the current directory, then did
&gt; &gt; a &quot;chdir ..&quot; until the current svn URL no longer matched the previous svn URL
&gt; &gt; (minus one directory), then you could chdir back into the last directory.  This
&gt; &gt; would then put you at the root of the svn working directory regardless of
&gt; &gt; whether you&apos;re working on WebKit or not.
&gt; 
&gt; The way I went about it was using &quot;svn info [PATH]&quot;.  And building up that path
&gt; as a trail of &quot;../&quot;.  I also use system() to check the error code of svn info. 
&gt; Let me know if there is a problem with this approach (cross platform?) or if
&gt; you think of a better way and I&apos;ll see what I can do.

I thought of doing that after my last comment as well!  The only situation where this won&apos;t work is if a user has a &quot;mixed&quot; svn working directory where they have one svn working directory at &quot;dir&quot; and a second svn working directory (from a different repository) under &quot;dir&quot;, and the user ran svn-create-patch in the second working directory.  I don&apos;t know how prevalent this use case is, and I doubt it&apos;s common with WebKit, so let&apos;s not worry about that for now.

&gt;+sub chdirAndGetDifference($);

Nit: Instead of &quot;GetDifference&quot;, I think something like &quot;ReturnRelativePath&quot; might be more descriptive.  I can change this when I land the patch.

r=me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131788</commentid>
    <comment_count>13</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2009-07-14 18:39:20 -0700</bug_when>
    <thetext>&gt; The only situation where this won&apos;t work is [nested svn working dirs]
&gt; I don&apos;t know how prevalent this use case is, and I doubt it&apos;s common
&gt; with WebKit, so let&apos;s not worry about that for now.

I thought about this too.  But I don&apos;t even think that is realistic or would work properly.  My only guess would be the actual Subversion team testing Subversion =P.  But maybe it is possible and you&apos;re approach from before (checking the URL from svn info and using that) would be more appropriate.


&gt; &gt;+sub chdirAndGetDifference($);
&gt; 
&gt; Nit: Instead of &quot;GetDifference&quot;, I think something like &quot;ReturnRelativePath&quot;
&gt; might be more descriptive.  I can change this when I land the patch.

Sounds good.

Thanks for the review! Cheers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132005</commentid>
    <comment_count>14</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2009-07-15 13:11:25 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/45939.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132404</commentid>
    <comment_count>15</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2009-07-16 16:44:41 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; I thought of doing that after my last comment as well!  The only situation
&gt; where this won&apos;t work is if a user has a &quot;mixed&quot; svn working directory where
&gt; they have one svn working directory at &quot;dir&quot; and a second svn working directory
&gt; (from a different repository) under &quot;dir&quot;, and the user ran svn-create-patch in
&gt; the second working directory.  I don&apos;t know how prevalent this use case is, and
&gt; I doubt it&apos;s common with WebKit, so let&apos;s not worry about that for now.

Oops.  See Bug 27323 Comment #6.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>157307</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-23 14:31:33 -0700</bug_when>
    <thetext>*** Bug 28421 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32491</attachid>
            <date>2009-07-08 17:29:58 -0700</date>
            <delta_ts>2009-07-14 15:55:27 -0700</delta_ts>
            <desc>This would make it so svn-create-patch provides full paths from the WebKit root directory.</desc>
            <filename>CreatePatchWithRootPaths.patch</filename>
            <type>text/plain</type>
            <size>2708</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDQ1NjUyKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTEgQEAKKzIwMDktMDctMDggIEpvc2VwaCBQZWNvcmFybyAg
PGpvZXBlY2swMkBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTWFrZSBzdm4tY3JlYXRlLXBhdGNoIHByb3ZpZGUgZmlsZSBwYXRoZXMg
ZnJvbSB0aGUgcm9vdCBXZWJLaXQgZGlyLgorCisgICAgICAgICogU2NyaXB0cy9zdm4tY3JlYXRl
LXBhdGNoOgorCiAyMDA5LTA3LTA4ICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBSb3dlLgpJbmRleDogV2ViS2l0VG9vbHMvU2Ny
aXB0cy9zdm4tY3JlYXRlLXBhdGNoCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMv
c3ZuLWNyZWF0ZS1wYXRjaAkocmV2aXNpb24gNDU1MTEpCisrKyBXZWJLaXRUb29scy9TY3JpcHRz
L3N2bi1jcmVhdGUtcGF0Y2gJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDIzICs0NCwyNiBAQCB1c2Ug
c3RyaWN0OwogdXNlIHdhcm5pbmdzOwogCiB1c2UgQ29uZmlnOwotdXNlIEN3ZDsKIHVzZSBGaWxl
OjpCYXNlbmFtZTsKIHVzZSBGaWxlOjpTcGVjOwogdXNlIEZpbGU6OnN0YXQ7Cit1c2UgRmluZEJp
bjsKK3VzZSBsaWIgJEZpbmRCaW46OkJpbjsKIHVzZSBHZXRvcHQ6Okxvbmc7CiB1c2UgTUlNRTo6
QmFzZTY0OwogdXNlIFBPU0lYIHF3KDplcnJub19oKTsKIHVzZSBUaW1lOjpnbXRpbWU7Cit1c2Ug
d2Via2l0ZGlyczsKIAogc3ViIGJpbmFyeWNtcCgkJCk7CiBzdWIgY2Fub25pY2FsaXplUGF0aCgk
KTsKK3N1YiBjaGRpcldlYktpdEFuZEdldFByZWZpeDsKIHN1YiBmaW5kQmFzZVVybCgkKTsKIHN1
YiBmaW5kTWltZVR5cGUoJDskKTsKIHN1YiBmaW5kTW9kaWZpY2F0aW9uVHlwZSgkKTsKIHN1YiBm
aW5kU291cmNlRmlsZUFuZFJldmlzaW9uKCQpOwogc3ViIGZpeENoYW5nZUxvZ1BhdGNoKCQpOwot
c3ViIGdlbmVyYXRlRGlmZigkKTsKK3N1YiBnZW5lcmF0ZURpZmYoJCQpOwogc3ViIGdlbmVyYXRl
RmlsZUxpc3QoJFwlKTsKIHN1YiBpc0JpbmFyeU1pbWVUeXBlKCQpOwogc3ViIG1hbnVmYWN0dXJl
UGF0Y2hGb3JBZGRpdGlvbldpdGhIaXN0b3J5KCQpOwpAQCAtOTQsOSArOTcsMTIgQEAgZm9yIG15
ICRwYXRoIChrZXlzICVwYXRocykgewogICAgIGdlbmVyYXRlRmlsZUxpc3QoJHBhdGgsICVkaWZm
RmlsZXMpOwogfQogCisjIEFwcGx5IHBhdGNoZXMgZnJvbSB0aGUgV2ViS2l0IGRpcmVjdG9yeQor
bXkgJHByZWZpeCA9IGNoZGlyV2ViS2l0QW5kR2V0UHJlZml4KCk7CisKICMgR2VuZXJhdGUgdGhl
IGRpZmZzLCBpbiBhIG9yZGVyIGNob3NlbiBmb3IgZWFzeSByZXZpZXdpbmcuCiBmb3IgbXkgJHBh
dGggKHNvcnQgcGF0Y2hwYXRoY21wIHZhbHVlcyAlZGlmZkZpbGVzKSB7Ci0gICAgZ2VuZXJhdGVE
aWZmKCRwYXRoKTsKKyAgICBnZW5lcmF0ZURpZmYoJHBhdGgsICRwcmVmaXgpOwogfQogCiBleGl0
IDA7CkBAIC0yNTIsMTAgKzI1OCwxMCBAQCBzdWIgZml4Q2hhbmdlTG9nUGF0Y2goJCkKICAgICBy
ZXR1cm4gJG5ld1BhdGNoOwogfQogCi1zdWIgZ2VuZXJhdGVEaWZmKCQpCitzdWIgZ2VuZXJhdGVE
aWZmKCQkKQogewotICAgIG15ICgkZmlsZURhdGEpID0gQF87Ci0gICAgbXkgJGZpbGUgPSAkZmls
ZURhdGEtPntwYXRofTsKKyAgICBteSAoJGZpbGVEYXRhLCAkcHJlZml4KSA9IEBfOworICAgIG15
ICRmaWxlID0gJHByZWZpeCAuICRmaWxlRGF0YS0+e3BhdGh9OwogICAgIG15ICRwYXRjaDsKICAg
ICBpZiAoJGZpbGVEYXRhLT57bW9kaWZpY2F0aW9uVHlwZX0gZXEgImFkZGl0aW9uV2l0aEhpc3Rv
cnkiKSB7CiAgICAgICAgIG1hbnVmYWN0dXJlUGF0Y2hGb3JBZGRpdGlvbldpdGhIaXN0b3J5KCRm
aWxlRGF0YSk7CkBAIC00NDcsMyArNDUzLDE1IEBAIHN1YiB0ZXN0ZmlsZWNtcCgkJCkKICAgICBt
eSAoJGZpbGVEYXRhQSwgJGZpbGVEYXRhQikgPSBAXzsKICAgICByZXR1cm4gJGZpbGVEYXRhQS0+
e2lzVGVzdEZpbGV9IDw9PiAkZmlsZURhdGFCLT57aXNUZXN0RmlsZX07CiB9CisKKyMgQ2hhbmdl
IHRvIFdlYktpdCBkaXIgYW5kIGdldCB0aGUgZGlmZmVyZW5jZSBmcm9tIHRoZSBjdXJyZW50IGRp
cgorc3ViIGNoZGlyV2ViS2l0QW5kR2V0UHJlZml4Cit7CisgICAgbXkgJGJlZm9yZSA9IEZpbGU6
OlNwZWMtPnJlbDJhYnMoIEZpbGU6OlNwZWMtPmN1cmRpcigpICk7CisgICAgY2hkaXJXZWJLaXQo
KTsKKyAgICBteSAkYWZ0ZXIgPSBGaWxlOjpTcGVjLT5yZWwyYWJzKCBGaWxlOjpTcGVjLT5jdXJk
aXIoKSApOworICAgICRiZWZvcmUgPX4gcy9eJGFmdGVyXC8/Ly87CisgICAgcmV0dXJuICRiZWZv
cmUgaWYgJGJlZm9yZSBlcSAnJzsgICAgIyBBbHJlYWR5IGF0IFdlYktpdCBkaXIKKyAgICAkYmVm
b3JlIC49ICcvJyBpZiAkYmVmb3JlICF+IC9cLyQvOyAjIFByZWZpeCBuZWVkcyBhIHRyYWlsaW5n
ICcvJworICAgIHJldHVybiAkYmVmb3JlOworfQo=
</data>
<flag name="review"
          id="16918"
          type_id="1"
          status="-"
          setter="ddkilzer"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32742</attachid>
            <date>2009-07-14 15:55:27 -0700</date>
            <delta_ts>2009-07-14 15:58:39 -0700</delta_ts>
            <desc>svn-create-patch provides full paths Subversion Repository&apos;s Root Directory</desc>
            <filename>SvnCreatePatchesFromRoot.patch</filename>
            <type>text/plain</type>
            <size>2924</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDQ1ODc3KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDktMDctMTQgIEpvc2VwaCBQZWNvcmFybyAg
PGpvZXBlY2swMkBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgYnVnemlsbGEtdG9vbC9zdm4tYXBwbHkgY2FuJ3QgaGFuZGxlIHBhdGNo
ZXMgbWFkZSBmcm9tIGEgbm9uLXJvb3QgZGlyZWN0b3J5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjk5OQorCisgICAgICAgICogU2NyaXB0cy9zdm4t
Y3JlYXRlLXBhdGNoOgorCiAyMDA5LTA3LTE0ICBTaGluaWNoaXJvIEhhbWFqaSAgPGhhbWFqaUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCkluZGV4OiBX
ZWJLaXRUb29scy9TY3JpcHRzL3N2bi1jcmVhdGUtcGF0Y2gKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
VG9vbHMvU2NyaXB0cy9zdm4tY3JlYXRlLXBhdGNoCShyZXZpc2lvbiA0NTgzNSkKKysrIFdlYktp
dFRvb2xzL1NjcmlwdHMvc3ZuLWNyZWF0ZS1wYXRjaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyAr
NDQsNiBAQCB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzOwogCiB1c2UgQ29uZmlnOwotdXNlIEN3
ZDsKIHVzZSBGaWxlOjpCYXNlbmFtZTsKIHVzZSBGaWxlOjpTcGVjOwogdXNlIEZpbGU6OnN0YXQ7
CkBAIC01NSwxMiArNTQsMTQgQEAgdXNlIFRpbWU6OmdtdGltZTsKIAogc3ViIGJpbmFyeWNtcCgk
JCk7CiBzdWIgY2Fub25pY2FsaXplUGF0aCgkKTsKK3N1YiBjaGRpckFuZEdldERpZmZlcmVuY2Uo
JCk7CitzdWIgZGV0ZXJtaW5lU3ZuUm9vdCgpOwogc3ViIGZpbmRCYXNlVXJsKCQpOwogc3ViIGZp
bmRNaW1lVHlwZSgkOyQpOwogc3ViIGZpbmRNb2RpZmljYXRpb25UeXBlKCQpOwogc3ViIGZpbmRT
b3VyY2VGaWxlQW5kUmV2aXNpb24oJCk7CiBzdWIgZml4Q2hhbmdlTG9nUGF0Y2goJCk7Ci1zdWIg
Z2VuZXJhdGVEaWZmKCQpOworc3ViIGdlbmVyYXRlRGlmZigkJCk7CiBzdWIgZ2VuZXJhdGVGaWxl
TGlzdCgkXCUpOwogc3ViIGlzQmluYXJ5TWltZVR5cGUoJCk7CiBzdWIgbWFudWZhY3R1cmVQYXRj
aEZvckFkZGl0aW9uV2l0aEhpc3RvcnkoJCk7CkBAIC05NCw5ICs5NSwxMiBAQCBmb3IgbXkgJHBh
dGggKGtleXMgJXBhdGhzKSB7CiAgICAgZ2VuZXJhdGVGaWxlTGlzdCgkcGF0aCwgJWRpZmZGaWxl
cyk7CiB9CiAKK215ICRzdm5Sb290ID0gZGV0ZXJtaW5lU3ZuUm9vdCgpOworbXkgJHByZWZpeCA9
IGNoZGlyQW5kR2V0RGlmZmVyZW5jZSgkc3ZuUm9vdCk7CisKICMgR2VuZXJhdGUgdGhlIGRpZmZz
LCBpbiBhIG9yZGVyIGNob3NlbiBmb3IgZWFzeSByZXZpZXdpbmcuCiBmb3IgbXkgJHBhdGggKHNv
cnQgcGF0Y2hwYXRoY21wIHZhbHVlcyAlZGlmZkZpbGVzKSB7Ci0gICAgZ2VuZXJhdGVEaWZmKCRw
YXRoKTsKKyAgICBnZW5lcmF0ZURpZmYoJHBhdGgsICRwcmVmaXgpOwogfQogCiBleGl0IDA7CkBA
IC0yNTIsMTAgKzI1NiwxMCBAQCBzdWIgZml4Q2hhbmdlTG9nUGF0Y2goJCkKICAgICByZXR1cm4g
JG5ld1BhdGNoOwogfQogCi1zdWIgZ2VuZXJhdGVEaWZmKCQpCitzdWIgZ2VuZXJhdGVEaWZmKCQk
KQogewotICAgIG15ICgkZmlsZURhdGEpID0gQF87Ci0gICAgbXkgJGZpbGUgPSAkZmlsZURhdGEt
PntwYXRofTsKKyAgICBteSAoJGZpbGVEYXRhLCAkcHJlZml4KSA9IEBfOworICAgIG15ICRmaWxl
ID0gRmlsZTo6U3BlYy0+Y2F0ZGlyKCRwcmVmaXgsICRmaWxlRGF0YS0+e3BhdGh9KTsKICAgICBt
eSAkcGF0Y2g7CiAgICAgaWYgKCRmaWxlRGF0YS0+e21vZGlmaWNhdGlvblR5cGV9IGVxICJhZGRp
dGlvbldpdGhIaXN0b3J5IikgewogICAgICAgICBtYW51ZmFjdHVyZVBhdGNoRm9yQWRkaXRpb25X
aXRoSGlzdG9yeSgkZmlsZURhdGEpOwpAQCAtNDQ3LDMgKzQ1MSwyOSBAQCBzdWIgdGVzdGZpbGVj
bXAoJCQpCiAgICAgbXkgKCRmaWxlRGF0YUEsICRmaWxlRGF0YUIpID0gQF87CiAgICAgcmV0dXJu
ICRmaWxlRGF0YUEtPntpc1Rlc3RGaWxlfSA8PT4gJGZpbGVEYXRhQi0+e2lzVGVzdEZpbGV9Owog
fQorCitzdWIgY2hkaXJBbmRHZXREaWZmZXJlbmNlKCQpCit7CisgICAgbXkgKCRuZXdkaXIpID0g
QF87CisgICAgbXkgJGJlZm9yZSA9IEZpbGU6OlNwZWMtPnJlbDJhYnMoIEZpbGU6OlNwZWMtPmN1
cmRpcigpICk7CisgICAgY2hkaXIgJG5ld2RpcjsKKyAgICBteSAkYWZ0ZXIgPSBGaWxlOjpTcGVj
LT5yZWwyYWJzKCBGaWxlOjpTcGVjLT5jdXJkaXIoKSApOworICAgIHJldHVybiBGaWxlOjpTcGVj
LT5hYnMycmVsKCRiZWZvcmUsICRhZnRlcik7Cit9CisKK3N1YiBkZXRlcm1pbmVTdm5Sb290KCkK
K3sKKyAgICBteSAkbGFzdCA9ICcnOworICAgIG15ICRwYXRoID0gJy4nOworICAgIG15ICRwYXJl
bnQgPSAnLi4vJzsKKyAgICBteSAkZGV2bnVsbCA9IEZpbGU6OlNwZWMtPmRldm51bGwoKTsKKyAg
ICBteSAkZXhpdENvZGU7CisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgJGV4aXRDb2RlID0gc3lz
dGVtKCJzdm4gaW5mbyAkcGF0aCAyPiAkZGV2bnVsbCA+ICRkZXZudWxsIikvMjU2OworICAgICAg
ICBsYXN0IGlmICRleGl0Q29kZTsKKyAgICAgICAgJGxhc3QgPSAkcGF0aDsKKyAgICAgICAgJHBh
dGggPSAkcGFyZW50IC4gJHBhdGg7CisgICAgfQorCisgICAgcmV0dXJuIEZpbGU6OlNwZWMtPnJl
bDJhYnMoJGxhc3QpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32743</attachid>
            <date>2009-07-14 15:55:27 -0700</date>
            <delta_ts>2009-07-14 18:30:06 -0700</delta_ts>
            <desc>svn-create-patch provides full paths Subversion Repository&apos;s Root Directory</desc>
            <filename>SvnCreatePatchesFromRoot.patch</filename>
            <type>text/plain</type>
            <size>2924</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDQ1ODc3KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDktMDctMTQgIEpvc2VwaCBQZWNvcmFybyAg
PGpvZXBlY2swMkBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgYnVnemlsbGEtdG9vbC9zdm4tYXBwbHkgY2FuJ3QgaGFuZGxlIHBhdGNo
ZXMgbWFkZSBmcm9tIGEgbm9uLXJvb3QgZGlyZWN0b3J5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjk5OQorCisgICAgICAgICogU2NyaXB0cy9zdm4t
Y3JlYXRlLXBhdGNoOgorCiAyMDA5LTA3LTE0ICBTaGluaWNoaXJvIEhhbWFqaSAgPGhhbWFqaUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCkluZGV4OiBX
ZWJLaXRUb29scy9TY3JpcHRzL3N2bi1jcmVhdGUtcGF0Y2gKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
VG9vbHMvU2NyaXB0cy9zdm4tY3JlYXRlLXBhdGNoCShyZXZpc2lvbiA0NTgzNSkKKysrIFdlYktp
dFRvb2xzL1NjcmlwdHMvc3ZuLWNyZWF0ZS1wYXRjaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyAr
NDQsNiBAQCB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzOwogCiB1c2UgQ29uZmlnOwotdXNlIEN3
ZDsKIHVzZSBGaWxlOjpCYXNlbmFtZTsKIHVzZSBGaWxlOjpTcGVjOwogdXNlIEZpbGU6OnN0YXQ7
CkBAIC01NSwxMiArNTQsMTQgQEAgdXNlIFRpbWU6OmdtdGltZTsKIAogc3ViIGJpbmFyeWNtcCgk
JCk7CiBzdWIgY2Fub25pY2FsaXplUGF0aCgkKTsKK3N1YiBjaGRpckFuZEdldERpZmZlcmVuY2Uo
JCk7CitzdWIgZGV0ZXJtaW5lU3ZuUm9vdCgpOwogc3ViIGZpbmRCYXNlVXJsKCQpOwogc3ViIGZp
bmRNaW1lVHlwZSgkOyQpOwogc3ViIGZpbmRNb2RpZmljYXRpb25UeXBlKCQpOwogc3ViIGZpbmRT
b3VyY2VGaWxlQW5kUmV2aXNpb24oJCk7CiBzdWIgZml4Q2hhbmdlTG9nUGF0Y2goJCk7Ci1zdWIg
Z2VuZXJhdGVEaWZmKCQpOworc3ViIGdlbmVyYXRlRGlmZigkJCk7CiBzdWIgZ2VuZXJhdGVGaWxl
TGlzdCgkXCUpOwogc3ViIGlzQmluYXJ5TWltZVR5cGUoJCk7CiBzdWIgbWFudWZhY3R1cmVQYXRj
aEZvckFkZGl0aW9uV2l0aEhpc3RvcnkoJCk7CkBAIC05NCw5ICs5NSwxMiBAQCBmb3IgbXkgJHBh
dGggKGtleXMgJXBhdGhzKSB7CiAgICAgZ2VuZXJhdGVGaWxlTGlzdCgkcGF0aCwgJWRpZmZGaWxl
cyk7CiB9CiAKK215ICRzdm5Sb290ID0gZGV0ZXJtaW5lU3ZuUm9vdCgpOworbXkgJHByZWZpeCA9
IGNoZGlyQW5kR2V0RGlmZmVyZW5jZSgkc3ZuUm9vdCk7CisKICMgR2VuZXJhdGUgdGhlIGRpZmZz
LCBpbiBhIG9yZGVyIGNob3NlbiBmb3IgZWFzeSByZXZpZXdpbmcuCiBmb3IgbXkgJHBhdGggKHNv
cnQgcGF0Y2hwYXRoY21wIHZhbHVlcyAlZGlmZkZpbGVzKSB7Ci0gICAgZ2VuZXJhdGVEaWZmKCRw
YXRoKTsKKyAgICBnZW5lcmF0ZURpZmYoJHBhdGgsICRwcmVmaXgpOwogfQogCiBleGl0IDA7CkBA
IC0yNTIsMTAgKzI1NiwxMCBAQCBzdWIgZml4Q2hhbmdlTG9nUGF0Y2goJCkKICAgICByZXR1cm4g
JG5ld1BhdGNoOwogfQogCi1zdWIgZ2VuZXJhdGVEaWZmKCQpCitzdWIgZ2VuZXJhdGVEaWZmKCQk
KQogewotICAgIG15ICgkZmlsZURhdGEpID0gQF87Ci0gICAgbXkgJGZpbGUgPSAkZmlsZURhdGEt
PntwYXRofTsKKyAgICBteSAoJGZpbGVEYXRhLCAkcHJlZml4KSA9IEBfOworICAgIG15ICRmaWxl
ID0gRmlsZTo6U3BlYy0+Y2F0ZGlyKCRwcmVmaXgsICRmaWxlRGF0YS0+e3BhdGh9KTsKICAgICBt
eSAkcGF0Y2g7CiAgICAgaWYgKCRmaWxlRGF0YS0+e21vZGlmaWNhdGlvblR5cGV9IGVxICJhZGRp
dGlvbldpdGhIaXN0b3J5IikgewogICAgICAgICBtYW51ZmFjdHVyZVBhdGNoRm9yQWRkaXRpb25X
aXRoSGlzdG9yeSgkZmlsZURhdGEpOwpAQCAtNDQ3LDMgKzQ1MSwyOSBAQCBzdWIgdGVzdGZpbGVj
bXAoJCQpCiAgICAgbXkgKCRmaWxlRGF0YUEsICRmaWxlRGF0YUIpID0gQF87CiAgICAgcmV0dXJu
ICRmaWxlRGF0YUEtPntpc1Rlc3RGaWxlfSA8PT4gJGZpbGVEYXRhQi0+e2lzVGVzdEZpbGV9Owog
fQorCitzdWIgY2hkaXJBbmRHZXREaWZmZXJlbmNlKCQpCit7CisgICAgbXkgKCRuZXdkaXIpID0g
QF87CisgICAgbXkgJGJlZm9yZSA9IEZpbGU6OlNwZWMtPnJlbDJhYnMoIEZpbGU6OlNwZWMtPmN1
cmRpcigpICk7CisgICAgY2hkaXIgJG5ld2RpcjsKKyAgICBteSAkYWZ0ZXIgPSBGaWxlOjpTcGVj
LT5yZWwyYWJzKCBGaWxlOjpTcGVjLT5jdXJkaXIoKSApOworICAgIHJldHVybiBGaWxlOjpTcGVj
LT5hYnMycmVsKCRiZWZvcmUsICRhZnRlcik7Cit9CisKK3N1YiBkZXRlcm1pbmVTdm5Sb290KCkK
K3sKKyAgICBteSAkbGFzdCA9ICcnOworICAgIG15ICRwYXRoID0gJy4nOworICAgIG15ICRwYXJl
bnQgPSAnLi4vJzsKKyAgICBteSAkZGV2bnVsbCA9IEZpbGU6OlNwZWMtPmRldm51bGwoKTsKKyAg
ICBteSAkZXhpdENvZGU7CisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgJGV4aXRDb2RlID0gc3lz
dGVtKCJzdm4gaW5mbyAkcGF0aCAyPiAkZGV2bnVsbCA+ICRkZXZudWxsIikvMjU2OworICAgICAg
ICBsYXN0IGlmICRleGl0Q29kZTsKKyAgICAgICAgJGxhc3QgPSAkcGF0aDsKKyAgICAgICAgJHBh
dGggPSAkcGFyZW50IC4gJHBhdGg7CisgICAgfQorCisgICAgcmV0dXJuIEZpbGU6OlNwZWMtPnJl
bDJhYnMoJGxhc3QpOworfQo=
</data>
<flag name="review"
          id="17121"
          type_id="1"
          status="+"
          setter="ddkilzer"
    />
          </attachment>
      

    </bug>

</bugzilla>