I have checked out an SVN repository using git svn
with git 2.35.1. It has worked for a long time, but as of recently I get ghost-diffs:
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: tools/a.cpp
modified: tools/b.cpp
modified: tools/c.cpp
...
If I git checkout .
I get:
$ git checkout .
Updated 28 paths from the index
But nothing changes, i.e. git status
keeps showing the same differences. I cannot git svn rebase
from the remote SVN
server:
$ git svn rebase
tools/a.cpp: needs update
tools/b.cpp: needs update
tools/c.cpp: needs update
...
When I use git diff
I get full differences for all the files in this list. Using git diff -w
says
$ git diff -w
warning: LF will be replaced by CRLF in tools/a.cpp.
The file will have its original line endings in your working directory
I understand this is caused by whitespace changes between the local git
checkout and the SVN
server. I just cannot figure out any combination of options or configuration settings that will fix the problem.
EDIT:
I actually found a solution to update the repository: I checked out the revision before tools/a.cpp
and friends were committed, and from there do a git svn rebase
. This updates to the latest revision. But the problem is there again, and if I want to update further I have to repeat this revert and rebase process, so this is not a real solution, especially for large histories.