Re: git-svn fetch fails when a file is renamed changing only case
From: Eric Wong <hidden>
Date: 2016-06-15 22:42:43
Pazu [off-list ref] wrote:
For example, if you had a file named TestFile and it's renamed to
TESTFILE, git-svn fails to fetch revisions after the rename.
My perl skills are close to non-existant, so I'm afraid I don't know how
to fix this. Attached to this message, however, is a sample svn
repository that can reproduce this bug. Just unpack it somewhere (let's
say, in /tmp) and try the following:
tar -C /tmp -xzf git-svn-rename-test.tar.gz
mkdir test-wc
cd test-wc
git-svn init file:///tmp/git-svn-rename-test
git-svn fetch
The last command will fail after fetching revision #3, where a file
named TestFile was renamed to TESTFILE. Here's the stack trace:
svn: 'TestFile' is not under version control
256 at /Users/pazu/bin/git-svn line 2015
main::safe_qx('svn', 'propget', 'svn:keywords',
'TestFile@BASE') called at /Users/pazu/bin/git-svn line 2154
main::svn_propget_base('svn:keywords', 'TestFile') called at
/Users/pazu/bin/git-svn line 1773
main::do_update_index('ARRAY(0x180bd68)', 'remove', 'undef')
called at /Users/pazu/bin/git-svn line 1805
main::index_changes() called at /Users/pazu/bin/git-svn line 1875
main::git_commit('HASH(0x180bd98)',
'c77db38dc752305ba19ebe19b22306551d0f8d52') called at
/Users/pazu/bin/git-svn line 346
main::fetch_cmd() called at /Users/pazu/bin/git-svn line 290
main::fetch() called at /Users/pazu/bin/git-svn line 149I'm on Mac OS X (Intel) 10.4.8
Ah, the problem is that git-svn relies on git-diff-files and git-ls-files to track changes when using the command-line svn client. git itself is a case-sensitive file-system, but git-svn relies on the working tree if you didn't have the SVN libraries, and successfully stats the 'TestFile' even though it no longer exists (and is replaced by 'TESTFILE'). Good to know that the SVN:: libraries are working for you, though. -- Eric Wong