]> Tony Duckles's Git Repositories (git.nynim.org) - svn2svn.git/log
svn2svn.git
9 years agoDo not URL-encode '+' characters in repo URLs
Thomas Quinot [Mon, 27 Jul 2015 15:19:57 +0000 (17:19 +0200)]
Do not URL-encode '+' characters in repo URLs

These can legitimately appear in the schema name ("svn+ssh://") and
should not be escaped there.

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.

12 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.

12 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.

12 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.

12 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.

12 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

12 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.

12 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

12 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.

12 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.

12 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.

12 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.

12 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

12 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`.

12 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.

12 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.

12 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.

12 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

12 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.

12 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.

12 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