git-svn: allow git-svn fetching to work using serf
commit8ac251b66b952b0eddfa4e5bbf08a3c0ae7dbc0b
authorKyle J. McKay <mackyle@gmail.com>
Sun, 7 Jul 2013 04:20:49 +0000 (6 21:20 -0700)
committerJunio C Hamano <gitster@pobox.com>
Sun, 7 Jul 2013 22:43:03 +0000 (7 15:43 -0700)
tree36a8a7da0a64efa6a5e610c2d62c0e1436ce7d65
parent4e63dcc86cc77ec86a8d35ff752603a4b44d44a7
git-svn: allow git-svn fetching to work using serf

When attempting to git-svn fetch files from an svn https?: url using
the serf library (the only choice starting with svn 1.8) the following
errors can occur:

Temp file with moniker 'svn_delta' already in use at Git.pm line 1250
Temp file with moniker 'git_blob' already in use at Git.pm line 1250

David Rothenberger <daveroth@acm.org> has determined the cause to
be that ra_serf does not drive the delta editor in a depth-first
manner [...]. Instead, the calls come in this order:

1. open_root
2. open_directory
3. add_file
4. apply_textdelta
5. add_file
6. apply_textdelta

When using the ra_serf access method, git-svn can end up needing
to create several temp files before the first one is closed.

This change causes a new temp file moniker to be generated if the
one that would otherwise have been used is currently locked.

Signed-off-by: Kyle J. McKay <mackyle@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
perl/Git/SVN/Fetcher.pm