]> Tony Duckles's Git Repositories (git.nynim.org) - svn2svn.git/log
svn2svn.git
8 years agoSet LC_MESSAGES to C
Thomas Quinot [Mon, 27 Jul 2015 15:27:43 +0000 (17:27 +0200)]
Set LC_MESSAGES to C

This is required to ensure that we get the expected standard English
output from the svn command line client, not some localized variant.

10 years agoRevprop change Windows example
Dawid Ciecierski [Fri, 11 Apr 2014 04:03:06 +0000 (06:03 +0200)]
Revprop change Windows example

For completeness a plug-and-play version of a repository hook required
for preserving revision dates and authors.

10 years agoFix hardcoded line endings
Dawid Ciecierski [Fri, 11 Apr 2014 03:42:32 +0000 (05:42 +0200)]
Fix hardcoded line endings

A little change that makes the script compatible with the Windows
Subversion binary, which uses "\r\n" rather than "\n" line endings as it
does on Unix. With this change I had no problem using the tool under
Windows.

11 years agoUpdate links to http://nynim.org/code/svn2svn/
Tony Duckles [Sat, 9 Feb 2013 02:17:46 +0000 (20:17 -0600)]
Update links to http://nynim.org/code/svn2svn/

Renamed /projects/ -> /code/ on my personal site. Updating external
referencers.

11 years agoClean-up unit-tests
Tony Duckles [Sat, 13 Oct 2012 16:53:01 +0000 (09:53 -0700)]
Clean-up unit-tests

* Move to a stricter unit-test naming convention:
  * t1xxx-*.sh are the svnreplay tests.
  * t2xxx-*.sh are the svnancest tests.
* Support multi-jobbing unit-tests.  Make all the unit-tests
  multi-job safe, e.g. use unique repo's and wc's for each test.
* Ensure all test logic is run via assert's.
* Introduce "prove" Makefile target for unit-tests, to allow
  running all the tests multi-jobbed via prove.

11 years agoSupport caller-supplied wc_target path
Tony Duckles [Sat, 13 Oct 2012 18:13:23 +0000 (11:13 -0700)]
Support caller-supplied wc_target path

Introduce a "--wc" command-line argument to svnreplay.py. The
immediate need is so that we can use "prove" with multiple jobs to
parallelize running the unit-tests.

11 years agoRemove deprecated make-replay-repo script
Tony Duckles [Sat, 13 Oct 2012 16:12:25 +0000 (09:12 -0700)]
Remove deprecated make-replay-repo script

The t10?-replay-* scripts now cover all the cases (and then some)
that the make-replay-repo script tried to cover.

11 years agoMinor documentation tweaks
Tony Duckles [Thu, 27 Sep 2012 06:01:04 +0000 (01:01 -0500)]
Minor documentation tweaks

* svn2svn/run/svnreplay.py: Minor tweaks to the documentation for
  some of the command-line args.
* README.mkd: Sync with the latest "--help" contents.

11 years agosvn2svn v1.7.0 v1.7.0
Tony Duckles [Sun, 23 Sep 2012 03:22:04 +0000 (22:22 -0500)]
svn2svn v1.7.0

11 years agoMisc documentation tweaks
Tony Duckles [Sun, 23 Sep 2012 03:19:40 +0000 (22:19 -0500)]
Misc documentation tweaks

* svn2svn/run/svnreplay.py (main): Include mention of arguments
  passed to the before-commit script.
* svn2svn/run/svnreplay.py (do_svn_add): Re-word comment for
  clarity.

11 years agoSupport before-commit hook option (--pre-commit)
Tony Duckles [Tue, 21 Aug 2012 04:05:51 +0000 (23:05 -0500)]
Support before-commit hook option (--pre-commit)

Allow the caller to optionally run a shell script before each
replayed commit. This could be useful if you wanted to modify the
replayed file/directory contents, e.g. strip-out a certain file at a
certain source revision, etc.

* svn2svn/run/svnreplay.py (commit_from_svn_log_entry): Support
  beforecommit hook.
* tests/t0103*: Add unit-tests for new --pre-commit option.

* svn2svn/run/svnreplay.py (main): Minor tweaks to command-line
  argument help-text.
* svn2svn/shell.py (_run_raw_command): Fix typo

11 years agoInclude --verify-all test-cases
Tony Duckles [Tue, 14 Aug 2012 05:37:56 +0000 (00:37 -0500)]
Include --verify-all test-cases

Include a --verify-all test-case for all the t01??.sh unit-tests, to
run the self-test that the replay ran correctly.

11 years agoPurge tests/_wc_* during "make clean"
Tony Duckles [Tue, 14 Aug 2012 01:57:57 +0000 (20:57 -0500)]
Purge tests/_wc_* during "make clean"

As part of the "clean" Makefile target, purge any _wc_* directories
in the tests/ folder. Each of the individual unit-test scripts
*should* take care of purging these _wc_* folders, but include in
the Makefile just as a catch-all.

11 years agoDelete check-replay-repo.sh
Tony Duckles [Fri, 10 Aug 2012 03:41:02 +0000 (22:41 -0500)]
Delete check-replay-repo.sh

This code was refactored to create the more-generally-callable
diff-repo.sh script which allows comparing two arbitrary URLs.

11 years agoCreate _repo_ref if needed
Tony Duckles [Fri, 10 Aug 2012 03:38:06 +0000 (22:38 -0500)]
Create _repo_ref if needed

Add Makefile targets and prereq's to call make-ref-repo.sh to build
_repo_ref if it doesn't already exist. This way, "make all" in a
freshly-cloned Git copy will automagically build the _repo_ref repo,
which is needed for the svnreplay-based tests.

11 years agoFix t0001-diff-repo test descriptions
Tony Duckles [Fri, 10 Aug 2012 03:37:19 +0000 (22:37 -0500)]
Fix t0001-diff-repo test descriptions

11 years agoMove shared code to replay-lib.sh
Tony Duckles [Fri, 10 Aug 2012 03:32:56 +0000 (22:32 -0500)]
Move shared code to replay-lib.sh

* tests/replay-lib.sh (init_replay_repo): Move duplicated code from
  t01??*.sh scripts to create an empty repo for svnreplay to this
  shared function.
* tests/t010?*.sh: Use replay-lib.sh and init_replay_repo().

* tests/t010?*.sh: Respect $TEST_DIRECTORY shell variable rather
  than hard-coding `pwd`.

11 years agotest-lib: test_expect_failure() expected failure is ok
Tony Duckles [Fri, 10 Aug 2012 03:26:07 +0000 (22:26 -0500)]
test-lib: test_expect_failure() expected failure is ok

The Git test-lib test_expect_failure() behavior is to call separate
test_known_ok/test_known_broken_failure helper tags which puts the
"known failure" results into separate buckets. This is the opposite
of what I want. I want test_expect_failure() to be the true-opposite
of test_expect_success(): if we expect a test to fail (i.e. exit 1),
then say the test passed if the command failed.

* tests/test-lib-functions.sh (test_expect_failure): Change
  test_expect_failure() to be the true-opposite of
  test_expect_success(): test succeeds if command exits with error
  code.

11 years agoImproved unit-tests
Tony Duckles [Thu, 9 Aug 2012 03:38:33 +0000 (22:38 -0500)]
Improved unit-tests

Refactor the old-style make-replay-repo/check-replay-repo scripts
into the new test framework, for easier Makefile-based testing.

11 years agoTest framework
Tony Duckles [Thu, 9 Aug 2012 03:36:45 +0000 (22:36 -0500)]
Test framework

Copy and modify parts of the Git test framework for usage here.

11 years agoUse proper exit-codes
Tony Duckles [Wed, 8 Aug 2012 13:21:21 +0000 (08:21 -0500)]
Use proper exit-codes

Use proper exit-codes, so shell-based callers can infer
success/failure of the command:
"exit 0" for success
"exit 1" for failure

11 years agoIntroduce 'svnancest' utility
Tony Duckles [Wed, 8 Aug 2012 03:00:26 +0000 (22:00 -0500)]
Introduce 'svnancest' utility

Introduce a helper utility for calling find_svn_ancestors(), to show
full ancestry ("svn copy" history) for a given starting URL
(optionally at a specific revision).

* svn2svn/run/svnacest.py: Adding
* svn2svn/run/common.py (in_svn, is_child_path, join_path,
  find_svn_ancestors): Move common helper functions to new separate
  library, for sharing with svn2svn/run/svnacest.py.
* svn2svn/svnclient.py (valid_svn_actions): Move this constant here
  from svn2svn/run/svnreplay.py.

11 years agoRename main utility from 'svn2svn.py' to 'svnreplay.py'
Tony Duckles [Sun, 5 Aug 2012 04:04:01 +0000 (23:04 -0500)]
Rename main utility from 'svn2svn.py' to 'svnreplay.py'

Rename the main utility executable for several reasons:
* Avoid overlapping with the 'svn2svn' module subdirectory.
* Make way for having other support utilities in the top-level folder.

11 years agosvn2svn v1.6.0 v1.6.0
Tony Duckles [Sun, 10 Jun 2012 15:21:18 +0000 (10:21 -0500)]
svn2svn v1.6.0

12 years agoProper quote-wrapping in test scripts
Tony Duckles [Wed, 11 Apr 2012 13:21:31 +0000 (08:21 -0500)]
Proper quote-wrapping in test scripts

Wrap all path-variable references in double-quotes, so that if `pwd`
contains spaces bash will interpret things correctly. For URLs,
replace spaces with %20, though that's the extent of the
URL-encoding we try to do in these simple shell scripts.

12 years agoBetter "svn list" handling
Tony Duckles [Thu, 12 Apr 2012 01:46:34 +0000 (20:46 -0500)]
Better "svn list" handling

* svn2svn/svnclient.py (list, _parse_svn_list_xml): Add a tag for
proper "svn list --xml" handling.
* svn2svn/run/svn2svn.py: Remove get_svn_dirlist() in favor of using
svnclient.list(). Replace all usages of run_svn("svn list") with
svnclient.list(), which eliminates all hacky .split("\n") cases.

* svn2svn/run/svn2svn.py (verify_commit): Move unconditioned "OK"
ui.status line behind an else, so that "OK" message isn't
incorrectly logged when "FAIL" message is logged.

12 years agoUse "--ignore-externals" for "svn update" and "svn export"
Tony Duckles [Thu, 12 Apr 2012 00:33:46 +0000 (19:33 -0500)]
Use "--ignore-externals" for "svn update" and "svn export"

* svn2svn/svnclient.py (update/remove/export): Introduce wrapper
functions for update/remove/export. For update and remove, pass
"--ignore-externals".

* svn2svn/svnclient.py: Rename private functions to have a leading
underscore.
* svn2svn/svnclient.py: Rename public functions to match svn
sub-command name: get_svn_info -> info, get_svn_status -> status,
get_prop_val -> propget, etc.

* svn2svn/run/svn2svn.py (verify_commit): Remove extraneous
safe_path() call. svnclient.run_svn_log() already handles this.

12 years agoCorrectly handle source_url/target_url with chars needing URL-encoding
Tony Duckles [Mon, 9 Apr 2012 00:45:30 +0000 (19:45 -0500)]
Correctly handle source_url/target_url with chars needing URL-encoding

Use urllib.unquote() to URL-decode source_url/target_url values.
All URLs passed to run_svn() should go through svnclient.safe_path()
and we don't want to end-up *double* urllib.quote'ing if the user-
supplied source/target URL's are already URL-encoded or have chars
which need URL-encoding.

* svn2svn/run/svn2svn.py (real_main): Maintain source_url/target_url
as URL-decoded values.
* svn2svn/run/svn2svn.py (gen_tracking_revprops, build_rev_map):
Translate "internal" source_url back to an "external" (URL-encoded)
value.
* svn2svn/svnclient (parse_svn_info_xml): URL-decode 'url' and
'repos_url' values, since all downstream consumers should want these
to be in the "internal" (URL-decoded) format.
* tests/make-ref-repo.sh: Add test-cases to further stress-test
URL-encoding/decoding.

12 years agoREADME updates
Tony Duckles [Sun, 8 Apr 2012 01:24:23 +0000 (20:24 -0500)]
README updates

12 years agosvn2svn v1.5.0 v1.5.0
Tony Duckles [Sat, 7 Apr 2012 18:28:17 +0000 (13:28 -0500)]
svn2svn v1.5.0

12 years agoBetter path and URL encoding/escaping
Tony Duckles [Sat, 7 Apr 2012 18:21:03 +0000 (13:21 -0500)]
Better path and URL encoding/escaping

* svn2svn/svnclient.py (safe_path): Creating to abstract building
paths which are safe to pass as svn command-line args. For URL's,
use urllib.quote() to URL-encode paths. For local paths, if file/dir
name includes "@", add a trailing "@" so svn doesn't get confused
about unintended text being parsed as a peg-revision.
* svn2svn/svnclient.py: Use safe_path() for all local and URL paths.
* svn2svn/run/svn2svn.py: Use svnclient.safe_path() for all local
and URL paths.

12 years agoSkip ANSI escape color codes for NT
Tony Duckles [Sat, 7 Apr 2012 02:49:14 +0000 (21:49 -0500)]
Skip ANSI escape color codes for NT

* svn2svn/ui.py (status): Don't try to write ANSI escape sequences
for color-mode for NT since cmd.exe doesn't support them.

12 years agoUse shell.rmtree
Tony Duckles [Sat, 7 Apr 2012 02:35:00 +0000 (21:35 -0500)]
Use shell.rmtree

* svn2svn/run/svn2svn.py: Use svn2svn.shell.rmtree rather than
shutil.rmtree, to fix Windows-compatibility issues.

12 years agoTest scripts require /bin/bash
Tony Duckles [Wed, 28 Mar 2012 01:07:30 +0000 (20:07 -0500)]
Test scripts require /bin/bash

* tests/make-*.sh: She-bang /bin/bash, not /bin/sh.

12 years agoFix tag documentation
Tony Duckles [Wed, 28 Mar 2012 01:03:01 +0000 (20:03 -0500)]
Fix tag documentation

* svn2svn/ui.py (status): Fix documented default value of "truncate"
param.

12 years agoChange verify-mode to report on all errors before raising exception
Tony Duckles [Sun, 25 Mar 2012 13:39:17 +0000 (08:39 -0500)]
Change verify-mode to report on all errors before raising exception

* svn2svn/run/svn2svn.py (verify_commit): Always finish a full pass,
writing out any error messages, and raise the VerificationError
exception at the end if needed.

* svn2svn/run/svn2svn.py (verify_commit): Make less verbose by
default. Show a progress message every 500 paths rather than logging
a message for every path.

12 years agoREADME updates
Tony Duckles [Sun, 25 Mar 2012 04:59:01 +0000 (23:59 -0500)]
README updates

12 years agoFix edge-case problem with continue handling for --keep-revnum mode
Tony Duckles [Sun, 25 Mar 2012 04:49:10 +0000 (23:49 -0500)]
Fix edge-case problem with continue handling for --keep-revnum mode

* svn2svn/run/svn2svn.py (real_main): Check for --keep-revnum
problem condition inside main loop rather than ahead, so that we
compare the last target_url revision to the *next* source_url rev to
be replayed, not the *last* source_url rev that was replayed.

* svn2svn/run/svn2svn.py (keep_revnum): Use BreakHandler to ensure
that "Committed revision ..." message is always shown if we ran a
keep-revnum mode "svn commit".

* svn2svn/run/svn2svn.py (real_main): Fix "Finished at source
revision ..." message to be more accurate, to display the last
source_url rev replayed. Previously, in some cases (e.g. keep-revnum
mode) this could display the *next* source_url rev to be replayed.

12 years agoDon't allow starting a fresh (non-continue) replay into a non-empty target directory...
Tony Duckles [Sun, 25 Mar 2012 04:26:02 +0000 (23:26 -0500)]
Don't allow starting a fresh (non-continue) replay into a non-empty target directory (by default)

* svn2svn/run/svn2svn.py (real_main): Prevent user from starting a
fresh replay into a non-empty target directory, since chances are
they wanted to do a continue instead. Introduce "--force" arg to
allow replaying into a non-empty target directory.

12 years agoDon't use parser.error() for error messages
Tony Duckles [Sun, 25 Mar 2012 04:21:41 +0000 (23:21 -0500)]
Don't use parser.error() for error messages

* svn2svn/run/svn2svn.py (real_main): Don't use parser.error() for
error messages.

* svn2svn/run/svn2svn.py (commit_from_svn_log_entry): Include source
revision # in "Committed revision ..." message, so output is still
useful in non-verbose mode.

* svn2svn/run/svn2svn.py (real_main): Rename "_tmp_wc_target" to
* "_wc_target_tmp" (keep-revnum temp WC), for "_wc_*" matching.

12 years agoURL encode user-supplied source_url and target_url
Tony Duckles [Sun, 25 Mar 2012 00:51:57 +0000 (19:51 -0500)]
URL encode user-supplied source_url and target_url

* svn2svn/run/svn2svn.py (real_main): URL encode user-supplied
source_url and target_url values.

12 years agoBe more quiet by default
Tony Duckles [Sat, 24 Mar 2012 20:15:19 +0000 (15:15 -0500)]
Be more quiet by default

* svn2svn/run/svn2svn.py (disp_svn_log_summary, real_main): Only
display source rev info for --verbose mode.

* svn2svn/run/svn2svn.py (commit_from_svn_log_entry): Move
"Committed revision %s." message down after the post-commit revprops
have been updated, since the commit+revprops are an atomic unit.

12 years agoFor options.keep_author, update via post-commit rev-prop
Tony Duckles [Sat, 24 Mar 2012 20:05:33 +0000 (15:05 -0500)]
For options.keep_author, update via post-commit rev-prop

Rather than using "svn commit --username %author%", mirror the
source author info by setting the "svn:author" revprop post-commit
the same as we do for "svn:date" (options.keep_date). This frees us
up to be able to use --username in the future for legitimate
source/target repo auth.

* svn2svn/run/svn2svn.py (commit_from_svn_log_entry): Update
  "svn:author" via post-commit revprop rather than --username.
* README.mkd: Reflect new "svn:author" handling.

12 years agoPrevent KeyboardInterrupt's during SVN commit
Tony Duckles [Sat, 24 Mar 2012 19:31:26 +0000 (14:31 -0500)]
Prevent KeyboardInterrupt's during SVN commit

* svn2svn/run/breakhandler.py: Adding
* svn2svn/run/svn2svn.py (commit_from_svn_log_entry): Use
BreakHandler to ensure that "svn commit" and post-commit rev-prop
updating happen as an atomic unit.

12 years agoVerify-mode v1.4.0
Tony Duckles [Sat, 24 Mar 2012 18:45:29 +0000 (13:45 -0500)]
Verify-mode

Add command-line args for verifying content and ancestry, i.e. for
self-testing the replay. Compare the source vs. target history to
make sure we ended-up with equivalent target revisions for each
applicable source revision.

* svn2svn/run/svn2svn.py (verify_commit): Adding.
* tests/make-ref-repo.sh: Add tests for source revisions which
we'll never have an equivalent target revision for, e.g.
svn:mergeinfo property changes.

12 years agoMore fixes to iter_svn_log_entries ancestry-handling
Tony Duckles [Fri, 16 Mar 2012 03:23:08 +0000 (22:23 -0500)]
More fixes to iter_svn_log_entries ancestry-handling

* svn2svn/svnclient.py (iter_svn_log_entries): Correctly use and
respect ancestors() array: look for the next copyfrom_rev, and once
we crawl past the last copy-from then start at the final
path+revision.

* svn2svn/run/svn2svn.py (process_svn_log_entry): For action='R'
don't run "svn remove" command if path_offset="", i.e. don't try to
remove the root of the WC.

12 years agoFix iter_svn_log_entries ancestry-handling problems
Tony Duckles [Thu, 15 Mar 2012 03:41:00 +0000 (22:41 -0500)]
Fix iter_svn_log_entries ancestry-handling problems

Change return format of find_svn_ancestors() to include
copyfrom_path+copyfrom_rev info.  We need this in iter_svn_log_entries()
for correctly "svn log"'ing over only valid ancestry. Previously, we
were basically assuming that copyfrom_rev was always revision-1, and
trying to "svn log" on that revision-range can yield errors.

* svn2svn/run/svn2svn.py (find_svn_ancestors): Change return format
so that each entry in the array is a path+revision+copyfrom_path+copyfrom_rev
tuplet.
* svn2svn/run/svn2svn.py (do_svn_add): Minor changes to support new
find_svn_ancestors() return format.

* svn2svn/run/svn2svn.py (do_svn_add_dir): Fix local-not-remote
handling, to correctly handling directories.

12 years agoCorrectly crawl source_url's ancestry back to origin, if any
Tony Duckles [Thu, 15 Mar 2012 01:13:32 +0000 (20:13 -0500)]
Correctly crawl source_url's ancestry back to origin, if any

* svn2svn/svnclient.py (iter_svn_log_entries): Support new optional
'ancestors' param. Use that to correctly grab revision-chunks,
following the ancestry history.
* svn2svn/run/svn2svn.py (join_path, in_ancestors): New functions.
* svn2svn/run/svn2svn.py (real_main): Use find_svn_ancestors() to get ancestry
of source_url and pass that to downstream functions.

12 years agoRefactor find_svn_ancestors() to make more generic
Tony Duckles [Tue, 6 Mar 2012 04:01:28 +0000 (22:01 -0600)]
Refactor find_svn_ancestors() to make more generic

* svn2svn/run/svn2svn.py (find_svn_ancestors): Make 'stop_base_path'
optional so this function can be used generally to get the full
ancestry history.

* svn2svn/svnclient.py (get_first_svn_log_entry, get_last_svn_log_entry):
Add optional 'stop_on_copy' param and pass through to get_one_svn_log_entry().

12 years agoEnsure target WC is clean/reverted when continuing.
Tony Duckles [Sat, 18 Feb 2012 22:44:50 +0000 (16:44 -0600)]
Ensure target WC is clean/reverted when continuing.

12 years agoPerf: Only "svn update" when needed. This means a mixed-revision WC, but much-faster...
Tony Duckles [Sat, 18 Feb 2012 22:42:09 +0000 (16:42 -0600)]
Perf: Only "svn update" when needed. This means a mixed-revision WC, but much-faster replays for large WC's.

12 years agoUpdate parse_svn_status_xml() to use defensive conditional rather than assert for...
Tony Duckles [Sat, 18 Feb 2012 22:36:43 +0000 (16:36 -0600)]
Update parse_svn_status_xml() to use defensive conditional rather than assert for base_dir prefix checking

12 years agoFix process_svn_log_entry() to not include action="M" paths in skip_paths, so that...
Tony Duckles [Sat, 18 Feb 2012 22:35:04 +0000 (16:35 -0600)]
Fix process_svn_log_entry() to not include action="M" paths in skip_paths, so that do_svn_add() will try to check+create correct ancestry.
Update process_svn_log_entry() to calculate 'kind' if kind='none'.

12 years agoFix a place in find_svn_ancestors() which should've been using is_child_path().
Tony Duckles [Wed, 15 Feb 2012 20:48:14 +0000 (14:48 -0600)]
Fix a place in find_svn_ancestors() which should've been using is_child_path().
Display progress messages during build_rev_map(), for target repo's with lots of target_url commits to check.

12 years agoFix another --keep-revnum edge-case
Tony Duckles [Thu, 16 Feb 2012 01:42:53 +0000 (19:42 -0600)]
Fix another --keep-revnum edge-case

12 years agoCorrectly handle --keep-revnum mode during initial import
Tony Duckles [Sun, 12 Feb 2012 17:34:47 +0000 (11:34 -0600)]
Correctly handle --keep-revnum mode during initial import

12 years agoUpdates to README
Tony Duckles [Sat, 11 Feb 2012 22:11:03 +0000 (16:11 -0600)]
Updates to README

12 years agoUpdate README for --keep-date and --keep-revnum support
Tony Duckles [Sat, 11 Feb 2012 21:47:37 +0000 (15:47 -0600)]
Update README for --keep-date and --keep-revnum support

12 years agoAdd --keep-revnum support
Tony Duckles [Sat, 11 Feb 2012 21:38:25 +0000 (15:38 -0600)]
Add --keep-revnum support

12 years agoAdd --keep-date, --keep-prop, --archive, --log-author, --log-date command line args v1.2.0
Tony Duckles [Sat, 11 Feb 2012 21:36:21 +0000 (15:36 -0600)]
Add --keep-date, --keep-prop, --archive, --log-author, --log-date command line args
Add hook-examples/pre-revprop-change_example.txt

12 years agoBetter options.svn_rev parsing and validation
Tony Duckles [Sat, 11 Feb 2012 21:30:08 +0000 (15:30 -0600)]
Better options.svn_rev parsing and validation

12 years agoMake 'options' a global var
Tony Duckles [Sat, 11 Feb 2012 21:11:56 +0000 (15:11 -0600)]
Make 'options' a global var

12 years agoPerf Enh: Add skip_paths handling to do_svn_add(), to skip paths which will be handle...
Tony Duckles [Thu, 9 Feb 2012 04:21:11 +0000 (22:21 -0600)]
Perf Enh: Add skip_paths handling to do_svn_add(), to skip paths which will be handled later by process_svn_log_entry().

12 years agoSupport SVN versioned property updating
Tony Duckles [Thu, 9 Feb 2012 03:33:16 +0000 (21:33 -0600)]
Support SVN versioned property updating

12 years agoUpdate process_svn_log_entry() to calculate d['kind'] if missing.
Tony Duckles [Thu, 9 Feb 2012 03:25:24 +0000 (21:25 -0600)]
Update process_svn_log_entry() to calculate d['kind'] if missing.
Back-out changes from parse_svn_log_xml() to auto-calculate d['kind'] if not returned by "svn log --xml", since not all callers need d['kind']; just calculate on-demand where needed.

12 years agoFix copy-from handling and parent-path checking in get_kind()
Tony Duckles [Thu, 9 Feb 2012 03:18:24 +0000 (21:18 -0600)]
Fix copy-from handling and parent-path checking in get_kind()

12 years agoUse is_child_path() for correct path-is-child-of-parent-path checking.
Tony Duckles [Thu, 9 Feb 2012 03:11:43 +0000 (21:11 -0600)]
Use is_child_path() for correct path-is-child-of-parent-path checking.
Add all changed_path's to commit_paths; don't use add_path() anymore.
Don't use add_path() for managing commit_paths

12 years agoSupport revision range in --revision, both start and end point
Tony Duckles [Thu, 9 Feb 2012 01:28:32 +0000 (19:28 -0600)]
Support revision range in --revision, both start and end point

12 years agoFix iter_svn_log_entries() to handle chunks which have no matching entries.
Tony Duckles [Wed, 8 Feb 2012 04:04:42 +0000 (22:04 -0600)]
Fix iter_svn_log_entries() to handle chunks which have no matching entries.
Fix iter_svn_log_entries() to enforce a max_chunk_length.

12 years agoFix parse_svn_log_xml() to calculate d['kind'] if not returned by "svn log --xml...
Tony Duckles [Wed, 8 Feb 2012 03:43:58 +0000 (21:43 -0600)]
Fix parse_svn_log_xml() to calculate d['kind'] if not returned by "svn log --xml", to handle commits made on early SVN versions

12 years agoHandle empty "svn log" commit messages
Tony Duckles [Sat, 4 Feb 2012 04:50:14 +0000 (22:50 -0600)]
Handle empty "svn log" commit messages

12 years agoChange iter_svn_log_entries() back to getting smaller chunks, for better performance...
Tony Duckles [Sat, 4 Feb 2012 04:34:47 +0000 (22:34 -0600)]
Change iter_svn_log_entries() back to getting smaller chunks, for better performance on huge repositories.
Clarify safe iter_svn_log_entries() use-cases.
Use iter_svn_log_entries() where possible.

12 years agoAdd Links section to README
Tony Duckles [Thu, 2 Feb 2012 02:28:05 +0000 (20:28 -0600)]
Add Links section to README

12 years agoUpdate def process_svn_log_entry() to enumerate possible d['kind'] cases
Tony Duckles [Thu, 2 Feb 2012 02:03:54 +0000 (20:03 -0600)]
Update def process_svn_log_entry() to enumerate possible d['kind'] cases

12 years agoUpdate build_rev_map() to gracefully handle case where a target_rev has revprops...
Tony Duckles [Wed, 1 Feb 2012 03:43:37 +0000 (21:43 -0600)]
Update build_rev_map() to gracefully handle case where a target_rev has revprops but no svn2svn:* revprops

12 years agoMake module-level variables for source_*/target_*/rev_map
Tony Duckles [Sun, 29 Jan 2012 22:35:25 +0000 (17:35 -0500)]
Make module-level variables for source_*/target_*/rev_map

12 years agoMisc code clean-up
Tony Duckles [Sun, 29 Jan 2012 02:36:27 +0000 (21:36 -0500)]
Misc code clean-up

12 years agoUpdate README.mkd and documentation
Tony Duckles [Sat, 28 Jan 2012 15:26:37 +0000 (10:26 -0500)]
Update README.mkd and documentation

12 years agoImprove optparse formatting v1.1.0
Tony Duckles [Sat, 28 Jan 2012 05:00:05 +0000 (00:00 -0500)]
Improve optparse formatting

12 years ago* Add new --dry-run and --limit command-line args
Tony Duckles [Fri, 27 Jan 2012 18:53:34 +0000 (12:53 -0600)]
* Add new --dry-run and --limit command-line args
* Add error classes for InternalError and VerificationError
* Move all optparser handling to main()

12 years agoMigrate shared code to commit_from_svn_log_entry()
Tony Duckles [Fri, 27 Jan 2012 18:51:04 +0000 (12:51 -0600)]
Migrate shared code to commit_from_svn_log_entry()

12 years agoAdditive verbosity command-line args
Tony Duckles [Thu, 26 Jan 2012 06:32:15 +0000 (00:32 -0600)]
Additive verbosity command-line args

12 years agoAdd test revprop case. Fix some non-appending echo's.
Tony Duckles [Thu, 26 Jan 2012 06:07:03 +0000 (00:07 -0600)]
Add test revprop case. Fix some non-appending echo's.

12 years agoNo need to pre-throttle commit_paths in process_svn_log_entry()
Tony Duckles [Thu, 26 Jan 2012 05:25:06 +0000 (23:25 -0600)]
No need to pre-throttle commit_paths in process_svn_log_entry()

12 years agoNo need to defer "svn remove" actions anymore, due to earlier rewrites
Tony Duckles [Thu, 26 Jan 2012 05:16:53 +0000 (23:16 -0600)]
No need to defer "svn remove" actions anymore, due to earlier rewrites

12 years ago* Carry-forward revprop values from source repo
Tony Duckles [Thu, 26 Jan 2012 05:13:00 +0000 (23:13 -0600)]
* Carry-forward revprop values from source repo
* Make shared code for generating list of svn2svn:* source-tracking revprops

12 years agoBetter "Usage" help-text
Tony Duckles [Wed, 25 Jan 2012 06:08:02 +0000 (00:08 -0600)]
Better "Usage" help-text

12 years agoRemove obsolete pre-revprop-change.example.sh
Tony Duckles [Wed, 25 Jan 2012 05:44:25 +0000 (23:44 -0600)]
Remove obsolete pre-revprop-change.example.sh

12 years agoContinue-mode support w/ rev_map
Tony Duckles [Wed, 25 Jan 2012 05:40:32 +0000 (23:40 -0600)]
Continue-mode support w/ rev_map

12 years agoMerge branch 'modules' into develop
Tony Duckles [Tue, 24 Jan 2012 05:39:39 +0000 (23:39 -0600)]
Merge branch 'modules' into develop

12 years agoRun make-replay-repo in verbose-mode
Tony Duckles [Tue, 24 Jan 2012 05:38:34 +0000 (23:38 -0600)]
Run make-replay-repo in verbose-mode

12 years agoRemove HEAD-specific short-circuiting
Tony Duckles [Tue, 24 Jan 2012 05:35:01 +0000 (23:35 -0600)]
Remove HEAD-specific short-circuiting

12 years ago* Use ui.status for all status messages (verbose and debug)
Tony Duckles [Tue, 24 Jan 2012 05:31:02 +0000 (23:31 -0600)]
* Use ui.status for all status messages (verbose and debug)
* Show "Committed revision" after commits to target repo
* Fixes to in_svn()
* Show "svn status" results before cleanup when we catch an external-command exception

12 years agoMinor fixes to get_svn_status() handling
Tony Duckles [Tue, 24 Jan 2012 05:25:56 +0000 (23:25 -0600)]
Minor fixes to get_svn_status() handling

12 years agoDon't truncate status messages by default
Tony Duckles [Tue, 24 Jan 2012 05:24:58 +0000 (23:24 -0600)]
Don't truncate status messages by default

12 years agoAdd optional 'no_fail' param to run_svn() and downstream functions
Tony Duckles [Tue, 24 Jan 2012 05:24:02 +0000 (23:24 -0600)]
Add optional 'no_fail' param to run_svn() and downstream functions

12 years agoSupport 'color' named-param in ui.status()
Tony Duckles [Tue, 24 Jan 2012 03:56:11 +0000 (21:56 -0600)]
Support 'color' named-param in ui.status()

12 years agoMigrate to run/svn2svn.py v1.0.0
Tony Duckles [Tue, 24 Jan 2012 03:55:51 +0000 (21:55 -0600)]
Migrate to run/svn2svn.py

12 years agoAdd svn2svn specific changes
Tony Duckles [Sun, 22 Jan 2012 22:30:12 +0000 (16:30 -0600)]
Add svn2svn specific changes

12 years agoRemove hgsvn-centric exception classes
Tony Duckles [Sun, 22 Jan 2012 20:48:13 +0000 (14:48 -0600)]
Remove hgsvn-centric exception classes