With huge history (like kdelibs), the process termination suddenly consumes a
lot of memory (from 700M to 1.3G+). Since the job is done, clean termination is
not required, just exit.
- eluding convert.svn.branches defaults to "branches"
- convert.svn.branches= disables branches detection
- convert.svn.branches=/ is equivalent to former convert.svn.branches=
The "one revision belongs to one branch" assumptions is relaxed. Branch
revisions are parsed down to the first branch copy encountered, older history
is skipped. It means the conversion is still not satisfying when dealing with
branches overwriting themselves. This issue already existed in the previous
version.
In some subversion repositories, trunk is present but no branches
are used. The current code is assuming that both trunk and branches
must exist before adding trunk's head to the heads list.
It's just better to separate the branch layout stuff from the trunk one.
Introduce commandline.xargs() to limit argument list with respect
to ARG_MAX bytes. If no ARG_MAX information available - use POSIX
required minimum of 4096 bytes.
Under Windows, while actual argument list length is limited to 32k,
shells impose their own limits on command line length, down to 2047 bytes
for cmd.exe under Windows NT/2k and about 2500 bytes for older 4nt.exe.
See http://support.microsoft.com/kb/830473 for details about cmd.exe
limitations.
Since ARG_MAX is limit for argument list and environment, we reserve half
of it and one byte for environment variables. This way with default ARG_MAX
(4096 bytes) we get value 2047 bytes which is OK for Windows too.
On win32, the command line arguments seems to be limited about 2400
bytes. So 'add', 'delete', 'propget' and 'propdel' operations are
called several times within this limitation. And also 'commit'
operation is changed to be called without passing target files not to
exceeds this limitation because it cannot be a separated like other
operations above.
We can't store properties for files we haven't added to repo. Similarly,
we can't copy file to directory we haven't added to svn yet. Remember
needed changes and apply them in putcommit().
This should give the user a better hint of what's going wrong.
Improve some error messages. In particular, mention "CVS checkout" instead
of "CVS repo".
Fixes issue822 and issue826.