Как удалить пустые каталоги в git -svn?
У меня есть конкретная проблема: я не нашел решение здесь или где-нибудь еще. У меня есть репозиторий SVN, и я использую git -svn для доступа к нему и работы над ним.
Некоторое время назад в репозитории SVN были пустые каталоги (пустые, только вложенные папки). Git не отслеживает их. Затем они были удалены из репозитория SVN. Но у меня все еще есть их даже после запуска
git svn rebase
И когда я удаляю их вручную, они воссоздаются во время следующего
git svn rebase
Как я могу избавиться от них?
Я проверил, используя чистый SVN, и они не находятся в репозитории.
Ответы
Ответ 1
Это немного грубо, но я обнаружил, что следующее решение моей проблемы:
rm .git/svn/refs/remotes/trunk/unhandled.log
git clean -df
Любые последующие
git svn rebase
ничего не воссоздает.
Так как я не знаю, как восстановить этот файл без повторного клонирования репо, я предлагаю сделать его резервную копию в первую очередь. Это текстовый файл, поэтому я предполагаю, что вы также можете отредактировать его содержимое, чтобы удалить записи, которые в конечном итоге создают
Ответ 2
Я думаю, вы найдете свой ответ в этом сообщении в блоге.
[...]
Удаление каталогов из дерева SVN, если файлов нет за. SVN может содержать пустые каталоги версий, и они не удаляются по умолчанию, если в них нет файлов. git не может версия пустые каталоги. Включение этого флага приведет к фиксации действия SVN как git. config key: svn.rmdir
Чтобы исправить корень проблемы, установите глобальную конфигурацию git:
git config --global svn.rmdir true
[...]
Ответ 3
Скажите git svn, что он не должен пытаться воссоздать пустые каталоги:
git config svn-remote.svn automkdirs false
Это соответствующий раздел справочной страницы:
СВН-дистанционное <. Имя > .automkdirs
Обычно команды "git svn clone" и "git svn rebase" пытаются воссоздать пустые каталоги, находящиеся в репозитории Subversion. Если для этой опции установлено значение "false", пустые каталоги будут созданы только в том случае, если команда "git svn mkdirs" запущена явно. Если unset, git svn принимает эту опцию как "true".
Заметим, что эту тему легко перепутать с темой о том, что для передачи/не совершения пустых каталогов в svn (для чего это svn.rmdir
).