Johan Corveleyn <jcorvel@gmail.com> (jcorvel)


Found Patch Suggested
r1057409, r1054579, r1021760, r987868 r1064393, r1063005, r1062280, r1062275, r1058811, r1058809, r1058767, r1058759, r1058753, r1058752, r1057435, r1057044, r1054462, r1054421, r1054362, r1054012, r1053489, r1053482, r1052552, r1051789, r1043427, r1043235, r1042016, r1041583, r1040825, r1040807, r1039986, r1039781, r1038397, r1038390, r1037375, r1037374, r1037371, r1037365, r1037364, r1037363, r1037353, r1037352, r1036306, r1031271, r1031259, r987893, r987875, r987872, r987865, r957874, r955895 r987869

r1064393 | jcorvel | 2011-01-27 18:58:16 -0600 (Thu, 27 Jan 2011)

On the diff-optimizations-bytes branch:

Factor out a function to prepend an lcs chunk for the prefix to the lcs
chain, to eliminate code duplication.

* subversion/libsvn_diff/lcs.c
  (prepend_prefix_lcs): New function.
  (svn_diff__lcs): Remove duplicate code, and call prepend_prefix_lcs instead.


r1063005 | jcorvel | 2011-01-24 15:57:56 -0600 (Mon, 24 Jan 2011)

On the diff-optimizations-bytes branch:

Lose the datasource_opened flag of libsvn_diff/token.c#svn_diff__get_tokens,
because all of its callers now pass TRUE for it, since they all open the
datasources themselves.

[in subversion/libsvn_diff]

* diff.h, token.c
  (svn_diff__get_tokens): Remove the datasource_opened parameter.

* diff.c, diff3.c, diff4.c:
  Adjust callers.


r1062280 | jcorvel | 2011-01-22 15:36:02 -0600 (Sat, 22 Jan 2011)

On the diff-optimizations-bytes branch:

* BRANCH-README
  Move one of the wild ideas to a "Rejected ideas" section, because it's a
  bad idea. Trying to skip a mismatching line to keep forward scanning going
  can lead to missynchronization.


r1062275 | jcorvel | 2011-01-22 15:11:29 -0600 (Sat, 22 Jan 2011)

On the diff-optimizations-bytes branch:

As a small extra optimization, count lines in a local variable during prefix
scanning.

* subversion/libsvn_diff/diff_file.c
  (find_identical_prefix): Use a local variable to count the number of lines,
   to make it slightly more efficient.

Suggested by: stefan2

r1058811 | jcorvel | 2011-01-13 18:16:47 -0600 (Thu, 13 Jan 2011)

On the diff-optimizations-bytes branch:

* BRANCH-README
  Set svn:eol-style=native property.


r1058809 | jcorvel | 2011-01-13 18:07:25 -0600 (Thu, 13 Jan 2011)

On the diff-optimizations-bytes branch:

Bring up-to-date with trunk.


r1058767 | jcorvel | 2011-01-13 16:29:34 -0600 (Thu, 13 Jan 2011)

On the diff-optimizations-bytes branch:

Update the BRANCH-README:
* Mark diff3 and diff4 work as DONE.
* Add todo item for integrating low-level optimizations proposed by stefan2.
* Add "balancing the token tree" to the "Other wild ideas" section.


r1058759 | jcorvel | 2011-01-13 16:02:38 -0600 (Thu, 13 Jan 2011)

On the diff-optimizations-bytes branch:

Adapt the diff4 algorithm, as far as I understand it, to make use of the
prefix/suffix optimization.

Note:
- diff4 isn't used in svn core, only in tools/diff/diff4.
- This change is untested, because there is currently no test in the test
  suite exercising this algorithm, and I don't understand it well enough to
  write tests for it. Review and/or adding tests for this code is thus very
  welcome.

* subversion/libsvn_diff/diff4.c
  (svn_diff_diff4): Open the 4 datasources together with datasources_open, to
  let it eliminate identical prefix and suffix.


r1058753 | jcorvel | 2011-01-13 15:38:16 -0600 (Thu, 13 Jan 2011)

On the diff-optimizations-bytes branch:

Adapt the diff3 algorithm to make use of the prefix/suffix optimization.

* subversion/libsvn_diff/diff3.c
  (svn_diff_diff3): Open the 3 datasources together with datasources_open, to
   let it eliminate identical prefix and suffix. Don't forget to adjust the
   sentinel_positions with the prefix_lines, in the case of an empty
   position_list.


r1058752 | jcorvel | 2011-01-13 15:32:06 -0600 (Thu, 13 Jan 2011)

On the diff-optimizations-bytes branch:

Let the LCS code add an extra prefix-lcs to the lcs chain if necessary,
instead of special-casing for the prefix during the construction of the diff
chain. This way, the diff construction will automatically do the right thing,
and this makes it universally useable also for diff3 and diff4 (which will be
adapted in follow-up commits).

* subversion/libsvn_diff/lcs.c
  (svn_diff__lcs): If there are prefix lines, add a prefix_lcs piece to the
   lcs chain before returning it. (note: I'm not happy with the code
   duplication, but I didn't want to mess too much with the existing flow, so
   it'll do for now).

* subversion/libsvn_diff/diff.c
  (svn_diff__diff): Remove special case code for inserting a common-type diff
   chunk for the common prefix.
  (svn_diff_diff): Adjust call to svn_diff__diff back to what it was before,
   i.e. without passing the prefix_lines.


r1057435 | jcorvel | 2011-01-10 19:31:16 -0600 (Mon, 10 Jan 2011)

On the diff-optimizations-bytes branch:

Remove the early exit of prefix scanning when it reached the end of all
files. This is incorrect, because the prefix is entirely gobbled up, yet the
prefix_lines count doesn't count the last line if it doesn't end in an eol.

In normal diff (diff2) this doesn't really matter, because the diff output is
correct even without the last line being indicated as a matching line. But it
causes problems when using prefix scanning with diff3 (merge_tests.py 61 and
merge_reintegrate_tests.py 1, 2, 10, 13 and 14 failed because of this).

* subversion/libsvn_diff/diff_file.c
  (find_identical_prefix): Don't exit early if all files reach their end
   during prefix scanning. Just let the normal flow do its thing (which will
   unroll the last line if it wasn't a complete line, which will cause
   get_next_token later on to return this last line as a token).


r1057409 | hwright | 2011-01-10 16:59:01 -0600 (Mon, 10 Jan 2011)

* build.conf
  (private-built-includes): Adjust JavaHL include in followup to r1054701.

Found by: jcorvel


r1057044 | jcorvel | 2011-01-09 16:39:40 -0600 (Sun, 09 Jan 2011)

On the diff-optimizations-bytes branch:

Bring up to date with trunk.

Resolved bogus text-conflict in tools/po/l10n-report.py (probably because of
issue #3657, combined with the svn:keywords change of r1055452) with
theirs-full.


r1054579 | stefan2 | 2011-01-03 04:52:26 -0600 (Mon, 03 Jan 2011)

* libsvn_subr/adler32.c
  (svn__adler32): fix compiler warning

Found by: Johan Corveleyn <jcorvel{_AT_}gmail.com>


r1054462 | jcorvel | 2011-01-02 13:20:48 -0600 (Sun, 02 Jan 2011)

On the diff-optimizations-bytes branch:

Bring up to date with trunk again, to get the build.conf fix of r1054421.


r1054421 | stefan2 | 2011-01-02 09:53:53 -0600 (Sun, 02 Jan 2011)

Fix broken MSVC build.

* build.conf: add svn_adler32.h to MSVC-exports to so that
  its definitions will be exported by the respective DLL.

Patch by: Johan Corveleyn <jcorvel{_AT_}gmail.com>

r1054362 | jcorvel | 2011-01-02 02:06:05 -0600 (Sun, 02 Jan 2011)

On the diff-optimizations-bytes branch:

Bring up to date with trunk.


r1054012 | jcorvel | 2010-12-30 16:20:48 -0600 (Thu, 30 Dec 2010)

On the diff-optimizations-bytes branch:
Bring up to date with trunk.


r1053489 | jcorvel | 2010-12-28 18:10:25 -0600 (Tue, 28 Dec 2010)

On the diff-optimizations-bytes branch: sync with trunk

r1053482 | jcorvel | 2010-12-28 17:57:40 -0600 (Tue, 28 Dec 2010)

On the diff-optimizations-bytes branch:

Use apr_size_t instead of int for the array lengths and indices in the newly
added code.

* subversion/include/svn_diff.h
  (svn_diff_fns_t): Use apr_size_t instead of int for datasource_len argument
   of datasources_open function prototype.

* subversion/libsvn_diff/diff_file.c
  (INCREMENT_POINTERS, DECREMENT_POINTERS): Use apr_size_t instead of int for
   local variable i.
  (is_one_at_*, find_identical_*): Use apr_size_t instead of int for file_len
   argument and for local variable i.
  (datasources_open): Use apr_size_t instead of int for datasource_len
   argument and for local variable i.
  
* subversion/libsvn_diff/diff_memory.c
  (datasources_open): Use apr_size_t instead of int for datasource_len
   argument.

Suggested by: stefan2


r1052552 | jcorvel | 2010-12-24 13:06:16 -0600 (Fri, 24 Dec 2010)

On the diff-optimizations-bytes branch:

Update BRANCH-README, marking "implementation of increment/decrement with
help of a macro" as DONE.


r1051789 | jcorvel | 2010-12-22 02:32:12 -0600 (Wed, 22 Dec 2010)

On the diff-optimizations-bytes branch:

As a performance optimization, in diff_file.c, avoid function calls for every
scanned byte during prefix/suffix scanning, by using macros for the basic
incrementing/decrementing of pointers.

* subversion/libsvn_diff/diff_file.c
  (increment_pointers, decrement_pointers): Replace these functions with ...
  (INCREMENT_POINTERS, DECREMENT_POINTERS): ... New macros, implementing the
   cricital section of incrementing/decrementing pointers, while delegating
   the more complex, rarely used incrementing/decrementing of chunks to ...
  (increment_chunk, decrement_chunk): ... New functions.
  (find_identical_prefix, find_identical_suffix): Adjust callers.

r1043427 | julianfoad | 2010-12-08 08:13:03 -0600 (Wed, 08 Dec 2010)

Expand move_file_back_and_forth and move_dir_back_and_forth tests to verify
issue #3429 ("svn mv A B; svn mv B A" generates replace without history).

* subversion/tests/cmdline/copy_tests.py
  (move_file_back_and_forth): Check expected status before commit.
  (move_dir_back_and_forth): Check expected status after executing the moves.

Patch by: Johan Corveleyn <jcorvel{_AT_}gmail.com>


r1043235 | jcorvel | 2010-12-07 17:50:05 -0600 (Tue, 07 Dec 2010)

On the diff-optimizations-bytes branch:

* BRANCH-README: indicate that work on diff3 and diff4 is in progress (changes
  for diff3 are present in my working copy, but some merge tests are still 
  failing).


r1042016 | jcorvel | 2010-12-03 15:37:51 -0600 (Fri, 03 Dec 2010)

Delete the diff-optimizations-tokens branch, since it will not be continued.

As discussed in http://svn.haxx.se/dev/archive-2010-12/0000.shtml, this branch
is discontinued for now, because it's becoming too complex, and there is a
working alternative (see diff-optimizations-bytes branch).


r1041583 | jcorvel | 2010-12-02 15:13:35 -0600 (Thu, 02 Dec 2010)

On the diff-optimizations-bytes branch: sync with trunk

r1040825 | jcorvel | 2010-11-30 17:27:51 -0600 (Tue, 30 Nov 2010)

On the diff-optimizations-bytes branch:

* BRANCH-README: Add some wild ideas (which were already mentioned in the
   diff-optimizations-tokens branch).


r1040807 | jcorvel | 2010-11-30 16:07:52 -0600 (Tue, 30 Nov 2010)

On the diff-optimizations-bytes branch:

* BRANCH-README: Add some TODO items.


r1039986 | jcorvel | 2010-11-28 18:06:08 -0600 (Sun, 28 Nov 2010)

On the diff-optimizations-tokens branch:

Add skeleton implementation of suffix scanning.

Getting tokens backwards (datasource_get_previous_token), and pushing back
suffix tokens (token_pushback_suffix), are still stub implementations, which
will be added in a follow up commit.

* subversion/include/svn_diff.h
  (svn_diff_fns_t): Add new function types datasource_get_previous_token and
   token_pushback_suffix. Add parameter open_at_end to datasource_open.

* subversion/libsvn_diff/diff_file.c
  (datasource_get_previous_token): New function, stub implementation.
  (token_pushback_suffix): New function, stub implementation.
  (datasource_open): Add parameter open_at_end. Add implementation to open the
   datasource at the end (read last chunk, point curp to the last byte). Make
   sure the actual file is only opened if hasn't been opened yet, so this
   function can be reused to jump to the end or the beginning of the file
   at will. While we are at it, remove local variables curp and endp, since
   they aren't needed anymore.

* subversion/libsvn_diff/diff_memory.c
  (datasource_get_previous_token): New function, stub implementation.
  (token_pushback_suffix): New function, stub implementation.
  (datasource_open): Add parameter open_at_end.

* subversion/libsvn_diff/token.c
  (svn_diff__get_tokens): Pass FALSE for parameter open_at_end to
   datasource_open, for backwards compatibility.
  (find_identical_suffix): New function.
  (find_identical_prefix): Remove parameter reached_one_eof, and convert it to
   a local variable, since it doesn't need to be returned anymore.
  (svn_diff__get_all_tokens): Add call to find_identical_suffix, before
   calling find_identical_prefix, and call datasource_open in between to
   reposition the datasource at the end and the start respectively.


r1039781 | jcorvel | 2010-11-27 16:57:17 -0600 (Sat, 27 Nov 2010)

On the diff-optimizations-tokens branch:

* subversion/libsvn_diff/token.c
  (find_identical_prefix): Remove redundant code by reshuffling while loop,
   incorporating reading of the first token.


r1038397 | jcorvel | 2010-11-23 18:17:34 -0600 (Tue, 23 Nov 2010)

On the diff-optimizations-tokens branch:

Update BRANCH-README with a TODO list and a list of "other wild ideas".


r1038390 | jcorvel | 2010-11-23 18:03:07 -0600 (Tue, 23 Nov 2010)

On the diff-optimizations-tokens branch:

Make svn_diff skip identical prefix to make diff and blame faster.

* subversion/include/svn_diff.h
  (svn_diff_fns_t): Add new function type token_pushback_prefix to the
   vtable. This function is needed to push back the last token that has been
   read during prefix scanning (the first non-matching line), so it can be
   read again (and checksummed) during the get_next_token phase.

* subversion/libsvn_diff/diff_memory.c
  (datasource_get_next_token): Make the checksum calculation optional (only
   calculate checksum if HASH is not NULL).
  (token_pushback_prefix): New function.
  (svn_diff__mem_vtable): Add new function token_pushback_prefix.

* subversion/libsvn_diff/diff_file.c
  (svn_diff__file_baton_t): Add member PREFIX_TOKENS, a linked list of pushed
   back prefix tokens.
  (datasource_get_next_token): Make the checksum calculation optional (only
   calculate checksum if HASH is not NULL). If applicable, use a pushed back
   prefix token to adjust the raw_length of a token that is being reread.
  (token_pushback_prefix): New function.
  (svn_diff__mem_vtable): Add new function token_pushback_prefix.

* subversion/libsvn_diff/diff.h
  (svn_diff__lcs): Add argument "prefix_lines".
  (svn_diff__get_all_tokens): New function declaration.

* subversion/libsvn_diff/token.c
  (find_identical_prefix): New function.
  (svn_diff__get_all_tokens): New function. The purpose of this function is to
   read the tokens from all datasources at once, so it can first scan for
   identical prefix and suffix.

* subversion/libsvn_diff/lcs.c
  (svn_diff__lcs): Added argument "prefix_lines". Use this to correctly set
   the offset of the sentinel position for EOF, even if one of the files
   became empty after eliminating the identical prefix.

* subversion/libsvn_diff/diff.c
  (svn_diff__diff): Add a chunk of "common" diff for identical prefix.
  (svn_diff_diff): Use new function svn_diff__get_all_tokens to get the tokens
   from original and modified at once (while scanning for identical prefix).
   Pass prefix_lines to svn_diff__lcs and svn_diff__diff.

* subversion/libsvn_diff/diff3.c
  (svn_diff_diff3): For now, don't use svn_diff__get_all_tokens yet.
   Pass prefix_lines = 0 to svn_diff__lcs.

* subversion/libsvn_diff/diff4.c
  (svn_diff_diff4): For now, don't use svn_diff__get_all_tokens yet.
   Pass prefix_lines = 0 to svn_diff__lcs.


r1037375 | jcorvel | 2010-11-20 21:04:30 -0600 (Sat, 20 Nov 2010)

On the diff-optimizations-bytes branch: put TODO list in BRANCH-README

r1037374 | jcorvel | 2010-11-20 21:02:31 -0600 (Sat, 20 Nov 2010)

On the diff-optimizations-bytes branch:

Make svn_diff skip identical suffix, in addition to prefix.

* subversion/libsvn_diff/diff_file.c
  (svn_diff__file_baton_t): Inside the struct file_info, add members
   suffix_start_chunk and suffix_offset_in_chunk.
  (find_identical_suffix): New function.
  (datasources_open): Use find_identical_suffix to find the identical suffix
   of the datasources, so it can be excluded from the rest of the diff
   algorithm. From the identical suffix, 50 lines are kept to help the diff
   algorithm find the nicest possible diff representation in case of ambiguity.
  (datasource_get_next_token): Stop at start of identical suffix.


r1037371 | jcorvel | 2010-11-20 20:36:07 -0600 (Sat, 20 Nov 2010)

On the diff-optimizations-bytes branch:

Make svn_diff skip identical prefix to make diff and blame faster.

* subversion/include/svn_diff.h
  (svn_diff_fns_t): Added new function type datasources_open to the vtable.

* subversion/libsvn_diff/diff_memory.c
  (datasources_open): New function (does nothing).
  (svn_diff__mem_vtable): Added new function datasources_open.

* subversion/libsvn_diff/diff_file.c
  (increment_pointers, decrement_pointers): New functions.
  (is_one_at_bof, is_one_at_eof): New functions.
  (find_identical_prefix): New function.
  (datasources_open): New function, to open multiple datasources and find
   their identical prefix, so this can be excluded from the rest
   of the diff algorithm, as a performance optimization.
  (svn_diff__file_vtable): Added new function datasources_open.

* subversion/libsvn_diff/diff.h
  (svn_diff__get_tokens): Added argument "datasource_opened", to indicate that
   the datasource was already opened, and argument "prefix_lines", the number
   of identical prefix lines. Use prefix_lines as the starting offset for the
   token we're getting.

* subversion/libsvn_diff/token.c
  (svn_diff__get_tokens): Added arguments "datasource_opened" and
   "prefix_lines". Only open the datasource if datasource_opened is FALSE.
   Set the starting offset of the position list to the number of prefix_lines.

* subversion/libsvn_diff/lcs.c
  (svn_diff__lcs): Added argument "prefix_lines". Use this to correctly set
   the offset of the sentinel position for EOF, even if one of the files
   became empty after eliminating the identical prefix.

* subversion/libsvn_diff/diff.c
  (svn_diff__diff): Add a chunk of "common" diff for identical prefix.
  (svn_diff_diff): Use new function datasources_open to open original and
   modified at once and find their identical prefix. Pass
   prefix_lines to svn_diff__get_tokens, svn_diff__lcs and svn_diff__diff.

* subversion/libsvn_diff/diff3.c
  (svn_diff_diff3): Pass datasource_opened = FALSE and prefix_lines = 0 to 
   svn_diff__get_tokens. Pass prefix_lines = 0 to svn_diff__lcs.

* subversion/libsvn_diff/diff4.c
  (svn_diff_diff4): Pass datasource_opened = FALSE and prefix_lines = 0 to
   svn_diff__get_tokens. Pass prefix_lines = 0 to svn_diff__lcs.


r1037365 | jcorvel | 2010-11-20 19:17:44 -0600 (Sat, 20 Nov 2010)

On the diff-optimizations-tokens branch:

Add a BRANCH-README


r1037364 | jcorvel | 2010-11-20 19:06:06 -0600 (Sat, 20 Nov 2010)

On the diff-optimizations-bytes branch:

Add a BRANCH-README


r1037363 | jcorvel | 2010-11-20 18:48:20 -0600 (Sat, 20 Nov 2010)

On the diff-optimizations-bytes branch: sync with trunk.


r1037353 | jcorvel | 2010-11-20 17:14:55 -0600 (Sat, 20 Nov 2010)

Rename diff-optimizations branch to diff-optimizations-bytes, as opposed to
diff-optimizations-tokens.


r1037352 | jcorvel | 2010-11-20 17:12:49 -0600 (Sat, 20 Nov 2010)

Create diff-optimizations-tokens branch.


r1036306 | jcorvel | 2010-11-17 19:09:51 -0600 (Wed, 17 Nov 2010)

* subversion/tests/cmdline/copy_tests.py
  (copy_added_dir_with_copy): Remove obsolete comment about failure of this
   test (since it now passes). Add comment referring to the related issue 
   (#3474).

Approved by: danielsh


r1031271 | jcorvel | 2010-11-04 16:46:43 -0500 (Thu, 04 Nov 2010)

Create diff-optimizations branch.


r1031259 | jcorvel | 2010-11-04 16:27:11 -0500 (Thu, 04 Nov 2010)

* COMMITTERS: Add jcorvel as partial committer (diff-optimizations branch).


r1021760 | rhuijben | 2010-10-12 07:37:23 -0500 (Tue, 12 Oct 2010)

Make our private IS_ENOTDIR() like macro check another error code that is
not handled by apr versions < 1.4.0, but that is returned from apr_stat()
indicating that a (parent) directory is not found.

* subversion/include/svn_types.h
  (SVN__APR_STATUS_IS_ENOTDIR): Also check for ERROR_DIRECTORY on Windows.

Found by: Johan Corveleyn <jcorvel{_AT_}gmail.com>


r987893 | stefan2 | 2010-08-22 07:55:10 -0500 (Sun, 22 Aug 2010)

Add missing #include.

* subversion/mod_dav_svn/repos.c
  add svn_ctype.h include

Patch by: Johan Corveleyn <jcorvel@gmail.com>


r987875 | stefan2 | 2010-08-22 06:46:21 -0500 (Sun, 22 Aug 2010)

Fix VisualStudio project file generation script.

* build.conf
  (msvc-export): add new private headers

Patch by: Johan Corveleyn <jcorvel@gmail.com>

r987872 | stefan2 | 2010-08-22 06:43:47 -0500 (Sun, 22 Aug 2010)

Build file generation scripts don't handle uppercase identifiers.
Therefore, we can't have NULL or similar substrings in public identifiers.

* subversion/include/private/svn_temp_serializer.h
  (svn_temp_serializer__set_null): rename from svn_temp_serializer__set_NULL
* subversion/libsvn_subr/svn_temp_serializer.c
  (svn_temp_serializer__set_null): dito
* subversion/libsvn_fs_fs/dag.c
  (svn_fs_fs__dag_serializ): adapt usage

Patch by: Johan Corveleyn <jcorvel@gmail.com>


r987869 | stefan2 | 2010-08-22 06:37:38 -0500 (Sun, 22 Aug 2010)

Fix VisualStudio build: memory size calculation for variable size 
arrays is not portable.

* subversion/libsvn_fs_fs/temp_serializer.c
  (serialize_dir, serialize_txdelta_ops): fix array size calculation

Suggested by: Johan Corveleyn <jcorvel@gmail.com>

r987868 | stefan2 | 2010-08-22 06:32:10 -0500 (Sun, 22 Aug 2010)

Fix usage of qsort() to make it more portable. The comparison function
type name is not "standardized", so we can't use it for casting.

* subversion/libsvn_fs_fs/temp_serializer.c
  (compare_dirent_id_names):
   change signature such that qsort does not require casting it
  (serialize_dir): remove the cast operator

Found by: Johan Corveleyn <jcorvel@gmail.com>

r987865 | stefan2 | 2010-08-22 06:16:59 -0500 (Sun, 22 Aug 2010)

(Partly) fix Visual Studio build: 
the declaration order was not conforming to C

* subversion/libsvn_subr/svn_temp_serializer.c
  (store_current_end_pointer): fix target_ptr declaration

Patch by: Johan Corveleyn <jcorvel@gmail.com>

r957874 | julianfoad | 2010-06-25 05:17:59 -0500 (Fri, 25 Jun 2010)

Let "svn blame" truncate long author names to keep the column width
fixed to 10 characters, as discussed in
<http://svn.haxx.se/dev/archive-2010-04/0463.shtml>.

* subversion/svn/blame-cmd.c
  (print_line_info): Change the printf format to truncate author names
    to 10 characters.

Patch by: Johan Corveleyn <jcorvel{_AT_}gmail.com>


r955895 | julianfoad | 2010-06-18 03:59:16 -0500 (Fri, 18 Jun 2010)

Make "svn blame" use a consistent column width even when revision
numbers are >= 1000000.

Patch by: Johan Corveleyn <jcorvel{_AT_}gmail.com>

* subversion/include/svn_client.h
  (svn_client_blame_receiver3_t): Add parameters start_revnum and end_revnum,
    useful to the blame receiver in formatting its output.
* subversion/libsvn_client/blame.c
  (svn_client_blame5): Pass start_revnum and end_revnum to the blame receiver.
* subversion/svn/blame-cmd.c
  (blame_receiver_xml): Implement the updated svn_client_blame_receiver3_t.
  (blame_receiver): Implement the updated svn_client_blame_receiver3_t, and
    pass end_revnum to print_line_info.
  (print_line_info): Add parameter end_revnum, use it to increase the column
    width for the revision number if needed.
* subversion/libsvn_client/deprecated.c
  (blame_wrapper_receiver2): Implement the updated
    svn_client_blame_receiver3_t.