After a long initial translation, we started working with the mirrored Git repository.
Our repo has over 200k commits and its working copy in SVN has a size of around 20 GB.
We noticed a .gitignore file was created automatically in the Git repo, but not in the SVN repo. It seems like it was generated out of svn:ignores.
We need an own .gitignore file, however. And the contents should not be translated back to SVN.
When we tried to modify the .gitignore file and push the committed changes, the push would never finish. It hangs on the following message:
$ git push Remote "origin" does not support the LFS locking API. Consider disabling it with: $ git config lfs.<unknown>.locksverify false Enumerating objects: 7, done. Counting objects: 100% (6/6), done. Delta compression using up to 12 threads Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 3.85 KiB | 3.85 MiB/s, done. Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 remote: Checking connectivity: 3, done. remote: Fetching revisions from SVN repository: remote: up to date remote: Sending commits to SVN repository:
During that time, one-two java processes take about 100% CPU on the server.
We didn’t find anything that is being logged on the server. In the bare repo, we looked inside logs/refs/heads, but nothing.
After digging around a bit, we found out that the “translation” of the .gitignore file can be disabled, so we did the following:
- In the subgit/config file, we set svn.excludePath property to /.gitignore (and later we appended a second excludePath = .gitignore just to be sure).
- In the subgit/config file, we also set translate.ignores to false.
- We killed all java processes and ran subgit install our-repo.
This doesn’t seem to have any effect. Trying to push a changed .gitignore file, or even trying to push the deletion of the .gitignore file seems to send Subgit into some infinite loop.
Then, we versioned the .gitignore file in SVN, hoping for Subgit to translate that SVN commit and give all developers the correct .gitignore file. But to no avail.
We do see the respective commit on the Git side, but it comes without any changes (according to git log --stat).
Hence the question: What are our options to modify/replace the .gitignore file?
The initial translation was very frustrating (Java processes would constantly run OOM, the VM would become unstable because we were giving Java too much heap space, …). Therefore, we must avoid having to re-translate everything.