Hi all,
On behalf of clkao and the SVK team, I'm pleased to announce the first Best Practical release of SVK: version 2.0.0. This is the first major release after 18 months of development since SVK 1.0 was released in May 2005. The release is available on CPAN:
file: $CPAN/authors/id/C/CL/CLKAO/SVK-v2.0.0.tar.gz
size: 422489 bytes
md5: 37ff4acde9f9a0f987bde48b32616ab3
You can download SVK 2.0.0 from http://search.cpan.org/dist/SVK/.
We've been using the 2.0 branch in production for several months and recommend upgrading from 1.0, particularly because 2.0 provides huge performance improvements as well as significantly improved merge accuracy.
In the coming weeks, look for another big announcement from Best Practical related to svk.
Here are a few of the major new features:
* Interactive commits
You can now use "svk commit --interactive". svk will walk you through each change in each file, and let you decide exactly which ones you want to commit.
* Floating checkout
You can now use "svk checkout --float" to keep checkout metadata in the top-level directory of your checkout working directory. This lets you move the checkout copy around without having to perform any special incantation ("svk checkout --relocate").
* View support [BETA]
svk's "views" work like views in databases. You can set up a "view" that is a map of several parts of a repository (different paths at different revisions). You can then check the "view" out and work with it as if it's just an ordinary svk checkout path.
Please note that this feature is not yet recommended for production use, as some commands do not yet work properly in view checkouts.
* Log filter plugins
You can now write custom log processing plugins for filtering and displaying log messages; svk ships with several, and others are available on CPAN. For example, try "svk log --filter 'author
clkao'" or "svk log --output stat" (the latter requires SVK::Log::Filter::Stats from CPAN).
* Better copy and rename support across merge.
This solves the problem described in: http://svn.haxx.se/dev/archive-2005-08/0712.shtml
* Pipelined sync support
svk takes advantage of new APIs made available in Subversion 1.4 to significantly boost repository synchronization operations. If you have Subversion 1.4 on both the client and the server. you should notice significantly faster syncs.
* pullyu
An utility "pullyu" is included. It can generate a svn dump from a svk mirror which replicates the exact structure and metadata of the original repository. With pullyu, you can recover a lost svn server from an svk mirror.
* Startup time improvements
* Many, many bugfixes and small features
[Changes for 2.0.0 - 28 Dec, 2006]
Dependency
* Require Subversion 1.3.0
* Require App::CLI, UNIVERSAL::require, YAML::Syck, Path::Class,
Class::Accessor::Fast, Class::Data::Inheritable
* No longer require YAML, Clone, Regexp::Shellish, Date::Parse
Performance:
* Don't load Locale::* modules if the user's language is English
* Reduce Data::Hierarchy calls in checkout_delta
* SVK::Mirror now uses a separate process to pipeline sync
* Use POSIX::strftime for date formatting rather than Date::Parse
The log command now runs about 25% faster when generating long
logs
Merge subsystem
* Renames and copies can now be merged across branches
* svk now tries to use alleged merge result as next merge base,
making push more reliable and accurate
* Interactive tree conflict resolution
* Display the anchor along with THEIR and YOUR during interactive
conflict resolution
* Use svn:date to find the closest ancestor, not the revision number
* use only related node as base if it is one of merge source or
destination
* When picking base, the immediate merged-from source should take
precedence
* When doing add-merge on checkout, unschedule the add
* Only consider a g-merge to be a change when the merge source and
destination paths are the same
* Fix a leak in SVK::Editor::Merge in delete_entry
* Fix merging a file change or deletion which has been replaced as
directory
Tests:
* Test helpers are now in SVK::Test
* Don't use the user's .subversion/config during tests
General
* Support view spec as depotpath
* Support win32 and keychain auth providers if available
* Modularize the MIME type detection code which makes that feature
optional
* New command: svk ignore
* New global option --ignore
* svk --version now displays the Subversion bindings version number
* Make -r{DATE} consistent with Subversion, by making YYYY-MM-DD be
midnight at the beginning of that day
* Add the negative number revision support
* Make -r HEAD and -r BASE case insensitive
* Most svk commands now find peg revision. -r N PATH@M will find
the correct path if PATH@M was copied from somewhere else after N
* Fix a bug in replaced copy schedule entries in XD
svk add
* Display " - (bin)" when adding executable files
svk annotate
* Documented --remoterev option
svk checkout
* Support floating checkout
* Allow svk co --detach to be applied to multiple checkouts
* Fix co --relocate with checkout schedule information
* When doing autovivification from URL, release the giant lock and
tell user what to do if the sync failed
svk commit
* Support chunk-based interactive commit
* Don't suck file into memory on commit
* Support --set-revprop
* Fix committing single-file checkout
svk copy
* Fix a bug that svk cp A B would die if A has properties
* Support -r N@
* When trying to copy across mirrors, suggests sm -IB for publish
* Cleanup stalled txn after died
* Fix "svk cp //path%2Fwith_escape //path/other", which the underlying
library was unescaping for us
* Make copy work with directory with unknown files
svk delete
* Support --force
* On failed rm, report all modified, unknown and scheduled nodes
instead of just the first one, and suggests --force
* Support rm multiple depotpath
svk describe
* Fix "svk desc 1234@"
* Report error immediate if a nonexistent revision is given
* Let 'svk desc 456' work even the checkout in . is only at r123
svk depot
* Fix error messages in depot --relocate
svk diff
* Fix svk diff on 0-length file on checkout
* Support --non-recursive (-N)
* Support --change (-c)
* Only show differences from copy source for copied nodes
unless -X is specified
* Show 'new directory' and copied from in diffs
* Fix svk diff depotfile checkoutfile
* Fix diff with copies and modified files
* Changed diff output for binaries to show file names using local