<?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>26755</bug_id>
          
          <creation_ts>2009-06-26 07:42:05 -0700</creation_ts>
          <short_desc>webkit-patch&apos;s commit messages are less readable than commit-log-editor&apos;s</short_desc>
          <delta_ts>2011-07-11 12:32:24 -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>All</rep_platform>
          <op_sys>All</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>
          <dependson>32725</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Levin">levin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>aroben</cc>
    
    <cc>cjerdonek</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>eric</cc>
    
    <cc>mrowe</cc>
    
    <cc>senorblanco</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>128508</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-26 10:41:52 -0700</bug_when>
    <thetext>Bugzilla seems to have lost this description due to DB corruption last night.  The original description:

Compare http://trac.webkit.org/changeset/45257
to http://trac.webkit.org/changeset/45188

Two differences:
1. The lack of titles (&quot;WebCore:&quot;, etc.)  to tell you what directory the
changelog is for.
2. The sections are sorted in a particular order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128509</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-26 10:43:47 -0700</bug_when>
    <thetext>This is a known bug.  There is a FIXME about it in the source.  I certainly welcome patches to fix it.  Although once we add this to bugzilla-tool (or really some changelogs.py) then we should consider re-writing commit-log-editor in python, as this I believe is the only missing feature from our python modules that commit-log-editor needs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128510</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-26 10:44:49 -0700</bug_when>
    <thetext>The source w/ FIXME:
http://trac.webkit.org/browser/trunk/WebKitTools/Scripts/bugzilla-tool#L97</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128513</commentid>
    <comment_count>3</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-06-26 10:51:55 -0700</bug_when>
    <thetext>Yep,  I know it is a known bug (esp. since I flagged it in review :) ), but thought it worth logging a bug since the tool is being used to land patches that expose this.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128519</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-26 11:11:44 -0700</bug_when>
    <thetext>Totally!  Thanks for filing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128521</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-06-26 11:13:22 -0700</bug_when>
    <thetext>I don&apos;t think that we should be exactly matching the format of commit message in &lt;http://trac.webkit.org/changeset/45188&gt;.  In particular, we should avoid having useless info in the first line of the commit.  Hoisting the bug title up to that first line, above the blocks for each directory, would be a good idea.  I also think it&apos;s preferable to omit the redundant date / author lines from the commit message when the author is landing their own patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139265</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-11 23:23:33 -0700</bug_when>
    <thetext>Ideally what will happen is we&apos;ll convert commit-log-editor to a python module and re-use it from within bugzilla-tool.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148490</commentid>
    <comment_count>7</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2009-09-19 06:58:26 -0700</bug_when>
    <thetext>In Bug 29206 Comment #8, I wrote:

BTW bugzilla-tool still differs from commit-log-editor (see &lt;http://trac.webkit.org/changeset/48503&gt;):

- bzt does&apos;t strip spaces to the left of the commit log.
- bzt doesn&apos;t change date/name/email lines to subdirectory names.
- bzt puts the LayoutTest/ChangeLog entry first (not last).
- bzt is not putting a blank line between ChangeLog entries.
- bzt doesn&apos;t consolidate common lines from each ChangeLog entry to the top of the commit log.

Having said that, I don&apos;t like how commit-log-editor squishes the &quot;Directory:&quot; headings into the first line of text after it (see &lt;http://trac.webkit.org/changeset/48492&gt; for example).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168682</commentid>
    <comment_count>8</comment_count>
      <attachid>44296</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-03 23:53:06 -0800</bug_when>
    <thetext>Created attachment 44296
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168684</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-03 23:56:04 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44296 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168695</commentid>
    <comment_count>10</comment_count>
      <attachid>44296</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-04 00:39:32 -0800</bug_when>
    <thetext>Comment on attachment 44296
Patch

In trying to write a unit test for this patch, we discovered that commit-log-editor is super fragile and has a number of error conditions that are very complex to recover from.  I no longer think this is the right approach.  We need a simpler way of creating commit messages that is testable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168696</commentid>
    <comment_count>11</comment_count>
      <attachid>44297</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-04 00:40:22 -0800</bug_when>
    <thetext>Created attachment 44297
Work in progress with unit test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410544</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-05-26 09:59:59 -0700</bug_when>
    <thetext>Can we just invoke commit-log-editor?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410562</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-26 10:12:21 -0700</bug_when>
    <thetext>&gt; Can we just invoke commit-log-editor?

commit-log-editor is not designed in a way that it can be re-used outside of the SVN commit workflow.  One approach is to refactor commit-log-editor to work like a normal UNIX command and then use that core both in the SVN commit workflow and in the webkit-patch workflow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431148</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-07-01 07:36:25 -0700</bug_when>
    <thetext>A lot of the comments in this bug apply to patches with only a single ChangeLog. Retitling to include that case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431269</commentid>
    <comment_count>15</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-01 11:15:05 -0700</bug_when>
    <thetext>&gt; Can we just invoke commit-log-editor?

By the way, we&apos;ve got enough infrastructure now that we might be able to use this approach.  It might be worth investigating if folks like the format that commit-log-editor produces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432255</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-07-05 06:33:50 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; &gt; Can we just invoke commit-log-editor?
&gt; 
&gt; By the way, we&apos;ve got enough infrastructure now that we might be able to use this approach.  It might be worth investigating if folks like the format that commit-log-editor produces.

Can you elaborate a bit? I&apos;d like to take a stab at fixing this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432413</commentid>
    <comment_count>17</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-05 14:46:07 -0700</bug_when>
    <thetext>&gt; Can you elaborate a bit? I&apos;d like to take a stab at fixing this.

aroben and I chatted a bit about this on IRC.  We talked about a couple different approaches.  Think the one that he seemed most interested in is to refactor commit-log-editor into two scripts: one the prints the commit message to stdout and another that interacts with SVN_EDITOR and svn.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432420</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-07-05 15:01:53 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; &gt; Can you elaborate a bit? I&apos;d like to take a stab at fixing this.
&gt; 
&gt; aroben and I chatted a bit about this on IRC.  We talked about a couple different approaches.  Think the one that he seemed most interested in is to refactor commit-log-editor into two scripts: one the prints the commit message to stdout and another that interacts with SVN_EDITOR and svn.

Or perhaps one script with two modes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433394</commentid>
    <comment_count>19</comment_count>
      <attachid>99967</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-07-07 05:31:00 -0700</bug_when>
    <thetext>Created attachment 99967
Extract commit-log-editor&apos;s commit-message-generation code into a separate function</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433395</commentid>
    <comment_count>20</comment_count>
      <attachid>99968</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-07-07 05:34:57 -0700</bug_when>
    <thetext>Created attachment 99968
Add a --print-log option to commit-log-editor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433469</commentid>
    <comment_count>21</comment_count>
      <attachid>99985</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-07-07 08:33:55 -0700</bug_when>
    <thetext>Created attachment 99985
Add a --print-log option to commit-log-editor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433473</commentid>
    <comment_count>22</comment_count>
      <attachid>99987</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-07-07 08:41:53 -0700</bug_when>
    <thetext>Created attachment 99987
Teach webkitpy&apos;s Checkout class to use commit-log-editor to create commit messages</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433474</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-07 08:45:05 -0700</bug_when>
    <thetext>Attachment 99987 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/Scripts/webkitpy...&quot; exit_code: 1

Tools/Scripts/webkitpy/common/checkout/checkout_unittest.py:87:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/common/checkout/checkout_unittest.py:94:  trailing whitespace  [pep8/W291] [5]
Tools/Scripts/webkitpy/common/checkout/checkout_unittest.py:123:  expected 1 blank line, found 0  [pep8/E301] [5]
Total errors found: 3 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433479</commentid>
    <comment_count>24</comment_count>
      <attachid>99987</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-07-07 08:54:51 -0700</bug_when>
    <thetext>Comment on attachment 99987
Teach webkitpy&apos;s Checkout class to use commit-log-editor to create commit messages

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

&gt;&gt; Tools/Scripts/webkitpy/common/checkout/checkout_unittest.py:87
&gt;&gt; +Tools: 
&gt; 
&gt; trailing whitespace  [pep8/W291] [5]

This is required to match commit-log-editor&apos;s output. (We could change commit-log-editor not to output these extra spaces, but that should be done separately.)

&gt;&gt; Tools/Scripts/webkitpy/common/checkout/checkout_unittest.py:94
&gt;&gt; +LayoutTests: 
&gt; 
&gt; trailing whitespace  [pep8/W291] [5]

Ditto.

&gt;&gt; Tools/Scripts/webkitpy/common/checkout/checkout_unittest.py:123
&gt;&gt; +        def mock_script_path(script):
&gt; 
&gt; expected 1 blank line, found 0  [pep8/E301] [5]

I&apos;ll fix this locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433482</commentid>
    <comment_count>25</comment_count>
      <attachid>99967</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-07-07 08:57:49 -0700</bug_when>
    <thetext>Comment on attachment 99967
Extract commit-log-editor&apos;s commit-message-generation code into a separate function

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433486</commentid>
    <comment_count>26</comment_count>
      <attachid>99985</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-07-07 09:06:12 -0700</bug_when>
    <thetext>Comment on attachment 99985
Add a --print-log option to commit-log-editor

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

r=me, although consider fixing the exit issues.

&gt; Tools/Scripts/commit-log-editor:50
&gt;  sub usage

Consider renaming to printUsageAndExit() so it&apos;s more descriptive.

&gt; Tools/Scripts/commit-log-editor:73
&gt; +    exit !$getOptionsResult;

This exit doesn&apos;t do anything because usage() already exits.

&gt; Tools/Scripts/commit-log-editor:81
&gt; +        exit 1;

Ditto.

&gt; Tools/Scripts/commit-log-editor:84
&gt; +    exit;

&quot;exit 0;&quot; ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433491</commentid>
    <comment_count>27</comment_count>
      <attachid>99985</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-07-07 09:14:54 -0700</bug_when>
    <thetext>Comment on attachment 99985
Add a --print-log option to commit-log-editor

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

&gt;&gt; Tools/Scripts/commit-log-editor:50
&gt;&gt;  sub usage
&gt; 
&gt; Consider renaming to printUsageAndExit() so it&apos;s more descriptive.

Done.

&gt;&gt; Tools/Scripts/commit-log-editor:73
&gt;&gt; +    exit !$getOptionsResult;
&gt; 
&gt; This exit doesn&apos;t do anything because usage() already exits.

Good point! Removed.

&gt;&gt; Tools/Scripts/commit-log-editor:81
&gt;&gt; +        exit 1;
&gt; 
&gt; Ditto.

Removed.

&gt;&gt; Tools/Scripts/commit-log-editor:84
&gt;&gt; +    exit;
&gt; 
&gt; &quot;exit 0;&quot; ?

Sure, changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433507</commentid>
    <comment_count>28</comment_count>
      <attachid>99987</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-07-07 09:31:40 -0700</bug_when>
    <thetext>Comment on attachment 99987
Teach webkitpy&apos;s Checkout class to use commit-log-editor to create commit messages

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

r=me

&gt; Tools/Scripts/webkitpy/common/checkout/checkout_unittest.py:124
&gt; +            return os.path.abspath(os.path.join(os.path.dirname(__file__), &apos;..&apos;, &apos;..&apos;, &apos;..&apos;, script))

There isn&apos;t a better way to get the path to the Tools directory (during a test)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433510</commentid>
    <comment_count>29</comment_count>
      <attachid>99987</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-07-07 09:34:11 -0700</bug_when>
    <thetext>Comment on attachment 99987
Teach webkitpy&apos;s Checkout class to use commit-log-editor to create commit messages

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

&gt;&gt; Tools/Scripts/webkitpy/common/checkout/checkout_unittest.py:124
&gt;&gt; +            return os.path.abspath(os.path.join(os.path.dirname(__file__), &apos;..&apos;, &apos;..&apos;, &apos;..&apos;, script))
&gt; 
&gt; There isn&apos;t a better way to get the path to the Tools directory (during a test)?

Not that I know of. The SCM class knows how to find Tools/Scripts, but it bases it on the repository root, and we&apos;re operating in a fake repository here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433515</commentid>
    <comment_count>30</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-07-07 09:37:06 -0700</bug_when>
    <thetext>Committed r90564: &lt;http://trac.webkit.org/changeset/90564&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433585</commentid>
    <comment_count>31</comment_count>
      <attachid>99987</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-07 10:41:16 -0700</bug_when>
    <thetext>Comment on attachment 99987
Teach webkitpy&apos;s Checkout class to use commit-log-editor to create commit messages

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

&gt; Tools/Scripts/webkitpy/common/checkout/checkout.py:123
&gt; +        message_text = Executive().run_command([self._scm.script_path(&apos;commit-log-editor&apos;), &apos;--print-log&apos;] + changelog_paths, return_stderr=False)

This isn&apos;t correct.  You need to get the executive from the tool so that it is mocked out correctly in unit tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433589</commentid>
    <comment_count>32</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-07 10:45:15 -0700</bug_when>
    <thetext>@ddkilzer: This patch contains a couple architectural mistakes.  For example, grabbing the executive statically rather than using the dependency injection layer is a subtle but important violation of an invariant that we try to maintain across the entire codebase.

In the future, it might be better to give someone who works on webkitpy frequently a chance to look at a patch before landing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433593</commentid>
    <comment_count>33</comment_count>
      <attachid>99987</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-07-07 10:47:34 -0700</bug_when>
    <thetext>Comment on attachment 99987
Teach webkitpy&apos;s Checkout class to use commit-log-editor to create commit messages

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

&gt; Tools/Scripts/webkitpy/common/checkout/checkout_unittest.py:85
&gt; +    expected_commit_message = u&quot;&quot;&quot;Unreviewed build fix to un-break webkit-patch land.

Some of these intentionally contained unicode.  Do we still correctly support unicode commit messages?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433594</commentid>
    <comment_count>34</comment_count>
      <attachid>99987</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-07-07 10:49:08 -0700</bug_when>
    <thetext>Comment on attachment 99987
Teach webkitpy&apos;s Checkout class to use commit-log-editor to create commit messages

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

&gt;&gt; Tools/Scripts/webkitpy/common/checkout/checkout.py:123
&gt;&gt; +        message_text = Executive().run_command([self._scm.script_path(&apos;commit-log-editor&apos;), &apos;--print-log&apos;] + changelog_paths, return_stderr=False)
&gt; 
&gt; This isn&apos;t correct.  You need to get the executive from the tool so that it is mocked out correctly in unit tests.

This code is below the level of the tool. Using it here would be a layering violation, I believe. How do you suggest we make this work?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433595</commentid>
    <comment_count>35</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-07 10:52:25 -0700</bug_when>
    <thetext>&gt; This code is below the level of the tool. Using it here would be a layering violation, I believe. How do you suggest we make this work?

The tool has several layers.  For example, Checkout depends on SCM and SCM depends on Executive.  Checkout can either keep its own pointer to Executive or it can use the one that SCM has.  SCM initially gets that pointer from the tool when the tool is initialized.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433596</commentid>
    <comment_count>36</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-07-07 10:53:57 -0700</bug_when>
    <thetext>Looks like this broke test-webkitpy on the Gtk bot:
http://build.webkit.org/builders/GTK%20Linux%2064-bit%20Debug/builds/24078/steps/webkitpy-test/logs/stdio

It suspect you&apos;re using a real executive when you mean to use MockExecutive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433598</commentid>
    <comment_count>37</comment_count>
      <attachid>99987</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-07-07 10:55:20 -0700</bug_when>
    <thetext>Comment on attachment 99987
Teach webkitpy&apos;s Checkout class to use commit-log-editor to create commit messages

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

&gt;&gt;&gt; Tools/Scripts/webkitpy/common/checkout/checkout.py:123
&gt;&gt;&gt; +        message_text = Executive().run_command([self._scm.script_path(&apos;commit-log-editor&apos;), &apos;--print-log&apos;] + changelog_paths, return_stderr=False)
&gt;&gt; 
&gt;&gt; This isn&apos;t correct.  You need to get the executive from the tool so that it is mocked out correctly in unit tests.
&gt; 
&gt; This code is below the level of the tool. Using it here would be a layering violation, I believe. How do you suggest we make this work?

Note also that other code in this module uses the standalone run_command() function. I used Executive().run_command() because run_command() says to do that.

&gt;&gt; Tools/Scripts/webkitpy/common/checkout/checkout_unittest.py:85
&gt;&gt; +    expected_commit_message = u&quot;&quot;&quot;Unreviewed build fix to un-break webkit-patch land.
&gt; 
&gt; Some of these intentionally contained unicode.  Do we still correctly support unicode commit messages?

We do. I filed bug 64109 to prove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433600</commentid>
    <comment_count>38</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-07-07 10:57:19 -0700</bug_when>
    <thetext>(In reply to comment #35)
&gt; &gt; This code is below the level of the tool. Using it here would be a layering violation, I believe. How do you suggest we make this work?
&gt; 
&gt; The tool has several layers.  For example, Checkout depends on SCM and SCM depends on Executive.  Checkout can either keep its own pointer to Executive or it can use the one that SCM has.  SCM initially gets that pointer from the tool when the tool is initialized.

OK, I&apos;ll fix this in a separate bug. Sorry for the mess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433603</commentid>
    <comment_count>39</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-07-07 11:00:22 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; Looks like this broke test-webkitpy on the Gtk bot:
&gt; http://build.webkit.org/builders/GTK%20Linux%2064-bit%20Debug/builds/24078/steps/webkitpy-test/logs/stdio
&gt; 
&gt; It suspect you&apos;re using a real executive when you mean to use MockExecutive.

MockExecutive seems to be part of the tool module. Is it really OK to use that in code inside the common module?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433606</commentid>
    <comment_count>40</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-07 11:03:51 -0700</bug_when>
    <thetext>&gt; Note also that other code in this module uses the standalone run_command() function. I used Executive().run_command() because run_command() says to do that.

That code is also wrong.  :)

The code that calls the standalone run_command() function all dates from the beginning of webkitpy, before we had any testing and before we re-designed for testing.  Eventually we&apos;ll clean up this code to follow the same invariants as the rest of webkitpy, but that&apos;s not been a super high priority.

That said, we don&apos;t want to spread this bad pattern to more locations, and when touching any code with the bad pattern, we usually update it to be more modern.  I certainly understand why you wrote the patch the way you did.  This sort of thing is supposed to be flagged in the review process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433607</commentid>
    <comment_count>41</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-07 11:06:01 -0700</bug_when>
    <thetext>&gt; MockExecutive seems to be part of the tool module. Is it really OK to use that in code inside the common module?

MockExecutive should move into the common module.  If you don&apos;t want to do that in this patch, there&apos;s already MockExecutive2 in the common package, which is helpful for some kinds of tests.  (I&apos;m not entirely sure why we have two kinds of MockExecutives.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433608</commentid>
    <comment_count>42</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-07-07 11:07:28 -0700</bug_when>
    <thetext>(In reply to comment #41)
&gt; &gt; MockExecutive seems to be part of the tool module. Is it really OK to use that in code inside the common module?
&gt; 
&gt; MockExecutive should move into the common module.  If you don&apos;t want to do that in this patch, there&apos;s already MockExecutive2 in the common package, which is helpful for some kinds of tests.  (I&apos;m not entirely sure why we have two kinds of MockExecutives.)

Both MockExecutive and MockExecutive2 just return canned output. Is that really what we want?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433609</commentid>
    <comment_count>43</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-07 11:11:03 -0700</bug_when>
    <thetext>&gt; Both MockExecutive and MockExecutive2 just return canned output. Is that really what we want?

For most tests, yes.  If you specifically want to test integration with commit-log-editor, we can do that by explicitly passing a live Executive in the test.  Generally, we avoid unit tests that touch the real disk or spawn processes whenever possible.  We have a handful to make sure we continue to integrate correctly with external dependencies, but we don&apos;t need to test commit-log-editor exhaustively in test-webkitpy (we should just test that it works at all).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433624</commentid>
    <comment_count>44</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-07-07 11:41:53 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; Looks like this broke test-webkitpy on the Gtk bot:
&gt; http://build.webkit.org/builders/GTK%20Linux%2064-bit%20Debug/builds/24078/steps/webkitpy-test/logs/stdio

Bug 64113 will fix the GTK bot regardless of whether we end up using a real Executive or not in the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433632</commentid>
    <comment_count>45</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-07-07 11:55:53 -0700</bug_when>
    <thetext>(In reply to comment #43)
&gt; &gt; Both MockExecutive and MockExecutive2 just return canned output. Is that really what we want?
&gt; 
&gt; For most tests, yes.  If you specifically want to test integration with commit-log-editor, we can do that by explicitly passing a live Executive in the test.  Generally, we avoid unit tests that touch the real disk or spawn processes whenever possible.  We have a handful to make sure we continue to integrate correctly with external dependencies, but we don&apos;t need to test commit-log-editor exhaustively in test-webkitpy (we should just test that it works at all).

I think it makes sense to test the integration with commit-log-editor here. So here&apos;s my plan:

1) Make Checkout use SCM&apos;s Executive instance instead of conjuring one out of thin air
2) Make the mock SCM I create in the test use a real Executive instance

I&apos;ll file a new bug for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433633</commentid>
    <comment_count>46</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-07 11:58:06 -0700</bug_when>
    <thetext>Sounds like a good plan.  Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433635</commentid>
    <comment_count>47</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-07-07 12:00:59 -0700</bug_when>
    <thetext>(In reply to comment #45)
&gt; (In reply to comment #43)
&gt; &gt; &gt; Both MockExecutive and MockExecutive2 just return canned output. Is that really what we want?
&gt; &gt; 
&gt; &gt; For most tests, yes.  If you specifically want to test integration with commit-log-editor, we can do that by explicitly passing a live Executive in the test.  Generally, we avoid unit tests that touch the real disk or spawn processes whenever possible.  We have a handful to make sure we continue to integrate correctly with external dependencies, but we don&apos;t need to test commit-log-editor exhaustively in test-webkitpy (we should just test that it works at all).
&gt; 
&gt; I think it makes sense to test the integration with commit-log-editor here. So here&apos;s my plan:
&gt; 
&gt; 1) Make Checkout use SCM&apos;s Executive instance instead of conjuring one out of thin air
&gt; 2) Make the mock SCM I create in the test use a real Executive instance
&gt; 
&gt; I&apos;ll file a new bug for this.

Bug 64115.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433743</commentid>
    <comment_count>48</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-07-07 15:34:02 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; @ddkilzer: This patch contains a couple architectural mistakes.  For example, grabbing the executive statically rather than using the dependency injection layer is a subtle but important violation of an invariant that we try to maintain across the entire codebase.

Where is this documented?  How is it enforced (other than patch reviews)?  Where would one go to learn about this?  Does one need to read the entire webkitpy (test) codebase to soak up this knowledge?

&gt; In the future, it might be better to give someone who works on webkitpy frequently a chance to look at a patch before landing it.

Will do.  But I think it should be a goal of WebKit to make it easy to write tests (whether they&apos;re layout tests, webkitpy tests or webkitperl tests) so that more people can contribute without investing the better part of a day studying existing code for &quot;subtle invariants&quot; or requiring that one of only a handful of people review the patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433758</commentid>
    <comment_count>49</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-07 15:56:28 -0700</bug_when>
    <thetext>&gt; Where is this documented?

It&apos;s not document.

&gt; How is it enforced (other than patch reviews)?

It&apos;s enforced by patch reviews.

&gt; Where would one go to learn about this?

By writing patches for webkitpy and learning by interacting with reviewers.

&gt; Does one need to read the entire webkitpy (test) codebase to soak up this knowledge?

How does one soak up knowledge about other parts of the codebase?  We generally ask that folks be active contributors to an area of code before reviewing patches in that area.

&gt; Will do.  But I think it should be a goal of WebKit to make it easy to write tests (whether they&apos;re layout tests, webkitpy tests or webkitperl tests) so that more people can contribute without investing the better part of a day studying existing code for &quot;subtle invariants&quot; or requiring that one of only a handful of people review the patches.

That&apos;s what the review process is for.  The error is very easy to spot for folks who review and write code in this area often.  It&apos;s also easy to fix once spotted.  What&apos;s problematic is for folks to review patches in areas that they don&apos;t understand throughly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434061</commentid>
    <comment_count>50</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-07-08 08:23:02 -0700</bug_when>
    <thetext>(In reply to comment #49)
&gt; &gt; Will do.  But I think it should be a goal of WebKit to make it easy to write tests (whether they&apos;re layout tests, webkitpy tests or webkitperl tests) so that more people can contribute without investing the better part of a day studying existing code for &quot;subtle invariants&quot; or requiring that one of only a handful of people review the patches.
&gt; 
&gt; That&apos;s what the review process is for.  The error is very easy to spot for folks who review and write code in this area often.  It&apos;s also easy to fix once spotted.  What&apos;s problematic is for folks to review patches in areas that they don&apos;t understand throughly.

I think it would also be beneficial if these &quot;subtle invariants&quot; could be made more explicit through either assertions (assuming Python has such a mechanism; maybe throwing exceptions?) or changes in the structure of the code to make it much harder to write incorrect code (which is likely harder in an interpreted scripting language than C++, but maybe still possible?).

Such changes would also decrease the amount of time it takes to explain these concepts when someone wants to contribute to the tools, since new tests would break immediately in a working copy if they violated the invariants.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>434064</commentid>
    <comment_count>51</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-08 08:36:09 -0700</bug_when>
    <thetext>I don&apos;t think that&apos;s possible in this case, but if it is, please let me know how!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435110</commentid>
    <comment_count>52</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-07-11 12:20:48 -0700</bug_when>
    <thetext>I notice that the ChangeLog entries on trac.webkit.org after r90564 seem to no longer be pretty-printed (ie., no indentation, no * -&gt; bullets, etc).  Is it possible this change introduced a regression in that functionality?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435114</commentid>
    <comment_count>53</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-07-11 12:23:19 -0700</bug_when>
    <thetext>(In reply to comment #52)
&gt; I notice that the ChangeLog entries on trac.webkit.org after r90564 seem to no longer be pretty-printed (ie., no indentation, no * -&gt; bullets, etc).  Is it possible this change introduced a regression in that functionality?

That is most definitely caused by this change. The lack of indentation is supposed to be a feature, not a bug, and is also what leads to * not being turned into a bullet. Maybe there&apos;s some better commit message format we can use, or maybe we can modify Trac to understand our commit messages better? I encourage you to file a new bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435123</commentid>
    <comment_count>54</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-07-11 12:32:24 -0700</bug_when>
    <thetext>(In reply to comment #53)
&gt; (In reply to comment #52)
&gt; &gt; I notice that the ChangeLog entries on trac.webkit.org after r90564 seem to no longer be pretty-printed (ie., no indentation, no * -&gt; bullets, etc).  Is it possible this change introduced a regression in that functionality?
&gt; 
&gt; That is most definitely caused by this change. The lack of indentation is supposed to be a feature, not a bug, and is also what leads to * not being turned into a bullet. Maybe there&apos;s some better commit message format we can use, or maybe we can modify Trac to understand our commit messages better? I encourage you to file a new bug.

Done; filed as https://bugs.webkit.org/show_bug.cgi?id=64307.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44296</attachid>
            <date>2009-12-03 23:53:06 -0800</date>
            <delta_ts>2009-12-04 00:40:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-26755-20091203235305.patch</filename>
            <type>text/plain</type>
            <size>6454</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAyZDM2YTkzLi5mMGUwN2M2IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMDktMTIt
MDMgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBidWd6aWxsYS10b29sJ3MgY29tbWl0IG1lc3Nh
Z2VzIGFyZSBsYWNraW5nIGZvciBwYXRjaGVzIHdpdGggbXVsdGlwbGUgQ2hhbmdlTG9ncworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY3NTUKKworICAg
ICAgICBUaGlzIGNoYW5nZSBpcyBhIGJpdCBvZiBhIGhhY2ssIGJ1dCBNYXJrIFJvd2Ugd291bGQg
bGlrZSBidWd6aWxsYS10b29sCisgICAgICAgIHRvIGhhdmUgdGhlIHNhbWUgc3R5bGUgb2YgY29t
bWl0IG1lc3NhZ2VzIGFzIGNvbW1pdC1sb2ctZWRpdG9yLiAgSW4gdGhlCisgICAgICAgIGxvbmcg
dGVybSwgd2Ugc2hvdWxkIHJlLWZhY3RvciBjb21taXQtbG9nLWVkaXRvciB0byBiZSBtb3JlIHVu
aXgtbGlrZQorICAgICAgICAoaWRlYWxseSB0cmFuc2Zvcm0gc3RkaW4gdG8gYSBjb21taXQgbWVz
c2FnZSBvbiBzdGRvdXQpLiAgSW4gdGhlCisgICAgICAgIG1lYW50aW1lLCB3ZSBjYW4gdHdpZGRs
ZSB3aXRoIG91ciBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gc2ltdWxhdGUKKyAgICAgICAgY2Fs
bGluZyB0aGUgY29tbWl0LWxvZy1lZGl0b3IgdGhlIHdheSBodW1hbnMgZG8uCisKKyAgICAgICAg
KiBTY3JpcHRzL21vZHVsZXMvbGFuZGluZ3NlcXVlbmNlLnB5OgorICAgICAgICAqIFNjcmlwdHMv
bW9kdWxlcy9zY20ucHk6CisgICAgICAgICogU2NyaXB0cy9tb2R1bGVzL3dlYmtpdHBvcnQucHk6
CisKIDIwMDktMTItMDMgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvbW9kdWxlcy9sYW5kaW5nc2VxdWVuY2UucHkgYi9XZWJLaXRUb29scy9TY3JpcHRz
L21vZHVsZXMvbGFuZGluZ3NlcXVlbmNlLnB5CmluZGV4IGVjYjIzMWUuLmQ4OTgzMzEgMTAwNjQ0
Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9sYW5kaW5nc2VxdWVuY2UucHkKKysr
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2xhbmRpbmdzZXF1ZW5jZS5weQpAQCAtOTQs
OCArOTQsNyBAQCBjbGFzcyBMYW5kaW5nU2VxdWVuY2U6CiAgICAgICAgIHNlbGYuX3Rvb2wuc3Rl
cHMucnVuX3Rlc3RzKGxhdW5jaF9zYWZhcmk9bm90IHNlbGYuX29wdGlvbnMubm9uX2ludGVyYWN0
aXZlLCBmYWlsX2Zhc3Q9c2VsZi5fb3B0aW9ucy5ub25faW50ZXJhY3RpdmUsIHF1aWV0PXNlbGYu
X29wdGlvbnMucXVpZXQsIHBvcnQ9c2VsZi5fcG9ydCkKIAogICAgIGRlZiBjb21taXQoc2VsZik6
Ci0gICAgICAgIGNvbW1pdF9tZXNzYWdlID0gc2VsZi5fdG9vbC5zY20oKS5jb21taXRfbWVzc2Fn
ZV9mb3JfdGhpc19jb21taXQoKQotICAgICAgICByZXR1cm4gc2VsZi5fdG9vbC5zY20oKS5jb21t
aXRfd2l0aF9tZXNzYWdlKGNvbW1pdF9tZXNzYWdlLm1lc3NhZ2UoKSkKKyAgICAgICAgcmV0dXJu
IHNlbGYuX3Rvb2wuc2NtKCkuY29tbWl0X3dpdGhfbG9nX2VkaXRvcihzZWxmLl9wb3J0LmNvbW1p
dF9sb2dfZWRpdG9yX2NvbW1hbmQoKVswXSkKIAogICAgIGRlZiBjbG9zZV9wYXRjaChzZWxmLCBj
b21taXRfbG9nKToKICAgICAgICAgY29tbWVudF90ZXh0ID0gYnVnX2NvbW1lbnRfZnJvbV9jb21t
aXRfdGV4dChzZWxmLl90b29sLnNjbSgpLCBjb21taXRfbG9nKQpkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy9tb2R1bGVzL3NjbS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxl
cy9zY20ucHkKaW5kZXggYmViMzJkZi4uMWU1MjRjMSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy9tb2R1bGVzL3NjbS5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMv
c2NtLnB5CkBAIC0xMjQsNyArMTI0LDcgQEAgY2xhc3MgU0NNOgogICAgICAgICBzZWxmLmRyeXJ1
biA9IGRyeXJ1bgogCiAgICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBydW5fY29tbWFuZChhcmdz
LCBjd2Q9Tm9uZSwgaW5wdXQ9Tm9uZSwgZXJyb3JfaGFuZGxlcj1kZWZhdWx0X2Vycm9yX2hhbmRs
ZXIsIHJldHVybl9leGl0X2NvZGU9RmFsc2UsIHJldHVybl9zdGRlcnI9VHJ1ZSk6CisgICAgZGVm
IHJ1bl9jb21tYW5kKGFyZ3MsIGN3ZD1Ob25lLCBpbnB1dD1Ob25lLCBlcnJvcl9oYW5kbGVyPWRl
ZmF1bHRfZXJyb3JfaGFuZGxlciwgcmV0dXJuX2V4aXRfY29kZT1GYWxzZSwgcmV0dXJuX3N0ZGVy
cj1UcnVlLCBlbnY9Tm9uZSk6CiAgICAgICAgIGlmIGhhc2F0dHIoaW5wdXQsICdyZWFkJyk6ICMg
Q2hlY2sgaWYgdGhlIGlucHV0IGlzIGEgZmlsZS4KICAgICAgICAgICAgIHN0ZGluID0gaW5wdXQK
ICAgICAgICAgICAgIHN0cmluZ190b19jb21tdW5pY2F0ZSA9IE5vbmUKQEAgLTEzNSw3ICsxMzUs
NyBAQCBjbGFzcyBTQ006CiAgICAgICAgICAgICBzdGRlcnIgPSBzdWJwcm9jZXNzLlNURE9VVAog
ICAgICAgICBlbHNlOgogICAgICAgICAgICAgc3RkZXJyID0gTm9uZQotICAgICAgICBwcm9jZXNz
ID0gc3VicHJvY2Vzcy5Qb3BlbihhcmdzLCBzdGRpbj1zdGRpbiwgc3Rkb3V0PXN1YnByb2Nlc3Mu
UElQRSwgc3RkZXJyPXN0ZGVyciwgY3dkPWN3ZCkKKyAgICAgICAgcHJvY2VzcyA9IHN1YnByb2Nl
c3MuUG9wZW4oYXJncywgc3RkaW49c3RkaW4sIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVy
cj1zdGRlcnIsIGN3ZD1jd2QsIGVudj1lbnYpCiAgICAgICAgIG91dHB1dCA9IHByb2Nlc3MuY29t
bXVuaWNhdGUoc3RyaW5nX3RvX2NvbW11bmljYXRlKVswXQogICAgICAgICBleGl0X2NvZGUgPSBw
cm9jZXNzLndhaXQoKQogICAgICAgICBpZiBleGl0X2NvZGU6CkBAIC0yNzgsNiArMjc4LDkgQEAg
Y2xhc3MgU0NNOgogICAgIGRlZiBjb21taXRfd2l0aF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UpOgog
ICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCAic3ViY2xhc3NlcyBtdXN0IGltcGxl
bWVudCIKIAorICAgIGRlZiBjb21taXRfd2l0aF9sb2dfZWRpdG9yKHNlbGYsIHBhdGhfdG9fZWRp
dG9yKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVz
dCBpbXBsZW1lbnQiCisKICAgICBkZWYgc3ZuX2NvbW1pdF9sb2coc2VsZiwgc3ZuX3JldmlzaW9u
KToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBp
bXBsZW1lbnQiCiAKQEAgLTI5OSw2ICszMDIsOSBAQCBjbGFzcyBTQ006CiAgICAgZGVmIGNvbW1p
dF9sb2NhbGx5X3dpdGhfbWVzc2FnZShzZWxmLCBtZXNzYWdlKToKICAgICAgICAgZXJyb3IoIllv
dXIgc291cmNlIGNvbnRyb2wgbWFuYWdlciBkb2VzIG5vdCBzdXBwb3J0IGxvY2FsIGNvbW1pdHMu
IikKIAorICAgIGRlZiBjb21taXRfbG9jYWxseV93aXRoX2xvZ19lZGl0b3Ioc2VsZiwgcGF0aF90
b19lZGl0b3IpOgorICAgICAgICBlcnJvcigiWW91ciBzb3VyY2UgY29udHJvbCBtYW5hZ2VyIGRv
ZXMgbm90IHN1cHBvcnQgbG9jYWwgY29tbWl0cy4iKQorCiAgICAgZGVmIGRpc2NhcmRfbG9jYWxf
Y29tbWl0cyhzZWxmKToKICAgICAgICAgcGFzcwogCkBAIC00MDcsNiArNDEzLDE1IEBAIGNsYXNz
IFNWTihTQ00pOgogICAgICAgICAgICAgcmV0dXJuICJEcnkgcnVuLCBubyBjb21taXQuXG5Db21t
aXR0ZWQgcmV2aXNpb24gMC4iCiAgICAgICAgIHJldHVybiBzZWxmLnJ1bl9jb21tYW5kKFsnc3Zu
JywgJ2NvbW1pdCcsICctbScsIG1lc3NhZ2VdLCBlcnJvcl9oYW5kbGVyPWNvbW1pdF9lcnJvcl9o
YW5kbGVyKQogCisgICAgZGVmIGNvbW1pdF93aXRoX2xvZ19lZGl0b3Ioc2VsZiwgcGF0aF90b19l
ZGl0b3IpOgorICAgICAgICBpZiBzZWxmLmRyeXJ1bjoKKyAgICAgICAgICAgICMgUmV0dXJuIGEg
c3RyaW5nIHdoaWNoIGxvb2tzIGxpa2UgYSBjb21taXQgc28gdGhhdCB0aGluZ3Mgd2hpY2ggcGFy
c2UgdGhpcyBvdXRwdXQgd2lsbCBzdWNjZWVkLgorICAgICAgICAgICAgcmV0dXJuICJEcnkgcnVu
LCBubyBjb21taXQuXG5Db21taXR0ZWQgcmV2aXNpb24gMC4iCisgICAgICAgIGV2biA9IG9zLmVu
dmlyb24uY29weSgpCisgICAgICAgIGVudlsiU1ZOX0VESVRPUiJdID0gcGF0aF90b19lZGl0b3IK
KyAgICAgICAgZXZuWyJTVk5fTE9HX0VESVRPUiJdID0gImNhdCIgIyBUaGlzIGlzIGJyZWFrcyB0
aGUgYWJzdHJhY3Rpb24gb2Ygbm90IGtub3dpbmcgaG93IHRoZSBlZGl0b3Igd29ya3MuCisgICAg
ICAgIHJldHVybiBzZWxmLnJ1bl9jb21tYW5kKFsnc3ZuJywgJ2NvbW1pdCddLCBlbnY9ZW52LCBl
cnJvcl9oYW5kbGVyPWNvbW1pdF9lcnJvcl9oYW5kbGVyKQorCiAgICAgZGVmIHN2bl9jb21taXRf
bG9nKHNlbGYsIHN2bl9yZXZpc2lvbik6CiAgICAgICAgIHN2bl9yZXZpc2lvbiA9IHNlbGYuc3Ry
aXBfcl9mcm9tX3N2bl9yZXZpc2lvbihzdHIoc3ZuX3JldmlzaW9uKSkKICAgICAgICAgcmV0dXJu
IHNlbGYucnVuX2NvbW1hbmQoWydzdm4nLCAnbG9nJywgJy0tbm9uLWludGVyYWN0aXZlJywgJy0t
cmV2aXNpb24nLCBzdm5fcmV2aXNpb25dKTsKQEAgLTUxMiw2ICs1MjcsMTAgQEAgY2xhc3MgR2l0
KFNDTSk6CiAgICAgICAgIHNlbGYuY29tbWl0X2xvY2FsbHlfd2l0aF9tZXNzYWdlKG1lc3NhZ2Up
CiAgICAgICAgIHJldHVybiBzZWxmLnB1c2hfbG9jYWxfY29tbWl0c190b19zZXJ2ZXIoKQogCisg
ICAgZGVmIGNvbW1pdF93aXRoX2xvZ19lZGl0b3Ioc2VsZiwgcGF0aF90b19lZGl0b3IpOgorICAg
ICAgICBzZWxmLmNvbW1pdF9sb2NhbGx5X3dpdGhfbG9nX2VkaXRvcihwYXRoX3RvX2VkaXRvcikK
KyAgICAgICAgcmV0dXJuIHNlbGYucHVzaF9sb2NhbF9jb21taXRzX3RvX3NlcnZlcigpCisKICAg
ICBkZWYgc3ZuX2NvbW1pdF9sb2coc2VsZiwgc3ZuX3JldmlzaW9uKToKICAgICAgICAgc3ZuX3Jl
dmlzaW9uID0gc2VsZi5zdHJpcF9yX2Zyb21fc3ZuX3JldmlzaW9uKHN2bl9yZXZpc2lvbikKICAg
ICAgICAgcmV0dXJuIHNlbGYucnVuX2NvbW1hbmQoWydnaXQnLCAnc3ZuJywgJ2xvZycsICctcics
IHN2bl9yZXZpc2lvbl0pCkBAIC01MjksNyArNTQ4LDEzIEBAIGNsYXNzIEdpdChTQ00pOgogCiAg
ICAgZGVmIGNvbW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZShzZWxmLCBtZXNzYWdlKToKICAgICAg
ICAgc2VsZi5ydW5fY29tbWFuZChbJ2dpdCcsICdjb21taXQnLCAnLS1hbGwnLCAnLUYnLCAnLSdd
LCBpbnB1dD1tZXNzYWdlKQotICAgICAgICAKKworICAgIGRlZiBjb21taXRfbG9jYWxseV93aXRo
X2xvZ19lZGl0b3Ioc2VsZiwgcGF0aF90b19lZGl0b3IpOgorICAgICAgICBlbnYgPSBvcy5lbnZp
cm9uLmNvcHkoKQorICAgICAgICBlbnZbIkdJVF9FRElUT1IiXSA9IHBhdGhfdG9fZWRpdG9yCisg
ICAgICAgIGVudlsiU1ZOX0xPR19FRElUT1IiXSA9ICJjYXQiICMgVGhpcyBpcyBicmVha3MgdGhl
IGFic3RyYWN0aW9uIG9mIG5vdCBrbm93aW5nIGhvdyB0aGUgZWRpdG9yIHdvcmtzLgorICAgICAg
ICBzZWxmLnJ1bl9jb21tYW5kKFsnZ2l0JywgJ2NvbW1pdCcsICctLWFsbCddLCBlbnY9ZW52KQor
CiAgICAgZGVmIHB1c2hfbG9jYWxfY29tbWl0c190b19zZXJ2ZXIoc2VsZik6CiAgICAgICAgIGlm
IHNlbGYuZHJ5cnVuOgogICAgICAgICAgICAgIyBSZXR1cm4gYSBzdHJpbmcgd2hpY2ggbG9va3Mg
bGlrZSBhIGNvbW1pdCBzbyB0aGF0IHRoaW5ncyB3aGljaCBwYXJzZSB0aGlzIG91dHB1dCB3aWxs
IHN1Y2NlZWQuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvd2Via2l0
cG9ydC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy93ZWJraXRwb3J0LnB5CmluZGV4
IGE1MjRiYzYuLmI4NWJmYzAgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxl
cy93ZWJraXRwb3J0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy93ZWJraXRw
b3J0LnB5CkBAIC02OSw2ICs2OSwxMCBAQCBjbGFzcyBXZWJLaXRQb3J0KCk6CiAgICAgZGVmIGJ1
aWxkX3dlYmtpdF9jb21tYW5kKGNscyk6CiAgICAgICAgIHJldHVybiBbY2xzLnNjcmlwdF9wYXRo
KCJidWlsZC13ZWJraXQiKV0KIAorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBjb21taXRfbG9n
X2VkaXRvcl9jb21tYW5kKGNscyk6CisgICAgICAgIHJldHVybiBbY2xzLnNjcmlwdF9wYXRoKCJj
b21taXQtbG9nLWVkaXRvciIpXQorCiAKIGNsYXNzIE1hY1BvcnQoV2ViS2l0UG9ydCk6CiAgICAg
QGNsYXNzbWV0aG9kCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44297</attachid>
            <date>2009-12-04 00:40:22 -0800</date>
            <delta_ts>2011-07-07 05:30:55 -0700</delta_ts>
            <desc>Work in progress with unit test</desc>
            <filename>bug-26755-20091204004021.patch</filename>
            <type>text/plain</type>
            <size>9247</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAyZDM2YTkzLi5mMGUwN2M2IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMDktMTIt
MDMgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBidWd6aWxsYS10b29sJ3MgY29tbWl0IG1lc3Nh
Z2VzIGFyZSBsYWNraW5nIGZvciBwYXRjaGVzIHdpdGggbXVsdGlwbGUgQ2hhbmdlTG9ncworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY3NTUKKworICAg
ICAgICBUaGlzIGNoYW5nZSBpcyBhIGJpdCBvZiBhIGhhY2ssIGJ1dCBNYXJrIFJvd2Ugd291bGQg
bGlrZSBidWd6aWxsYS10b29sCisgICAgICAgIHRvIGhhdmUgdGhlIHNhbWUgc3R5bGUgb2YgY29t
bWl0IG1lc3NhZ2VzIGFzIGNvbW1pdC1sb2ctZWRpdG9yLiAgSW4gdGhlCisgICAgICAgIGxvbmcg
dGVybSwgd2Ugc2hvdWxkIHJlLWZhY3RvciBjb21taXQtbG9nLWVkaXRvciB0byBiZSBtb3JlIHVu
aXgtbGlrZQorICAgICAgICAoaWRlYWxseSB0cmFuc2Zvcm0gc3RkaW4gdG8gYSBjb21taXQgbWVz
c2FnZSBvbiBzdGRvdXQpLiAgSW4gdGhlCisgICAgICAgIG1lYW50aW1lLCB3ZSBjYW4gdHdpZGRs
ZSB3aXRoIG91ciBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gc2ltdWxhdGUKKyAgICAgICAgY2Fs
bGluZyB0aGUgY29tbWl0LWxvZy1lZGl0b3IgdGhlIHdheSBodW1hbnMgZG8uCisKKyAgICAgICAg
KiBTY3JpcHRzL21vZHVsZXMvbGFuZGluZ3NlcXVlbmNlLnB5OgorICAgICAgICAqIFNjcmlwdHMv
bW9kdWxlcy9zY20ucHk6CisgICAgICAgICogU2NyaXB0cy9tb2R1bGVzL3dlYmtpdHBvcnQucHk6
CisKIDIwMDktMTItMDMgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvbW9kdWxlcy9sYW5kaW5nc2VxdWVuY2UucHkgYi9XZWJLaXRUb29scy9TY3JpcHRz
L21vZHVsZXMvbGFuZGluZ3NlcXVlbmNlLnB5CmluZGV4IGVjYjIzMWUuLmQ4OTgzMzEgMTAwNjQ0
Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9sYW5kaW5nc2VxdWVuY2UucHkKKysr
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2xhbmRpbmdzZXF1ZW5jZS5weQpAQCAtOTQs
OCArOTQsNyBAQCBjbGFzcyBMYW5kaW5nU2VxdWVuY2U6CiAgICAgICAgIHNlbGYuX3Rvb2wuc3Rl
cHMucnVuX3Rlc3RzKGxhdW5jaF9zYWZhcmk9bm90IHNlbGYuX29wdGlvbnMubm9uX2ludGVyYWN0
aXZlLCBmYWlsX2Zhc3Q9c2VsZi5fb3B0aW9ucy5ub25faW50ZXJhY3RpdmUsIHF1aWV0PXNlbGYu
X29wdGlvbnMucXVpZXQsIHBvcnQ9c2VsZi5fcG9ydCkKIAogICAgIGRlZiBjb21taXQoc2VsZik6
Ci0gICAgICAgIGNvbW1pdF9tZXNzYWdlID0gc2VsZi5fdG9vbC5zY20oKS5jb21taXRfbWVzc2Fn
ZV9mb3JfdGhpc19jb21taXQoKQotICAgICAgICByZXR1cm4gc2VsZi5fdG9vbC5zY20oKS5jb21t
aXRfd2l0aF9tZXNzYWdlKGNvbW1pdF9tZXNzYWdlLm1lc3NhZ2UoKSkKKyAgICAgICAgcmV0dXJu
IHNlbGYuX3Rvb2wuc2NtKCkuY29tbWl0X3dpdGhfbG9nX2VkaXRvcihzZWxmLl9wb3J0LmNvbW1p
dF9sb2dfZWRpdG9yX2NvbW1hbmQoKVswXSkKIAogICAgIGRlZiBjbG9zZV9wYXRjaChzZWxmLCBj
b21taXRfbG9nKToKICAgICAgICAgY29tbWVudF90ZXh0ID0gYnVnX2NvbW1lbnRfZnJvbV9jb21t
aXRfdGV4dChzZWxmLl90b29sLnNjbSgpLCBjb21taXRfbG9nKQpkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy9tb2R1bGVzL3NjbS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxl
cy9zY20ucHkKaW5kZXggYmViMzJkZi4uOTRhNWUzMSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy9tb2R1bGVzL3NjbS5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMv
c2NtLnB5CkBAIC0xMjQsNyArMTI0LDcgQEAgY2xhc3MgU0NNOgogICAgICAgICBzZWxmLmRyeXJ1
biA9IGRyeXJ1bgogCiAgICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBydW5fY29tbWFuZChhcmdz
LCBjd2Q9Tm9uZSwgaW5wdXQ9Tm9uZSwgZXJyb3JfaGFuZGxlcj1kZWZhdWx0X2Vycm9yX2hhbmRs
ZXIsIHJldHVybl9leGl0X2NvZGU9RmFsc2UsIHJldHVybl9zdGRlcnI9VHJ1ZSk6CisgICAgZGVm
IHJ1bl9jb21tYW5kKGFyZ3MsIGN3ZD1Ob25lLCBpbnB1dD1Ob25lLCBlcnJvcl9oYW5kbGVyPWRl
ZmF1bHRfZXJyb3JfaGFuZGxlciwgcmV0dXJuX2V4aXRfY29kZT1GYWxzZSwgcmV0dXJuX3N0ZGVy
cj1UcnVlLCBlbnY9Tm9uZSk6CiAgICAgICAgIGlmIGhhc2F0dHIoaW5wdXQsICdyZWFkJyk6ICMg
Q2hlY2sgaWYgdGhlIGlucHV0IGlzIGEgZmlsZS4KICAgICAgICAgICAgIHN0ZGluID0gaW5wdXQK
ICAgICAgICAgICAgIHN0cmluZ190b19jb21tdW5pY2F0ZSA9IE5vbmUKQEAgLTEzNSw3ICsxMzUs
NyBAQCBjbGFzcyBTQ006CiAgICAgICAgICAgICBzdGRlcnIgPSBzdWJwcm9jZXNzLlNURE9VVAog
ICAgICAgICBlbHNlOgogICAgICAgICAgICAgc3RkZXJyID0gTm9uZQotICAgICAgICBwcm9jZXNz
ID0gc3VicHJvY2Vzcy5Qb3BlbihhcmdzLCBzdGRpbj1zdGRpbiwgc3Rkb3V0PXN1YnByb2Nlc3Mu
UElQRSwgc3RkZXJyPXN0ZGVyciwgY3dkPWN3ZCkKKyAgICAgICAgcHJvY2VzcyA9IHN1YnByb2Nl
c3MuUG9wZW4oYXJncywgc3RkaW49c3RkaW4sIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVy
cj1zdGRlcnIsIGN3ZD1jd2QsIGVudj1lbnYpCiAgICAgICAgIG91dHB1dCA9IHByb2Nlc3MuY29t
bXVuaWNhdGUoc3RyaW5nX3RvX2NvbW11bmljYXRlKVswXQogICAgICAgICBleGl0X2NvZGUgPSBw
cm9jZXNzLndhaXQoKQogICAgICAgICBpZiBleGl0X2NvZGU6CkBAIC0yNzgsNiArMjc4LDkgQEAg
Y2xhc3MgU0NNOgogICAgIGRlZiBjb21taXRfd2l0aF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UpOgog
ICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCAic3ViY2xhc3NlcyBtdXN0IGltcGxl
bWVudCIKIAorICAgIGRlZiBjb21taXRfd2l0aF9sb2dfZWRpdG9yKHNlbGYsIHBhdGhfdG9fZWRp
dG9yKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVz
dCBpbXBsZW1lbnQiCisKICAgICBkZWYgc3ZuX2NvbW1pdF9sb2coc2VsZiwgc3ZuX3JldmlzaW9u
KToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBp
bXBsZW1lbnQiCiAKQEAgLTI5OSw2ICszMDIsOSBAQCBjbGFzcyBTQ006CiAgICAgZGVmIGNvbW1p
dF9sb2NhbGx5X3dpdGhfbWVzc2FnZShzZWxmLCBtZXNzYWdlKToKICAgICAgICAgZXJyb3IoIllv
dXIgc291cmNlIGNvbnRyb2wgbWFuYWdlciBkb2VzIG5vdCBzdXBwb3J0IGxvY2FsIGNvbW1pdHMu
IikKIAorICAgIGRlZiBjb21taXRfbG9jYWxseV93aXRoX2xvZ19lZGl0b3Ioc2VsZiwgcGF0aF90
b19lZGl0b3IpOgorICAgICAgICBlcnJvcigiWW91ciBzb3VyY2UgY29udHJvbCBtYW5hZ2VyIGRv
ZXMgbm90IHN1cHBvcnQgbG9jYWwgY29tbWl0cy4iKQorCiAgICAgZGVmIGRpc2NhcmRfbG9jYWxf
Y29tbWl0cyhzZWxmKToKICAgICAgICAgcGFzcwogCkBAIC00MDcsNiArNDEzLDE1IEBAIGNsYXNz
IFNWTihTQ00pOgogICAgICAgICAgICAgcmV0dXJuICJEcnkgcnVuLCBubyBjb21taXQuXG5Db21t
aXR0ZWQgcmV2aXNpb24gMC4iCiAgICAgICAgIHJldHVybiBzZWxmLnJ1bl9jb21tYW5kKFsnc3Zu
JywgJ2NvbW1pdCcsICctbScsIG1lc3NhZ2VdLCBlcnJvcl9oYW5kbGVyPWNvbW1pdF9lcnJvcl9o
YW5kbGVyKQogCisgICAgZGVmIGNvbW1pdF93aXRoX2xvZ19lZGl0b3Ioc2VsZiwgcGF0aF90b19l
ZGl0b3IpOgorICAgICAgICBpZiBzZWxmLmRyeXJ1bjoKKyAgICAgICAgICAgICMgUmV0dXJuIGEg
c3RyaW5nIHdoaWNoIGxvb2tzIGxpa2UgYSBjb21taXQgc28gdGhhdCB0aGluZ3Mgd2hpY2ggcGFy
c2UgdGhpcyBvdXRwdXQgd2lsbCBzdWNjZWVkLgorICAgICAgICAgICAgcmV0dXJuICJEcnkgcnVu
LCBubyBjb21taXQuXG5Db21taXR0ZWQgcmV2aXNpb24gMC4iCisgICAgICAgIGVudiA9IG9zLmVu
dmlyb24uY29weSgpCisgICAgICAgIGVudlsiU1ZOX0VESVRPUiJdID0gcGF0aF90b19lZGl0b3IK
KyAgICAgICAgZXZuWyJTVk5fTE9HX0VESVRPUiJdID0gImNhdCIgIyBUaGlzIGlzIGJyZWFrcyB0
aGUgYWJzdHJhY3Rpb24gb2Ygbm90IGtub3dpbmcgaG93IHRoZSBlZGl0b3Igd29ya3MuCisgICAg
ICAgIHJldHVybiBzZWxmLnJ1bl9jb21tYW5kKFsnc3ZuJywgJ2NvbW1pdCddLCBlbnY9ZW52LCBl
cnJvcl9oYW5kbGVyPWNvbW1pdF9lcnJvcl9oYW5kbGVyKQorCiAgICAgZGVmIHN2bl9jb21taXRf
bG9nKHNlbGYsIHN2bl9yZXZpc2lvbik6CiAgICAgICAgIHN2bl9yZXZpc2lvbiA9IHNlbGYuc3Ry
aXBfcl9mcm9tX3N2bl9yZXZpc2lvbihzdHIoc3ZuX3JldmlzaW9uKSkKICAgICAgICAgcmV0dXJu
IHNlbGYucnVuX2NvbW1hbmQoWydzdm4nLCAnbG9nJywgJy0tbm9uLWludGVyYWN0aXZlJywgJy0t
cmV2aXNpb24nLCBzdm5fcmV2aXNpb25dKTsKQEAgLTUxMiw2ICs1MjcsMTAgQEAgY2xhc3MgR2l0
KFNDTSk6CiAgICAgICAgIHNlbGYuY29tbWl0X2xvY2FsbHlfd2l0aF9tZXNzYWdlKG1lc3NhZ2Up
CiAgICAgICAgIHJldHVybiBzZWxmLnB1c2hfbG9jYWxfY29tbWl0c190b19zZXJ2ZXIoKQogCisg
ICAgZGVmIGNvbW1pdF93aXRoX2xvZ19lZGl0b3Ioc2VsZiwgcGF0aF90b19lZGl0b3IpOgorICAg
ICAgICBzZWxmLmNvbW1pdF9sb2NhbGx5X3dpdGhfbG9nX2VkaXRvcihwYXRoX3RvX2VkaXRvcikK
KyAgICAgICAgcmV0dXJuIHNlbGYucHVzaF9sb2NhbF9jb21taXRzX3RvX3NlcnZlcigpCisKICAg
ICBkZWYgc3ZuX2NvbW1pdF9sb2coc2VsZiwgc3ZuX3JldmlzaW9uKToKICAgICAgICAgc3ZuX3Jl
dmlzaW9uID0gc2VsZi5zdHJpcF9yX2Zyb21fc3ZuX3JldmlzaW9uKHN2bl9yZXZpc2lvbikKICAg
ICAgICAgcmV0dXJuIHNlbGYucnVuX2NvbW1hbmQoWydnaXQnLCAnc3ZuJywgJ2xvZycsICctcics
IHN2bl9yZXZpc2lvbl0pCkBAIC01MjksNyArNTQ4LDEzIEBAIGNsYXNzIEdpdChTQ00pOgogCiAg
ICAgZGVmIGNvbW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZShzZWxmLCBtZXNzYWdlKToKICAgICAg
ICAgc2VsZi5ydW5fY29tbWFuZChbJ2dpdCcsICdjb21taXQnLCAnLS1hbGwnLCAnLUYnLCAnLSdd
LCBpbnB1dD1tZXNzYWdlKQotICAgICAgICAKKworICAgIGRlZiBjb21taXRfbG9jYWxseV93aXRo
X2xvZ19lZGl0b3Ioc2VsZiwgcGF0aF90b19lZGl0b3IpOgorICAgICAgICBlbnYgPSBvcy5lbnZp
cm9uLmNvcHkoKQorICAgICAgICBlbnZbIkdJVF9FRElUT1IiXSA9IHBhdGhfdG9fZWRpdG9yCisg
ICAgICAgIGVudlsiU1ZOX0xPR19FRElUT1IiXSA9ICJjYXQiICMgVGhpcyBpcyBicmVha3MgdGhl
IGFic3RyYWN0aW9uIG9mIG5vdCBrbm93aW5nIGhvdyB0aGUgZWRpdG9yIHdvcmtzLgorICAgICAg
ICBzZWxmLnJ1bl9jb21tYW5kKFsnZ2l0JywgJ2NvbW1pdCcsICctLWFsbCddLCBlbnY9ZW52KQor
CiAgICAgZGVmIHB1c2hfbG9jYWxfY29tbWl0c190b19zZXJ2ZXIoc2VsZik6CiAgICAgICAgIGlm
IHNlbGYuZHJ5cnVuOgogICAgICAgICAgICAgIyBSZXR1cm4gYSBzdHJpbmcgd2hpY2ggbG9va3Mg
bGlrZSBhIGNvbW1pdCBzbyB0aGF0IHRoaW5ncyB3aGljaCBwYXJzZSB0aGlzIG91dHB1dCB3aWxs
IHN1Y2NlZWQuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvc2NtX3Vu
aXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL3NjbV91bml0dGVzdC5weQpp
bmRleCBmMGM4NGFmLi45YWNkNDg0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL21v
ZHVsZXMvc2NtX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9z
Y21fdW5pdHRlc3QucHkKQEAgLTE5MSw2ICsxOTEsMzAgQEAgY2xhc3MgU0NNVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CiAgICAgICAgIGNvbW1pdF90ZXh0ID0gc2VsZi5zY20uY29tbWl0X3dpdGhf
bWVzc2FnZSgneWV0IGFub3RoZXIgdGVzdCBjb21taXQnKQogICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHNlbGYuc2NtLnN2bl9yZXZpc2lvbl9mcm9tX2NvbW1pdF90ZXh0KGNvbW1pdF90ZXh0KSwg
JzAnKQogCisgICAgZGVmIF9zaGFyZWRfdGVzdF9jb21taXRfd2l0aF9sb2dfZWRpdG9yKHNlbGYp
OgorICAgICAgICBjaGFuZ2Vsb2cgPSAiIiIyMDA5LTEwLTI2ICBFcmljIFNlaWRlbCAgPGVyaWNA
d2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBGb28gQmFyLgorCisgICAgICAgIE1v
c3QgYXdlc29tZSBjaGFuZ2UgZXZlci4KKworICAgICAgICAqIHNjbV91bml0dGVzdC5weToKKyIi
IgorCisgICAgICAgIHNlbGYuX3NldHVwX3dlYmtpdHRvb2xzX3NjcmlwdHNfc3ltbGluayhzZWxm
LnNjbSkKKworICAgICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aCgidGVzdF9maWxlIiwgIm1v
cmUgdGVzdCBjb250ZW50IikKKyAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgoIkNoYW5n
ZUxvZyIsIGNoYW5nZWxvZykKKyAgICAgICAgU0NNLnJ1bl9jb21tYW5kKFsiZ2l0IiwgImFkZCIs
ICJDaGFuZ2VMb2ciXSkKKyAgICAgICAgY29tbWl0X3RleHQgPSBzZWxmLnNjbS5jb21taXRfd2l0
aF9sb2dfZWRpdG9yKCJXZWJLaXRUb29scy9TY3JpcHRzL2NvbW1pdC1sb2ctZWRpdG9yIikKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNjbS5zdm5fcmV2aXNpb25fZnJvbV9jb21taXRf
dGV4dChjb21taXRfdGV4dCksICI1IikKKworICAgICAgICBzZWxmLnNjbS5kcnlydW4gPSBUcnVl
CisgICAgICAgIHdyaXRlX2ludG9fZmlsZV9hdF9wYXRoKCJ0ZXN0X2ZpbGUiLCAic3RpbGwgbW9y
ZSB0ZXN0IGNvbnRlbnQiKQorICAgICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aCgiQ2hhbmdl
TG9nIiwgY2hhbmdlbG9nKQorICAgICAgICBjb21taXRfdGV4dCA9IHNlbGYuc2NtLmNvbW1pdF93
aXRoX2xvZ19lZGl0b3IoIldlYktpdFRvb2xzL1NjcmlwdHMvY29tbWl0LWxvZy1lZGl0b3IiKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2NtLnN2bl9yZXZpc2lvbl9mcm9tX2NvbW1p
dF90ZXh0KGNvbW1pdF90ZXh0KSwgIjAiKQorCiAgICAgZGVmIF9zaGFyZWRfdGVzdF9yZXZlcnNl
X2RpZmYoc2VsZik6CiAgICAgICAgIHNlbGYuX3NldHVwX3dlYmtpdHRvb2xzX3NjcmlwdHNfc3lt
bGluayhzZWxmLnNjbSkgIyBHaXQncyBhcHBseV9yZXZlcnNlX2RpZmYgdXNlcyByZXNvbHZlLUNo
YW5nZUxvZ3MKICAgICAgICAgIyBPbmx5IHRlc3QgdGhlIHNpbXBsZSBjYXNlLCBhcyBhbnkgb3Ro
ZXIgd2lsbCBlbmQgdXAgd2l0aCBjb25mbGljdCBtYXJrZXJzLgpAQCAtNDYwLDYgKzQ4NCw5IEBA
IFExZFRCeDBBQUFCNDJpdGc0R2xnWUpqR3dNRER5T0RNeE1EdzM0R0JnUUVBSlBRREpBPT0KICAg
ICBkZWYgdGVzdF9jb21taXRfdGV4dF9wYXJzaW5nKHNlbGYpOgogICAgICAgICBzZWxmLl9zaGFy
ZWRfdGVzdF9jb21taXRfd2l0aF9tZXNzYWdlKCkKIAorICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRo
X2xvZ19lZGl0b3Ioc2VsZik6CisgICAgICAgIHNlbGYuX3NoYXJlZF90ZXN0X2NvbW1pdF93aXRo
X2xvZ19lZGl0b3IoKQorCiAgICAgZGVmIHRlc3RfcmV2ZXJzZV9kaWZmKHNlbGYpOgogICAgICAg
ICBzZWxmLl9zaGFyZWRfdGVzdF9yZXZlcnNlX2RpZmYoKQogCkBAIC00ODYsOCArNTEzLDkgQEAg
Y2xhc3MgR2l0VGVzdChTQ01UZXN0KToKICAgICAgICAgc2VsZi5zY20gPSBkZXRlY3Rfc2NtX3N5
c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgot
ICAgICAgICBTVk5UZXN0UmVwb3NpdG9yeS50ZWFyX2Rvd24oc2VsZikKLSAgICAgICAgc2VsZi5f
dGVhcl9kb3duX2dpdF9jbG9uZV9vZl9zdm5fcmVwb3NpdG9yeSgpCisgICAgICAgIHByaW50IHNl
bGYuZ2l0X2NoZWNrb3V0X3BhdGgKKyAgICAgICAgI1NWTlRlc3RSZXBvc2l0b3J5LnRlYXJfZG93
bihzZWxmKQorICAgICAgICAjc2VsZi5fdGVhcl9kb3duX2dpdF9jbG9uZV9vZl9zdm5fcmVwb3Np
dG9yeSgpCiAKICAgICBkZWYgdGVzdF9kZXRlY3Rpb24oc2VsZik6CiAgICAgICAgIHNjbSA9IGRl
dGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCkBAIC01NTIsNiArNTgwLDkg
QEAgY2xhc3MgR2l0VGVzdChTQ01UZXN0KToKICAgICBkZWYgdGVzdF9jb21taXRfdGV4dF9wYXJz
aW5nKHNlbGYpOgogICAgICAgICBzZWxmLl9zaGFyZWRfdGVzdF9jb21taXRfd2l0aF9tZXNzYWdl
KCkKIAorICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRoX2xvZ19lZGl0b3Ioc2VsZik6CisgICAgICAg
IHNlbGYuX3NoYXJlZF90ZXN0X2NvbW1pdF93aXRoX2xvZ19lZGl0b3IoKQorCiAgICAgZGVmIHRl
c3RfcmV2ZXJzZV9kaWZmKHNlbGYpOgogICAgICAgICBzZWxmLl9zaGFyZWRfdGVzdF9yZXZlcnNl
X2RpZmYoKQogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvd2Via2l0
cG9ydC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy93ZWJraXRwb3J0LnB5CmluZGV4
IGE1MjRiYzYuLmI4NWJmYzAgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxl
cy93ZWJraXRwb3J0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy93ZWJraXRw
b3J0LnB5CkBAIC02OSw2ICs2OSwxMCBAQCBjbGFzcyBXZWJLaXRQb3J0KCk6CiAgICAgZGVmIGJ1
aWxkX3dlYmtpdF9jb21tYW5kKGNscyk6CiAgICAgICAgIHJldHVybiBbY2xzLnNjcmlwdF9wYXRo
KCJidWlsZC13ZWJraXQiKV0KIAorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBjb21taXRfbG9n
X2VkaXRvcl9jb21tYW5kKGNscyk6CisgICAgICAgIHJldHVybiBbY2xzLnNjcmlwdF9wYXRoKCJj
b21taXQtbG9nLWVkaXRvciIpXQorCiAKIGNsYXNzIE1hY1BvcnQoV2ViS2l0UG9ydCk6CiAgICAg
QGNsYXNzbWV0aG9kCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99967</attachid>
            <date>2011-07-07 05:31:00 -0700</date>
            <delta_ts>2011-07-07 08:57:49 -0700</delta_ts>
            <desc>Extract commit-log-editor&apos;s commit-message-generation code into a separate function</desc>
            <filename>bug-26755-20110707083059.patch</filename>
            <type>text/plain</type>
            <size>8701</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA1NTUKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhOTQ1MjE3MmEwMmExYWE0NTE0ZjI5MzFjMWQxOTM5NTM0
YTljOGFjLi4wMTdlZGIxMjFhZWViZmQ3YjQ1Y2I1ZjkwYmQ2YTJlODdlNzUzODBiIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMTEtMDctMDcgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgorCisgICAgICAg
IEV4dHJhY3QgY29tbWl0LWxvZy1lZGl0b3IncyBjb21taXQtbWVzc2FnZS1nZW5lcmF0aW9uIGNv
ZGUgaW50byBhIHNlcGFyYXRlIGZ1bmN0aW9uCisKKyAgICAgICAgQXMgYSBib251cywgd2Ugbm93
IHNraXAgYSBidW5jaCBvZiB3b3JrIGluIHRoZSBjYXNlIHdoZXJlIHdlIGFyZSBnZW5lcmF0aW5n
IGEgY29tbWl0IG1lc3NhZ2UKKyAgICAgICAgZm9yIHN0YWdlZCBnaXQgY2hhbmdlcy4KKworICAg
ICAgICBQcmVwIHdvcmsgZm9yIGZpeGluZyA8aHR0cDovL3dlYmtpdC5vcmcvYi8yNjc1NT4gd2Vi
a2l0LXBhdGNoJ3MgY29tbWl0IG1lc3NhZ2VzIGFyZSBsZXNzCisgICAgICAgIHJlYWRhYmxlIHRo
YW4gY29tbWl0LWxvZy1lZGl0b3IncworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogU2NyaXB0cy9jb21taXQtbG9nLWVkaXRvcjogTW92ZWQgdGhlIGRl
ZmF1bHQgZGVmaW5pdGlvbiBvZiAkZW5kbCB1cCB0b3dhcmQgdGhlIHRvcCBvZiB0aGUKKyAgICAg
ICAgZmlsZSBzbyB0aGF0IGl0IHdpbGwgYmUgZGVmaW5lZCBldmVuIGlmIHdlIGFyZW4ndCBvcGVy
YXRpbmcgb24gYW4gZXhpc3RpbmcgbG9nIG1lc3NhZ2UuCisgICAgICAgIE1vdmVkIGEgYnVuY2gg
b2YgdG9wLWxldmVsIGNvZGUgdG8gZ2VuZXJhdGUgdGhlIGNvbW1pdCBtZXNzYWdlIGZyb20gaGVy
ZS4uLgorICAgICAgICAoY3JlYXRlQ29tbWl0TWVzc2FnZSk6IC4uLnRvIGhlcmUuCisKIDIwMTEt
MDctMDcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHVEtdIE9wZW4gbGlua3MgaW4gYSBuZXcgd2luZG93IHdoZW4gY2xpY2tpbmcgd2l0aCB0
aGUgbWlkZGxlIGJ1dHRvbiBpbiBNaW5pQnJvd3NlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy9jb21taXQtbG9nLWVkaXRvciBiL1Rvb2xzL1NjcmlwdHMvY29tbWl0LWxvZy1lZGl0b3IKaW5k
ZXggZTg1YzRhYTEwZDAxNjg3MTY2OGFhMDk0NWY1OWQ1ZGE4ZTZiNGY1Ni4uYzhkYmFlZWY0OThi
MjIzZWIwNTg0ZTY5N2M0YWU4NGE4NmU1YjE0ZSAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9j
b21taXQtbG9nLWVkaXRvcgorKysgYi9Ub29scy9TY3JpcHRzL2NvbW1pdC1sb2ctZWRpdG9yCkBA
IC0zOCwxMSArMzgsMTQgQEAgdXNlIFRlcm06OlJlYWRLZXk7CiB1c2UgVkNTVXRpbHM7CiB1c2Ug
d2Via2l0ZGlyczsKIAorc3ViIGNyZWF0ZUNvbW1pdE1lc3NhZ2UoQCk7CiBzdWIgZml4RW52aXJv
bm1lbnQoKTsKIHN1YiBub3JtYWxpemVMaW5lRW5kaW5ncygkJCk7CiBzdWIgcmVtb3ZlTG9uZ2Vz
dENvbW1vblByZWZpeEVuZGluZ0luRG91YmxlTmV3bGluZShcJSk7CiBzdWIgaXNDb21taXRMb2dF
ZGl0b3IoJCk7CiAKK215ICRlbmRsID0gIlxuIjsKKwogc3ViIHVzYWdlCiB7CiAgICAgcHJpbnQg
IlVzYWdlOiBbLS1oZWxwXSBbLS1yZWdlbmVyYXRlLWxvZ10gPGxvZyBmaWxlPlxuIjsKQEAgLTEy
OSw3ICsxMzIsNiBAQCBjbG9zZSBMT0c7CiAKICMgV2Ugd2FudCB0byBtYXRjaCB0aGUgbGluZSBl
bmRpbmdzIG9mIHRoZSBleGlzdGluZyBsb2cgZmlsZSBpbiBjYXNlIHRoZXkncmUKICMgZGlmZmVy
ZW50IGZyb20gcGVybCdzIGxpbmUgZW5kaW5ncy4KLW15ICRlbmRsID0gIlxuIjsKICRlbmRsID0g
JDEgaWYgJGxvZ0NvbnRlbnRzID1+IC8oXHI/XG4pLzsKIAogbXkgJGtlZXBFeGlzdGluZ0xvZyA9
IDE7CkBAIC0xNDQsODEgKzE0Niw5IEBAIGlmICgkcmVnZW5lcmF0ZUxvZyAmJiAkZXhpc3RpbmdM
b2cgJiYgc2NhbGFyKEBjaGFuZ2VMb2dzKSA+IDApIHsKICMgRG9uJ3QgY2hhbmdlIGFueXRoaW5n
IGlmIHRoZXJlJ3MgYWxyZWFkeSBhIGxvZyBtZXNzYWdlIChhcyBjYW4gaGFwcGVuIHdpdGggZ2l0
LWNvbW1pdCAtLWFtZW5kKS4KIGV4ZWMgKEBlZGl0b3IsIEBBUkdWKSBpZiAkZXhpc3RpbmdMb2cg
JiYgJGtlZXBFeGlzdGluZ0xvZzsKIAotbXkgJHRvcExldmVsID0gZGV0ZXJtaW5lVkNTUm9vdCgp
OwotCi1teSAlY2hhbmdlTG9nU29ydDsKLW15ICVjaGFuZ2VMb2dDb250ZW50czsKLWZvciBteSAk
Y2hhbmdlTG9nIChAY2hhbmdlTG9ncykgewotICAgIG9wZW4gQ0hBTkdFTE9HLCAkY2hhbmdlTG9n
IG9yIGRpZSAiQ2FuJ3Qgb3BlbiAkY2hhbmdlTG9nIjsKLSAgICBteSAkY29udGVudHMgPSAiIjsK
LSAgICBteSAkYmxhbmtMaW5lcyA9ICIiOwotICAgIG15ICRsaW5lQ291bnQgPSAwOwotICAgIG15
ICRkYXRlID0gIiI7Ci0gICAgbXkgJGF1dGhvciA9ICIiOwotICAgIG15ICRlbWFpbCA9ICIiOwot
ICAgIG15ICRoYXNBdXRob3JJbmZvVG9Xcml0ZSA9IDA7Ci0gICAgd2hpbGUgKDxDSEFOR0VMT0c+
KSB7Ci0gICAgICAgIGlmICgvXlxTLykgewotICAgICAgICAgICAgbGFzdCBpZiAkY29udGVudHM7
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKC9cUy8pIHsKLSAgICAgICAgICAgICRjb250ZW50cyAu
PSAkYmxhbmtMaW5lcyBpZiAkY29udGVudHM7Ci0gICAgICAgICAgICAkYmxhbmtMaW5lcyA9ICIi
OwotCi0gICAgICAgICAgICBteSAkbGluZSA9ICRfOwotCi0gICAgICAgICAgICAjIFJlbW92ZSBp
bmRlbnRhdGlvbiBzcGFjZXMKLSAgICAgICAgICAgICRsaW5lID1+IHMvXiB7OH0vLzsKLQotICAg
ICAgICAgICAgIyBHcmFiIHRoZSBhdXRob3IgYW5kIHRoZSBkYXRlIGxpbmUKLSAgICAgICAgICAg
IGlmICgkbGluZSA9fiBtL14oWzAtOV17NH0tWzAtOV17Mn0tWzAtOV17Mn0pXHMrKC4qW15cc10p
XHMrPCguKik+LyAmJiAkbGluZUNvdW50ID09IDApIHsKLSAgICAgICAgICAgICAgICAkZGF0ZSA9
ICQxOwotICAgICAgICAgICAgICAgICRhdXRob3IgPSAkMjsKLSAgICAgICAgICAgICAgICAkZW1h
aWwgPSAkMzsKLSAgICAgICAgICAgICAgICAkaGFzQXV0aG9ySW5mb1RvV3JpdGUgPSAxOwotICAg
ICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICgkbGlu
ZSA9fiBtL15SZXZpZXdlZCBieSAuKi8gfHwgJGxpbmUgPX4gbS9eUnViYmVyWyBcLV0/c3RhbXBl
ZCBieSAuKi8pIHsKLSAgICAgICAgICAgICAgICAjIEluc2VydCB0aGUgIlBhdGNoIGJ5IiBsaW5l
IGp1c3QgYWJvdmUgdGhlICJSZXZpZXdlZCBieSIgbGluZSwgaWYgbmVlZGVkLgotICAgICAgICAg
ICAgICAgIG15ICRjb21taXR0ZXJFbWFpbCA9IGNoYW5nZUxvZ0VtYWlsQWRkcmVzcygpOwotICAg
ICAgICAgICAgICAgIG15ICRhdXRob3JBbmRDb21taXR0ZXJBcmVTYW1lUGVyc29uID0gJGVtYWls
IGVxICRjb21taXR0ZXJFbWFpbDsKLSAgICAgICAgICAgICAgICBpZiAoISRhdXRob3JBbmRDb21t
aXR0ZXJBcmVTYW1lUGVyc29uKSB7Ci0gICAgICAgICAgICAgICAgICAgICRjb250ZW50cyAuPSAi
UGF0Y2ggYnkgJGF1dGhvciA8JGVtYWlsPiBvbiAkZGF0ZVxuIjsKLSAgICAgICAgICAgICAgICAg
ICAgJGhhc0F1dGhvckluZm9Ub1dyaXRlID0gMDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9Ci0KLQotICAgICAgICAgICAgJGxpbmVDb3VudCsrOwotICAgICAgICAgICAgJGNvbnRl
bnRzIC49ICRsaW5lOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgJGJsYW5rTGluZXMg
Lj0gJF87Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgY2xvc2UgQ0hBTkdFTE9HOwotCi0gICAgJGNo
YW5nZUxvZyA9IEZpbGU6OlNwZWMtPmFiczJyZWwoRmlsZTo6U3BlYy0+cmVsMmFicygkY2hhbmdl
TG9nKSwgJHRvcExldmVsKTsKLQotICAgIG15ICRsYWJlbCA9IGRpcm5hbWUoJGNoYW5nZUxvZyk7
Ci0gICAgJGxhYmVsID0gInRvcCBsZXZlbCIgdW5sZXNzIGxlbmd0aCAkbGFiZWw7Ci0KLSAgICBt
eSAkc29ydEtleSA9IGxjICRsYWJlbDsKLSAgICBpZiAoJGxhYmVsIGVxICJ0b3AgbGV2ZWwiKSB7
Ci0gICAgICAgICRzb3J0S2V5ID0gIiI7Ci0gICAgfSBlbHNpZiAoJGxhYmVsIGVxICJMYXlvdXRU
ZXN0cyIpIHsKLSAgICAgICAgJHNvcnRLZXkgPSBsYyAifiwgTGF5b3V0VGVzdHMgbGFzdCI7Ci0g
ICAgfQotCi0gICAgJGNoYW5nZUxvZ1NvcnR7JHNvcnRLZXl9ID0gJGxhYmVsOwotICAgICRjaGFu
Z2VMb2dDb250ZW50c3skbGFiZWx9ID0gJGNvbnRlbnRzOwotfQotCi1teSAkY29tbW9uUHJlZml4
ID0gcmVtb3ZlTG9uZ2VzdENvbW1vblByZWZpeEVuZGluZ0luRG91YmxlTmV3bGluZSglY2hhbmdl
TG9nQ29udGVudHMpOwotCiBteSAkZmlyc3QgPSAxOwogb3BlbiBORVdMT0csICI+JGxvZy5lZGl0
IiBvciBkaWU7Ci1pZiAoaXNHaXQoKSAmJiBzY2FsYXIga2V5cyAlY2hhbmdlTG9nU29ydCA9PSAw
KSB7CitpZiAoaXNHaXQoKSAmJiBAY2hhbmdlTG9ncyA9PSAwKSB7CiAgICAgIyBwb3B1bGF0ZSBn
aXQgY29tbWl0IG1lc3NhZ2Ugd2l0aCBXZWJLaXQtZm9ybWF0IENoYW5nZUxvZyBlbnRyaWVzIHVu
bGVzcyBleHBsaWNpdGx5IGRpc2FibGVkCiAgICAgbXkgJGJyYW5jaCA9IGdpdEJyYW5jaCgpOwog
ICAgIGNob21wKG15ICR3ZWJraXRHZW5lcmF0ZUNvbW1pdE1lc3NhZ2UgPSBgZ2l0IGNvbmZpZyAt
LWJvb2wgYnJhbmNoLiRicmFuY2gud2Via2l0R2VuZXJhdGVDb21taXRNZXNzYWdlYCk7CkBAIC0y
MzMsMTYgKzE2Myw3IEBAIGlmIChpc0dpdCgpICYmIHNjYWxhciBrZXlzICVjaGFuZ2VMb2dTb3J0
ID09IDApIHsKICAgICAgICAgY2xvc2UgQ0hBTkdFTE9HX0VOVFJJRVM7CiAgICAgfQogfSBlbHNl
IHsKLSAgICBwcmludCBORVdMT0cgbm9ybWFsaXplTGluZUVuZGluZ3MoJGNvbW1vblByZWZpeCwg
JGVuZGwpOwotICAgIGZvciBteSAkc29ydEtleSAoc29ydCBrZXlzICVjaGFuZ2VMb2dTb3J0KSB7
Ci0gICAgICAgIG15ICRsYWJlbCA9ICRjaGFuZ2VMb2dTb3J0eyRzb3J0S2V5fTsKLSAgICAgICAg
aWYgKGtleXMgJWNoYW5nZUxvZ1NvcnQgPiAxKSB7Ci0gICAgICAgICAgICBwcmludCBORVdMT0cg
bm9ybWFsaXplTGluZUVuZGluZ3MoIlxuIiwgJGVuZGwpIGlmICEkZmlyc3Q7Ci0gICAgICAgICAg
ICAkZmlyc3QgPSAwOwotICAgICAgICAgICAgcHJpbnQgTkVXTE9HIG5vcm1hbGl6ZUxpbmVFbmRp
bmdzKCIkbGFiZWw6ICIsICRlbmRsKTsKLSAgICAgICAgfQotICAgICAgICBwcmludCBORVdMT0cg
bm9ybWFsaXplTGluZUVuZGluZ3MoJGNoYW5nZUxvZ0NvbnRlbnRzeyRsYWJlbH0sICRlbmRsKTsK
LSAgICB9CisgICAgcHJpbnQgTkVXTE9HIGNyZWF0ZUNvbW1pdE1lc3NhZ2UoQGNoYW5nZUxvZ3Mp
OwogfQogcHJpbnQgTkVXTE9HICRsb2dDb250ZW50czsKIGNsb3NlIE5FV0xPRzsKQEAgLTI2OCw2
ICsxODksOTggQEAgaWYgKCRmb3VuZENvbW1lbnQpIHsKIAogdW5saW5rICIkbG9nLmVkaXQiOwog
CitzdWIgY3JlYXRlQ29tbWl0TWVzc2FnZShAKQoreworICAgIG15IEBjaGFuZ2VMb2dzID0gQF87
CisKKyAgICBteSAkdG9wTGV2ZWwgPSBkZXRlcm1pbmVWQ1NSb290KCk7CisKKyAgICBteSAlY2hh
bmdlTG9nU29ydDsKKyAgICBteSAlY2hhbmdlTG9nQ29udGVudHM7CisgICAgZm9yIG15ICRjaGFu
Z2VMb2cgKEBjaGFuZ2VMb2dzKSB7CisgICAgICAgIG9wZW4gQ0hBTkdFTE9HLCAkY2hhbmdlTG9n
IG9yIGRpZSAiQ2FuJ3Qgb3BlbiAkY2hhbmdlTG9nIjsKKyAgICAgICAgbXkgJGNvbnRlbnRzID0g
IiI7CisgICAgICAgIG15ICRibGFua0xpbmVzID0gIiI7CisgICAgICAgIG15ICRsaW5lQ291bnQg
PSAwOworICAgICAgICBteSAkZGF0ZSA9ICIiOworICAgICAgICBteSAkYXV0aG9yID0gIiI7Cisg
ICAgICAgIG15ICRlbWFpbCA9ICIiOworICAgICAgICBteSAkaGFzQXV0aG9ySW5mb1RvV3JpdGUg
PSAwOworICAgICAgICB3aGlsZSAoPENIQU5HRUxPRz4pIHsKKyAgICAgICAgICAgIGlmICgvXlxT
LykgeworICAgICAgICAgICAgICAgIGxhc3QgaWYgJGNvbnRlbnRzOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaWYgKC9cUy8pIHsKKyAgICAgICAgICAgICAgICAkY29udGVudHMgLj0gJGJs
YW5rTGluZXMgaWYgJGNvbnRlbnRzOworICAgICAgICAgICAgICAgICRibGFua0xpbmVzID0gIiI7
CisKKyAgICAgICAgICAgICAgICBteSAkbGluZSA9ICRfOworCisgICAgICAgICAgICAgICAgIyBS
ZW1vdmUgaW5kZW50YXRpb24gc3BhY2VzCisgICAgICAgICAgICAgICAgJGxpbmUgPX4gcy9eIHs4
fS8vOworCisgICAgICAgICAgICAgICAgIyBHcmFiIHRoZSBhdXRob3IgYW5kIHRoZSBkYXRlIGxp
bmUKKyAgICAgICAgICAgICAgICBpZiAoJGxpbmUgPX4gbS9eKFswLTldezR9LVswLTldezJ9LVsw
LTldezJ9KVxzKyguKlteXHNdKVxzKzwoLiopPi8gJiYgJGxpbmVDb3VudCA9PSAwKSB7CisgICAg
ICAgICAgICAgICAgICAgICRkYXRlID0gJDE7CisgICAgICAgICAgICAgICAgICAgICRhdXRob3Ig
PSAkMjsKKyAgICAgICAgICAgICAgICAgICAgJGVtYWlsID0gJDM7CisgICAgICAgICAgICAgICAg
ICAgICRoYXNBdXRob3JJbmZvVG9Xcml0ZSA9IDE7CisgICAgICAgICAgICAgICAgICAgIG5leHQ7
CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKCRsaW5lID1+IG0vXlJl
dmlld2VkIGJ5IC4qLyB8fCAkbGluZSA9fiBtL15SdWJiZXJbIFwtXT9zdGFtcGVkIGJ5IC4qLykg
eworICAgICAgICAgICAgICAgICAgICAjIEluc2VydCB0aGUgIlBhdGNoIGJ5IiBsaW5lIGp1c3Qg
YWJvdmUgdGhlICJSZXZpZXdlZCBieSIgbGluZSwgaWYgbmVlZGVkLgorICAgICAgICAgICAgICAg
ICAgICBteSAkY29tbWl0dGVyRW1haWwgPSBjaGFuZ2VMb2dFbWFpbEFkZHJlc3MoKTsKKyAgICAg
ICAgICAgICAgICAgICAgbXkgJGF1dGhvckFuZENvbW1pdHRlckFyZVNhbWVQZXJzb24gPSAkZW1h
aWwgZXEgJGNvbW1pdHRlckVtYWlsOworICAgICAgICAgICAgICAgICAgICBpZiAoISRhdXRob3JB
bmRDb21taXR0ZXJBcmVTYW1lUGVyc29uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAkY29u
dGVudHMgLj0gIlBhdGNoIGJ5ICRhdXRob3IgPCRlbWFpbD4gb24gJGRhdGVcbiI7CisgICAgICAg
ICAgICAgICAgICAgICAgICAkaGFzQXV0aG9ySW5mb1RvV3JpdGUgPSAwOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisKKyAgICAgICAgICAgICAgICAkbGluZUNv
dW50Kys7CisgICAgICAgICAgICAgICAgJGNvbnRlbnRzIC49ICRsaW5lOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAkYmxhbmtMaW5lcyAuPSAkXzsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICBjbG9zZSBDSEFOR0VMT0c7CisKKyAgICAgICAgJGNoYW5n
ZUxvZyA9IEZpbGU6OlNwZWMtPmFiczJyZWwoRmlsZTo6U3BlYy0+cmVsMmFicygkY2hhbmdlTG9n
KSwgJHRvcExldmVsKTsKKworICAgICAgICBteSAkbGFiZWwgPSBkaXJuYW1lKCRjaGFuZ2VMb2cp
OworICAgICAgICAkbGFiZWwgPSAidG9wIGxldmVsIiB1bmxlc3MgbGVuZ3RoICRsYWJlbDsKKwor
ICAgICAgICBteSAkc29ydEtleSA9IGxjICRsYWJlbDsKKyAgICAgICAgaWYgKCRsYWJlbCBlcSAi
dG9wIGxldmVsIikgeworICAgICAgICAgICAgJHNvcnRLZXkgPSAiIjsKKyAgICAgICAgfSBlbHNp
ZiAoJGxhYmVsIGVxICJMYXlvdXRUZXN0cyIpIHsKKyAgICAgICAgICAgICRzb3J0S2V5ID0gbGMg
In4sIExheW91dFRlc3RzIGxhc3QiOworICAgICAgICB9CisKKyAgICAgICAgJGNoYW5nZUxvZ1Nv
cnR7JHNvcnRLZXl9ID0gJGxhYmVsOworICAgICAgICAkY2hhbmdlTG9nQ29udGVudHN7JGxhYmVs
fSA9ICRjb250ZW50czsKKyAgICB9CisKKyAgICBteSAkY29tbW9uUHJlZml4ID0gcmVtb3ZlTG9u
Z2VzdENvbW1vblByZWZpeEVuZGluZ0luRG91YmxlTmV3bGluZSglY2hhbmdlTG9nQ29udGVudHMp
OworCisgICAgbXkgJGZpcnN0ID0gMTsKKyAgICBteSBAcmVzdWx0OworICAgIHB1c2ggQHJlc3Vs
dCwgbm9ybWFsaXplTGluZUVuZGluZ3MoJGNvbW1vblByZWZpeCwgJGVuZGwpOworICAgIGZvciBt
eSAkc29ydEtleSAoc29ydCBrZXlzICVjaGFuZ2VMb2dTb3J0KSB7CisgICAgICAgIG15ICRsYWJl
bCA9ICRjaGFuZ2VMb2dTb3J0eyRzb3J0S2V5fTsKKyAgICAgICAgaWYgKGtleXMgJWNoYW5nZUxv
Z1NvcnQgPiAxKSB7CisgICAgICAgICAgICBwdXNoIEByZXN1bHQsIG5vcm1hbGl6ZUxpbmVFbmRp
bmdzKCJcbiIsICRlbmRsKSBpZiAhJGZpcnN0OworICAgICAgICAgICAgJGZpcnN0ID0gMDsKKyAg
ICAgICAgICAgIHB1c2ggQHJlc3VsdCwgbm9ybWFsaXplTGluZUVuZGluZ3MoIiRsYWJlbDogIiwg
JGVuZGwpOworICAgICAgICB9CisgICAgICAgIHB1c2ggQHJlc3VsdCwgbm9ybWFsaXplTGluZUVu
ZGluZ3MoJGNoYW5nZUxvZ0NvbnRlbnRzeyRsYWJlbH0sICRlbmRsKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gam9pbiAnJywgQHJlc3VsdDsKK30KKwogc3ViIGZpeEVudmlyb25tZW50KCkKIHsKICAg
ICByZXR1cm4gdW5sZXNzIGlzTXN5cygpICYmIGlzR2l0KCk7Cg==
</data>
<flag name="review"
          id="94569"
          type_id="1"
          status="+"
          setter="ddkilzer"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99968</attachid>
            <date>2011-07-07 05:34:57 -0700</date>
            <delta_ts>2011-07-07 08:34:12 -0700</delta_ts>
            <desc>Add a --print-log option to commit-log-editor</desc>
            <filename>bug-26755-20110707083455.patch</filename>
            <type>text/plain</type>
            <size>2907</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA1NTUKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwMTdlZGIxMjFhZWViZmQ3YjQ1Y2I1ZjkwYmQ2YTJlODdl
NzUzODBiLi5hYTkwYzcwN2FmYjU3N2E0Y2ZjMzYwODhjZDczYzRmYjcyZjU5N2RiIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjIg
QEAKIDIwMTEtMDctMDcgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCisgICAgICAg
IEFkZCBhIC0tcHJpbnQtbG9nIG9wdGlvbiB0byBjb21taXQtbG9nLWVkaXRvcgorCisgICAgICAg
IFdoZW4gc3BlY2lmaWVkLCBjb21taXQtbG9nLWVkaXRvciB0YWtlcyBhIHNldCBvZiBDaGFuZ2VM
b2cgcGF0aHMgb24gdGhlIGNvbW1hbmQgbGluZSwKKyAgICAgICAgZ2VuZXJhdGVzIGEgY29tbWl0
IG1lc3NhZ2UgZnJvbSB0aG9zZSBDaGFuZ2VMb2dzLCBwcmludHMgaXQgdG8gc3Rkb3V0LCBhbmQg
ZXhpdHMuCisKKyAgICAgICAgUHJlcCB3b3JrIGZvciBmaXhpbmcgPGh0dHA6Ly93ZWJraXQub3Jn
L2IvMjY3NTU+IHdlYmtpdC1wYXRjaCdzIGNvbW1pdCBtZXNzYWdlcyBhcmUgbGVzcworICAgICAg
ICByZWFkYWJsZSB0aGFuIGNvbW1pdC1sb2ctZWRpdG9yJ3MKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvY29tbWl0LWxvZy1lZGl0b3I6
IENoYW5nZWQgdG8gdXNlIEdldG9wdDo6TG9uZyB0byBwYXJzZSBvcHRpb25zLiBBZGRlZCAtLXBy
aW50LWxvZworICAgICAgICBvcHRpb24sIHdoaWNoIGNhbGxzIHRocm91Z2ggdG8gY3JlYXRlQ29t
bWl0TWVzc2FnZSwgcHJpbnRzIHRoZSByZXN1bHQsIGFuZCBleGl0cy4KKyAgICAgICAgKHVzYWdl
KTogQmVlZmVkIHVwIHRoZSB1c2FnZSBzdGF0ZW1lbnQgdG8gZXhwbGFpbiBjb21taXQtbG9nLWVk
aXRvcidzIDIuNSAobm9ybWFsLAorICAgICAgICAtLXByaW50LWxvZywgYW5kIC0taGVscCkgbW9k
ZXMgb2Ygb3BlcmF0aW9uLgorCisyMDExLTA3LTA3ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxl
LmNvbT4KKwogICAgICAgICBFeHRyYWN0IGNvbW1pdC1sb2ctZWRpdG9yJ3MgY29tbWl0LW1lc3Nh
Z2UtZ2VuZXJhdGlvbiBjb2RlIGludG8gYSBzZXBhcmF0ZSBmdW5jdGlvbgogCiAgICAgICAgIEFz
IGEgYm9udXMsIHdlIG5vdyBza2lwIGEgYnVuY2ggb2Ygd29yayBpbiB0aGUgY2FzZSB3aGVyZSB3
ZSBhcmUgZ2VuZXJhdGluZyBhIGNvbW1pdCBtZXNzYWdlCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL2NvbW1pdC1sb2ctZWRpdG9yIGIvVG9vbHMvU2NyaXB0cy9jb21taXQtbG9nLWVkaXRvcgpp
bmRleCBjOGRiYWVlZjQ5OGIyMjNlYjA1ODRlNjk3YzRhZTg0YTg2ZTViMTRlLi44YWNhN2I5OWIw
ZjMzN2Q1NWYyODIyN2Y3YTk4NjFhZWQ2ODgyNDM3IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRz
L2NvbW1pdC1sb2ctZWRpdG9yCisrKyBiL1Rvb2xzL1NjcmlwdHMvY29tbWl0LWxvZy1lZGl0b3IK
QEAgLTMwLDEzICszMCwxMyBAQAogIyBTY3JpcHQgdG8gcHV0IGNoYW5nZSBsb2cgY29tbWVudHMg
aW4gYXMgZGVmYXVsdCBjaGVjay1pbiBjb21tZW50LgogCiB1c2Ugc3RyaWN0OwordXNlIEdldG9w
dDo6TG9uZzsKIHVzZSBGaWxlOjpCYXNlbmFtZTsKIHVzZSBGaWxlOjpTcGVjOwogdXNlIEZpbmRC
aW47CiB1c2UgbGliICRGaW5kQmluOjpCaW47CiB1c2UgVGVybTo6UmVhZEtleTsKIHVzZSBWQ1NV
dGlsczsKLXVzZSB3ZWJraXRkaXJzOwogCiBzdWIgY3JlYXRlQ29tbWl0TWVzc2FnZShAKTsKIHN1
YiBmaXhFbnZpcm9ubWVudCgpOwpAQCAtNDgsMTYgKzQ4LDQxIEBAIG15ICRlbmRsID0gIlxuIjsK
IAogc3ViIHVzYWdlCiB7Ci0gICAgcHJpbnQgIlVzYWdlOiBbLS1oZWxwXSBbLS1yZWdlbmVyYXRl
LWxvZ10gPGxvZyBmaWxlPlxuIjsKKyAgICBteSAkcHJvZ3JhbU5hbWUgPSBiYXNlbmFtZSgkMCk7
CisgICAgcHJpbnQgU1RERVJSIDw8RU9GOworVXNhZ2U6ICRwcm9ncmFtTmFtZSBbLS1yZWdlbmVy
YXRlLWxvZ10gPGxvZyBmaWxlPgorICAgICAgICRwcm9ncmFtTmFtZSAtLXByaW50LWxvZyA8Q2hh
bmdlTG9nIGZpbGU+IFs8Q2hhbmdlTG9nIGZpbGU+Li4uXQorICAgICAgICRwcm9ncmFtTmFtZSAt
LWhlbHAKK0VPRgogICAgIGV4aXQgMTsKIH0KIAotbXkgJGhlbHAgPSBjaGVja0ZvckFyZ3VtZW50
QW5kUmVtb3ZlRnJvbUFSR1YoIi0taGVscCIpOwotaWYgKCRoZWxwKSB7CitteSAkaGVscCA9IDA7
CitteSAkcHJpbnRMb2cgPSAwOworbXkgJHJlZ2VuZXJhdGVMb2cgPSAwOworCitteSAkZ2V0T3B0
aW9uc1Jlc3VsdCA9IEdldE9wdGlvbnMoCisgICAgJ2hlbHAnID0+IFwkaGVscCwKKyAgICAncHJp
bnQtbG9nJyA9PiBcJHByaW50TG9nLAorICAgICdyZWdlbmVyYXRlLWxvZycgPT4gXCRyZWdlbmVy
YXRlTG9nLAorKTsKKworaWYgKCEkZ2V0T3B0aW9uc1Jlc3VsdCB8fCAkaGVscCkgewogICAgIHVz
YWdlKCk7CisgICAgZXhpdCAhJGdldE9wdGlvbnNSZXN1bHQ7Cit9CisKK2RpZSAiQ2FuJ3Qgc3Bl
Y2lmeSBib3RoIC0tcHJpbnQtbG9nIGFuZCAtLXJlZ2VuZXJhdGUtbG9nXG4iIGlmICRwcmludExv
ZyAmJiAkcmVnZW5lcmF0ZUxvZzsKKworaWYgKCRwcmludExvZykgeworICAgIHVubGVzcyAoQEFS
R1YpIHsKKyAgICAgICAgdXNhZ2UoKTsKKyAgICAgICAgZXhpdCAxOworICAgIH0KKyAgICBwcmlu
dCBjcmVhdGVDb21taXRNZXNzYWdlKEBBUkdWKTsKKyAgICBleGl0OwogfQogCi1teSAkcmVnZW5l
cmF0ZUxvZyA9IGNoZWNrRm9yQXJndW1lbnRBbmRSZW1vdmVGcm9tQVJHVigiLS1yZWdlbmVyYXRl
LWxvZyIpOwogbXkgJGxvZyA9ICRBUkdWWzBdOwogaWYgKCEkbG9nKSB7CiAgICAgdXNhZ2UoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99985</attachid>
            <date>2011-07-07 08:33:55 -0700</date>
            <delta_ts>2011-07-07 09:14:54 -0700</delta_ts>
            <desc>Add a --print-log option to commit-log-editor</desc>
            <filename>bug-26755-20110707113354.patch</filename>
            <type>text/plain</type>
            <size>2775</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA1NTUKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwMTdlZGIxMjFhZWViZmQ3YjQ1Y2I1ZjkwYmQ2YTJlODdl
NzUzODBiLi5hYTkwYzcwN2FmYjU3N2E0Y2ZjMzYwODhjZDczYzRmYjcyZjU5N2RiIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjIg
QEAKIDIwMTEtMDctMDcgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCisgICAgICAg
IEFkZCBhIC0tcHJpbnQtbG9nIG9wdGlvbiB0byBjb21taXQtbG9nLWVkaXRvcgorCisgICAgICAg
IFdoZW4gc3BlY2lmaWVkLCBjb21taXQtbG9nLWVkaXRvciB0YWtlcyBhIHNldCBvZiBDaGFuZ2VM
b2cgcGF0aHMgb24gdGhlIGNvbW1hbmQgbGluZSwKKyAgICAgICAgZ2VuZXJhdGVzIGEgY29tbWl0
IG1lc3NhZ2UgZnJvbSB0aG9zZSBDaGFuZ2VMb2dzLCBwcmludHMgaXQgdG8gc3Rkb3V0LCBhbmQg
ZXhpdHMuCisKKyAgICAgICAgUHJlcCB3b3JrIGZvciBmaXhpbmcgPGh0dHA6Ly93ZWJraXQub3Jn
L2IvMjY3NTU+IHdlYmtpdC1wYXRjaCdzIGNvbW1pdCBtZXNzYWdlcyBhcmUgbGVzcworICAgICAg
ICByZWFkYWJsZSB0aGFuIGNvbW1pdC1sb2ctZWRpdG9yJ3MKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvY29tbWl0LWxvZy1lZGl0b3I6
IENoYW5nZWQgdG8gdXNlIEdldG9wdDo6TG9uZyB0byBwYXJzZSBvcHRpb25zLiBBZGRlZCAtLXBy
aW50LWxvZworICAgICAgICBvcHRpb24sIHdoaWNoIGNhbGxzIHRocm91Z2ggdG8gY3JlYXRlQ29t
bWl0TWVzc2FnZSwgcHJpbnRzIHRoZSByZXN1bHQsIGFuZCBleGl0cy4KKyAgICAgICAgKHVzYWdl
KTogQmVlZmVkIHVwIHRoZSB1c2FnZSBzdGF0ZW1lbnQgdG8gZXhwbGFpbiBjb21taXQtbG9nLWVk
aXRvcidzIDIuNSAobm9ybWFsLAorICAgICAgICAtLXByaW50LWxvZywgYW5kIC0taGVscCkgbW9k
ZXMgb2Ygb3BlcmF0aW9uLgorCisyMDExLTA3LTA3ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxl
LmNvbT4KKwogICAgICAgICBFeHRyYWN0IGNvbW1pdC1sb2ctZWRpdG9yJ3MgY29tbWl0LW1lc3Nh
Z2UtZ2VuZXJhdGlvbiBjb2RlIGludG8gYSBzZXBhcmF0ZSBmdW5jdGlvbgogCiAgICAgICAgIEFz
IGEgYm9udXMsIHdlIG5vdyBza2lwIGEgYnVuY2ggb2Ygd29yayBpbiB0aGUgY2FzZSB3aGVyZSB3
ZSBhcmUgZ2VuZXJhdGluZyBhIGNvbW1pdCBtZXNzYWdlCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL2NvbW1pdC1sb2ctZWRpdG9yIGIvVG9vbHMvU2NyaXB0cy9jb21taXQtbG9nLWVkaXRvcgpp
bmRleCBjOGRiYWVlZjQ5OGIyMjNlYjA1ODRlNjk3YzRhZTg0YTg2ZTViMTRlLi44NTk1ZDk1YzM5
NmFmZTA4NDVmYzlhNTE2Y2YxOWJhZDQzZGI2OTgxIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRz
L2NvbW1pdC1sb2ctZWRpdG9yCisrKyBiL1Rvb2xzL1NjcmlwdHMvY29tbWl0LWxvZy1lZGl0b3IK
QEAgLTMwLDYgKzMwLDcgQEAKICMgU2NyaXB0IHRvIHB1dCBjaGFuZ2UgbG9nIGNvbW1lbnRzIGlu
IGFzIGRlZmF1bHQgY2hlY2staW4gY29tbWVudC4KIAogdXNlIHN0cmljdDsKK3VzZSBHZXRvcHQ6
Okxvbmc7CiB1c2UgRmlsZTo6QmFzZW5hbWU7CiB1c2UgRmlsZTo6U3BlYzsKIHVzZSBGaW5kQmlu
OwpAQCAtNDgsMTYgKzQ5LDQxIEBAIG15ICRlbmRsID0gIlxuIjsKIAogc3ViIHVzYWdlCiB7Ci0g
ICAgcHJpbnQgIlVzYWdlOiBbLS1oZWxwXSBbLS1yZWdlbmVyYXRlLWxvZ10gPGxvZyBmaWxlPlxu
IjsKKyAgICBteSAkcHJvZ3JhbU5hbWUgPSBiYXNlbmFtZSgkMCk7CisgICAgcHJpbnQgU1RERVJS
IDw8RU9GOworVXNhZ2U6ICRwcm9ncmFtTmFtZSBbLS1yZWdlbmVyYXRlLWxvZ10gPGxvZyBmaWxl
PgorICAgICAgICRwcm9ncmFtTmFtZSAtLXByaW50LWxvZyA8Q2hhbmdlTG9nIGZpbGU+IFs8Q2hh
bmdlTG9nIGZpbGU+Li4uXQorICAgICAgICRwcm9ncmFtTmFtZSAtLWhlbHAKK0VPRgogICAgIGV4
aXQgMTsKIH0KIAotbXkgJGhlbHAgPSBjaGVja0ZvckFyZ3VtZW50QW5kUmVtb3ZlRnJvbUFSR1Yo
Ii0taGVscCIpOwotaWYgKCRoZWxwKSB7CitteSAkaGVscCA9IDA7CitteSAkcHJpbnRMb2cgPSAw
OworbXkgJHJlZ2VuZXJhdGVMb2cgPSAwOworCitteSAkZ2V0T3B0aW9uc1Jlc3VsdCA9IEdldE9w
dGlvbnMoCisgICAgJ2hlbHAnID0+IFwkaGVscCwKKyAgICAncHJpbnQtbG9nJyA9PiBcJHByaW50
TG9nLAorICAgICdyZWdlbmVyYXRlLWxvZycgPT4gXCRyZWdlbmVyYXRlTG9nLAorKTsKKworaWYg
KCEkZ2V0T3B0aW9uc1Jlc3VsdCB8fCAkaGVscCkgewogICAgIHVzYWdlKCk7CisgICAgZXhpdCAh
JGdldE9wdGlvbnNSZXN1bHQ7Cit9CisKK2RpZSAiQ2FuJ3Qgc3BlY2lmeSBib3RoIC0tcHJpbnQt
bG9nIGFuZCAtLXJlZ2VuZXJhdGUtbG9nXG4iIGlmICRwcmludExvZyAmJiAkcmVnZW5lcmF0ZUxv
ZzsKKworaWYgKCRwcmludExvZykgeworICAgIHVubGVzcyAoQEFSR1YpIHsKKyAgICAgICAgdXNh
Z2UoKTsKKyAgICAgICAgZXhpdCAxOworICAgIH0KKyAgICBwcmludCBjcmVhdGVDb21taXRNZXNz
YWdlKEBBUkdWKTsKKyAgICBleGl0OwogfQogCi1teSAkcmVnZW5lcmF0ZUxvZyA9IGNoZWNrRm9y
QXJndW1lbnRBbmRSZW1vdmVGcm9tQVJHVigiLS1yZWdlbmVyYXRlLWxvZyIpOwogbXkgJGxvZyA9
ICRBUkdWWzBdOwogaWYgKCEkbG9nKSB7CiAgICAgdXNhZ2UoKTsK
</data>
<flag name="review"
          id="94592"
          type_id="1"
          status="+"
          setter="ddkilzer"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99987</attachid>
            <date>2011-07-07 08:41:53 -0700</date>
            <delta_ts>2011-07-07 10:55:20 -0700</delta_ts>
            <desc>Teach webkitpy&apos;s Checkout class to use commit-log-editor to create commit messages</desc>
            <filename>bug-26755-20110707114152.patch</filename>
            <type>text/plain</type>
            <size>6990</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA1NTUKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhYTkwYzcwN2FmYjU3N2E0Y2ZjMzYwODhjZDczYzRmYjcy
ZjU5N2RiLi4yMzgxNjI5YzM3MTQ2ZmI4ZTgzZGFiYjlmMTVmYjMxODJjODczNjgwIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjcg
QEAKIDIwMTEtMDctMDcgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCisgICAgICAg
IFRlYWNoIHdlYmtpdHB5J3MgQ2hlY2tvdXQgY2xhc3MgdG8gdXNlIGNvbW1pdC1sb2ctZWRpdG9y
IHRvIGNyZWF0ZSBjb21taXQgbWVzc2FnZXMKKworICAgICAgICBGaXhlcyA8aHR0cDovL3dlYmtp
dC5vcmcvYi8yNjc1NT4gd2Via2l0LXBhdGNoJ3MgY29tbWl0IG1lc3NhZ2VzIGFyZSBsZXNzIHJl
YWRhYmxlIHRoYW4KKyAgICAgICAgY29tbWl0LWxvZy1lZGl0b3IncworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21t
b24vY2hlY2tvdXQvY2hlY2tvdXQucHk6CisgICAgICAgIChDaGVja291dC5jb21taXRfbWVzc2Fn
ZV9mb3JfdGhpc19jb21taXQpOiBSdW4gY29tbWl0LWxvZy1lZGl0b3IsIHBhc3NpbmcgaXQgdGhl
IHBhdGhzIG9mCisgICAgICAgIHRoZSBtb2RpZmllZCBDaGFuZ2VMb2dzLCB0byBnZW5lcmF0ZSB0
aGUgY29tbWl0IG1lc3NhZ2UsIHJhdGhlciB0aGFuIHRyeWluZyB0byBnZW5lcmF0ZSBvbmUKKyAg
ICAgICAgb3Vyc2VsdmVzLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hl
Y2tvdXQvY2hlY2tvdXRfdW5pdHRlc3QucHk6IFVwZGF0ZWQgdGhlIGV4cGVjdGVkIGNvbW1pdCBt
ZXNzYWdlCisgICAgICAgIHRvIG1hdGNoIGNvbW1pdC1sb2ctZWRpdG9yJ3MgZm9ybWF0LgorICAg
ICAgICAoQ29tbWl0TWVzc2FnZUZvclRoaXNDb21taXRUZXN0LnNldFVwKTogV3JpdGUgdGhlIENo
YW5nZUxvZ3MgaW50byBUb29scyBhbmQgTGF5b3V0VGVzdHMKKyAgICAgICAgZGlyZWN0b3JpZXMg
c28gd2UgY2FuIHNlZSBob3cgdGhlIHZhcmlvdXMgZW50cmllcyBnZXQgbGFiZWxlZCBpbiB0aGUg
Y29tbWl0IG1lc3NhZ2UuCisgICAgICAgIChDb21taXRNZXNzYWdlRm9yVGhpc0NvbW1pdFRlc3Qu
dGVzdF9jb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQpOiBDcmVhdGUgYSBtb2NrIFNDTQor
ICAgICAgICBpbnN0YW5jZSB0aGF0IGtub3dzIGhvdyB0byBmaW5kIGNvbW1pdC1sb2ctZWRpdG9y
IGFuZCBwYXNzIGl0IHRvIG91ciBDaGVja291dCBpbnN0YW5jZS4KKyAgICAgICAgRG9uJ3QgYm90
aGVyIGNhcHR1cmluZyBvdXRwdXQsIHNpbmNlIHRoZXJlIHNob3VsZG4ndCBiZSBhbnkuCisKKzIw
MTEtMDctMDcgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgorCiAgICAgICAgIEFkZCBh
IC0tcHJpbnQtbG9nIG9wdGlvbiB0byBjb21taXQtbG9nLWVkaXRvcgogCiAgICAgICAgIFdoZW4g
c3BlY2lmaWVkLCBjb21taXQtbG9nLWVkaXRvciB0YWtlcyBhIHNldCBvZiBDaGFuZ2VMb2cgcGF0
aHMgb24gdGhlIGNvbW1hbmQgbGluZSwKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL2NoZWNrb3V0L2NoZWNrb3V0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vY2hlY2tvdXQvY2hlY2tvdXQucHkKaW5kZXggOGYxN2IwMzZiNTJkYjIyYTMyOTlhMTdm
ZDhiNjk5NGZlNDA2ZmNmMy4uMjFhYWQ1MDVjZmI3ZjI5NmM3NGFkNDBjYWUwNTlkMWIwOGQ0ZDA4
MiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hl
Y2tvdXQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvY2hl
Y2tvdXQucHkKQEAgLTEyMCwxNiArMTIwLDggQEAgY2xhc3MgQ2hlY2tvdXQob2JqZWN0KToKICAg
ICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKG1lc3NhZ2U9IkZvdW5kIG5vIG1vZGlmaWVkIENo
YW5nZUxvZ3MsIGNhbm5vdCBjcmVhdGUgYSBjb21taXQgbWVzc2FnZS5cbiIKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJBbGwgY2hhbmdlcyByZXF1aXJlIGEgQ2hhbmdlTG9nLiAgU2Vl
OlxuICVzIiAlIHVybHMuY29udHJpYnV0aW9uX2d1aWRlbGluZXMpCiAKLSAgICAgICAgY2hhbmdl
bG9nX21lc3NhZ2VzID0gW10KLSAgICAgICAgZm9yIGNoYW5nZWxvZ19wYXRoIGluIGNoYW5nZWxv
Z19wYXRoczoKLSAgICAgICAgICAgIGxvZygiUGFyc2luZyBDaGFuZ2VMb2c6ICVzIiAlIGNoYW5n
ZWxvZ19wYXRoKQotICAgICAgICAgICAgY2hhbmdlbG9nX2VudHJ5ID0gQ2hhbmdlTG9nKGNoYW5n
ZWxvZ19wYXRoKS5sYXRlc3RfZW50cnkoKQotICAgICAgICAgICAgaWYgbm90IGNoYW5nZWxvZ19l
bnRyeToKLSAgICAgICAgICAgICAgICByYWlzZSBTY3JpcHRFcnJvcihtZXNzYWdlPSJGYWlsZWQg
dG8gcGFyc2UgQ2hhbmdlTG9nOiAlcyIgJSBvcy5wYXRoLmFic3BhdGgoY2hhbmdlbG9nX3BhdGgp
KQotICAgICAgICAgICAgY2hhbmdlbG9nX21lc3NhZ2VzLmFwcGVuZChjaGFuZ2Vsb2dfZW50cnku
Y29udGVudHMoKSkKLQotICAgICAgICAjIEZJWE1FOiBXZSBzaG91bGQgc29ydCBhbmQgbGFiZWwg
dGhlIENoYW5nZUxvZyBtZXNzYWdlcyBsaWtlIGNvbW1pdC1sb2ctZWRpdG9yIGRvZXMuCi0gICAg
ICAgIHJldHVybiBDb21taXRNZXNzYWdlKCIiLmpvaW4oY2hhbmdlbG9nX21lc3NhZ2VzKS5zcGxp
dGxpbmVzKCkpCisgICAgICAgIG1lc3NhZ2VfdGV4dCA9IEV4ZWN1dGl2ZSgpLnJ1bl9jb21tYW5k
KFtzZWxmLl9zY20uc2NyaXB0X3BhdGgoJ2NvbW1pdC1sb2ctZWRpdG9yJyksICctLXByaW50LWxv
ZyddICsgY2hhbmdlbG9nX3BhdGhzLCByZXR1cm5fc3RkZXJyPUZhbHNlKQorICAgICAgICByZXR1
cm4gQ29tbWl0TWVzc2FnZShtZXNzYWdlX3RleHQuc3BsaXRsaW5lcygpKQogCiAgICAgZGVmIHJl
Y2VudF9jb21taXRfaW5mb3NfZm9yX2ZpbGVzKHNlbGYsIHBhdGhzKToKICAgICAgICAgcmV2aXNp
b25zID0gc2V0KHN1bShtYXAoc2VsZi5fc2NtLnJldmlzaW9uc19jaGFuZ2luZ19maWxlLCBwYXRo
cyksIFtdKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNr
b3V0L2NoZWNrb3V0X3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
Y2hlY2tvdXQvY2hlY2tvdXRfdW5pdHRlc3QucHkKaW5kZXggZDE5YzJiNTg2NjY4NjFhNWZjYjlm
YTBjYWY0N2FmYzk1NmY3NzlmNC4uNjJmNDg5YWE1M2E3MGE4ZDA4NGViNzcxMDJhNTNiMTRiODQx
YjA1NSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQv
Y2hlY2tvdXRfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
Y2hlY2tvdXQvY2hlY2tvdXRfdW5pdHRlc3QucHkKQEAgLTM3LDcgKzM3LDYgQEAgaW1wb3J0IHVu
aXR0ZXN0CiBmcm9tIC5jaGVja291dCBpbXBvcnQgQ2hlY2tvdXQKIGZyb20gLmNoYW5nZWxvZyBp
bXBvcnQgQ2hhbmdlTG9nRW50cnkKIGZyb20gLnNjbSBpbXBvcnQgZGV0ZWN0X3NjbV9zeXN0ZW0s
IENvbW1pdE1lc3NhZ2UKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJl
IGltcG9ydCBPdXRwdXRDYXB0dXJlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0
aXZlIGltcG9ydCBTY3JpcHRFcnJvcgogZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5Lm1vY2sgaW1w
b3J0IE1vY2sKIApAQCAtODMsMjkgKzgyLDM1IEBAIF9jaGFuZ2Vsb2cyID0gdSIiIjIwMTAtMDMt
MjUgIFRvciBBcm5lIFZlc3RiXHUwMGY4ICA8dmVzdGJvQHdlYmtpdC5vcmc+CiAiIiIKIAogY2xh
c3MgQ29tbWl0TWVzc2FnZUZvclRoaXNDb21taXRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAg
ICBleHBlY3RlZF9jb21taXRfbWVzc2FnZSA9IHUiIiIyMDEwLTAzLTI1ICBUb3IgQXJuZSBWZXN0
Ylx1MDBmOCAgPHZlc3Rib0B3ZWJraXQub3JnPgorICAgIGV4cGVjdGVkX2NvbW1pdF9tZXNzYWdl
ID0gdSIiIlVucmV2aWV3ZWQgYnVpbGQgZml4IHRvIHVuLWJyZWFrIHdlYmtpdC1wYXRjaCBsYW5k
LgogCi0gICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IHRvIHVuLWJyZWFrIHdlYmtpdC1wYXRj
aCBsYW5kLgorVG9vbHM6IAogCi0gICAgICAgIE1vdmUgY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNf
Y29tbWl0IGZyb20gc2NtIHRvIGNoZWNrb3V0Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zNjYyOQorTW92ZSBjb21taXRfbWVzc2FnZV9mb3JfdGhpc19j
b21taXQgZnJvbSBzY20gdG8gY2hlY2tvdXQKK2h0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNjYyOQogCi0gICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hl
Y2tvdXQvYXBpLnB5OiBpbXBvcnQgc2NtLkNvbW1pdE1lc3NhZ2UKLTIwMTAtMDMtMjUgIFRvciBB
cm5lIFZlc3RiXHUwMGY4ICA8dmVzdGJvQHdlYmtpdC5vcmc+CisqIFNjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NoZWNrb3V0L2FwaS5weTogaW1wb3J0IHNjbS5Db21taXRNZXNzYWdlCiAKLSAgICAg
ICAgVW5yZXZpZXdlZCBidWlsZCBmaXggdG8gdW4tYnJlYWsgd2Via2l0LXBhdGNoIGxhbmQuCitM
YXlvdXRUZXN0czogCiAKLSAgICAgICAgU2Vjb25kIHBhcnQgb2YgdGhpcyBjb21wbGljYXRlZCBj
aGFuZ2UuCitTZWNvbmQgcGFydCBvZiB0aGlzIGNvbXBsaWNhdGVkIGNoYW5nZS4KIAotICAgICAg
ICAqIFBhdGgvVG8vQ29tcGxpY2F0ZWQvRmlsZTogQWRkZWQuCisqIFBhdGgvVG8vQ29tcGxpY2F0
ZWQvRmlsZTogQWRkZWQuCiAiIiIKIAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2Vs
Zi50ZW1wX2RpciA9IHRlbXBmaWxlLm1rZHRlbXAoc3VmZml4PSJjaGFuZ2Vsb2dzIikKICAgICAg
ICAgc2VsZi5vbGRfY3dkID0gb3MuZ2V0Y3dkKCkKICAgICAgICAgb3MuY2hkaXIoc2VsZi50ZW1w
X2RpcikKLSAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgoIkNoYW5nZUxvZzEiLCBfY2hh
bmdlbG9nMSkKLSAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgoIkNoYW5nZUxvZzIiLCBf
Y2hhbmdlbG9nMikKKworICAgICAgICAjIFRyaWNrIGNvbW1pdC1sb2ctZWRpdG9yIGludG8gdGhp
bmtpbmcgd2UncmUgaW4gYSBTdWJ2ZXJzaW9uIHdvcmtpbmcgY29weSBzbyBpdCB3b24ndAorICAg
ICAgICAjIGNvbXBsYWluIGFib3V0IG5vdCBiZWluZyBhYmxlIHRvIGZpZ3VyZSBvdXQgd2hhdCBT
Q00gaXMgaW4gdXNlLgorICAgICAgICBvcy5ta2RpcigiLnN2biIpCisKKyAgICAgICAgc2VsZi5j
aGFuZ2Vsb2dzID0gbWFwKG9zLnBhdGguYWJzcGF0aCwgKG9zLnBhdGguam9pbigiVG9vbHMiLCAi
Q2hhbmdlTG9nIiksIG9zLnBhdGguam9pbigiTGF5b3V0VGVzdHMiLCAiQ2hhbmdlTG9nIikpKQor
ICAgICAgICBmb3IgcGF0aCwgY29udGVudHMgaW4gemlwKHNlbGYuY2hhbmdlbG9ncywgKF9jaGFu
Z2Vsb2cxLCBfY2hhbmdlbG9nMikpOgorICAgICAgICAgICAgb3MubWFrZWRpcnMob3MucGF0aC5k
aXJuYW1lKHBhdGgpKQorICAgICAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgocGF0aCwg
Y29udGVudHMpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHNodXRpbC5ybXRy
ZWUoc2VsZi50ZW1wX2RpciwgaWdub3JlX2Vycm9ycz1UcnVlKQpAQCAtMTE0LDEyICsxMTksMTMg
QEAgY2xhc3MgQ29tbWl0TWVzc2FnZUZvclRoaXNDb21taXRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgbmVlZCB0byB0b3VjaCB0aGUgZmlsZSBz
eXN0ZW0sIGhvd2V2ZXIKICAgICAjIENoYW5nZUxvZyBpcyBkaWZmaWN1bHQgdG8gbW9jayBhdCBj
dXJyZW50LgogICAgIGRlZiB0ZXN0X2NvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdChzZWxm
KToKLSAgICAgICAgY2hlY2tvdXQgPSBDaGVja291dChOb25lKQotICAgICAgICBjaGVja291dC5t
b2RpZmllZF9jaGFuZ2Vsb2dzID0gbGFtYmRhIGdpdF9jb21taXQsIGNoYW5nZWRfZmlsZXM9Tm9u
ZTogWyJDaGFuZ2VMb2cxIiwgIkNoYW5nZUxvZzIiXQotICAgICAgICBvdXRwdXQgPSBPdXRwdXRD
YXB0dXJlKCkKLSAgICAgICAgZXhwZWN0ZWRfc3RkZXJyID0gIlBhcnNpbmcgQ2hhbmdlTG9nOiBD
aGFuZ2VMb2cxXG5QYXJzaW5nIENoYW5nZUxvZzogQ2hhbmdlTG9nMlxuIgotICAgICAgICBjb21t
aXRfbWVzc2FnZSA9IG91dHB1dC5hc3NlcnRfb3V0cHV0cyhzZWxmLCBjaGVja291dC5jb21taXRf
bWVzc2FnZV9mb3JfdGhpc19jb21taXQsCi0gICAgICAgICAgICBrd2FyZ3M9eyJnaXRfY29tbWl0
IjogTm9uZX0sIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIpCisgICAgICAgIHNjbSA9
IE1vY2soKQorICAgICAgICBkZWYgbW9ja19zY3JpcHRfcGF0aChzY3JpcHQpOgorICAgICAgICAg
ICAgcmV0dXJuIG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9f
ZmlsZV9fKSwgJy4uJywgJy4uJywgJy4uJywgc2NyaXB0KSkKKyAgICAgICAgc2NtLnNjcmlwdF9w
YXRoID0gbW9ja19zY3JpcHRfcGF0aAorICAgICAgICBjaGVja291dCA9IENoZWNrb3V0KHNjbSkK
KyAgICAgICAgY2hlY2tvdXQubW9kaWZpZWRfY2hhbmdlbG9ncyA9IGxhbWJkYSBnaXRfY29tbWl0
LCBjaGFuZ2VkX2ZpbGVzPU5vbmU6IHNlbGYuY2hhbmdlbG9ncworICAgICAgICBjb21taXRfbWVz
c2FnZSA9IGNoZWNrb3V0LmNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdChnaXRfY29tbWl0
PU5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0X21lc3NhZ2UubWVzc2FnZSgp
LCBzZWxmLmV4cGVjdGVkX2NvbW1pdF9tZXNzYWdlKQogCiAK
</data>
<flag name="review"
          id="94594"
          type_id="1"
          status="+"
          setter="ddkilzer"
    />
          </attachment>
      

    </bug>

</bugzilla>