Как удалить пустые каталоги в 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).