Подтвердить что ты не робот

Git -svn W: -empty_dir предупреждения. Что они имеют в виду?

При попытке клонировать существующий репозиторий Subversion с помощью git -svn, используя стандартный макет, я получил кучу предупреждений W: -empty_dirW: +empty_dir). Клонированный репозиторий git, похоже, работает, то есть я могу выполнять обычные операции git и dcommit в репозиторий SVN.

Реальная проблема заключается в том, что начальный клон и rebase создают несколько пустых каталогов, которые не существуют в репозитории SVN, в верхней части репозитория (вместе с другими каталогами в trunk). Эти каталоги не содержат файла, а только некоторые пустые каталоги внутри них. Кажется, что предупреждения "W: -empty_dir" соответствуют этим пустым каталогам.

Я искал пустые каталоги, проверяя весь репозиторий с помощью SVN, но пустого каталога нет. Я также проверил SVN, если у репозитория есть файлы со специальными свойствами, но не было ничего, кроме "исполняемого" и "mime-type".

Существующий репозиторий не изначально следовал за стандартным макетом, но я очистил его так, чтобы верхние каталоги были просто "туловищем", "тегами" и "ветками".

Что может вызвать создание этих пустых каталогов, которые не существуют в Subversion?

4b9b3361

Ответ 1

Не зная, откуда взялись эти пустые каталоги, вы можете сказать git-svn удалить их с помощью параметра командной строки --rmdir или svn.rmdir.

См. git-svn ОПЦИИ man page и

Удалите каталоги из дерева SVN, если файлов не осталось.
SVN может содержать пустые каталоги версий, и они не удаляются по умолчанию, если в них нет файлов. git не может пустые каталоги версий.
Включение этого флага приведет к тому, что фиксация в SVN будет действовать как git.


Предупреждение поступает из тегов SVN (которые являются "каталогами" ), которые не поддерживаются git -svn, как в git svn прерваны, тогда я потерял все теги, как его исправить? ".
Из этой темы:

SVN отслеживает каталоги, git нет, поэтому пустые каталоги не могут быть представлены в git.
Эти предупреждения в файлах, похоже, сообщают вам, какие файлы были удалены, что приведет к тому, что пустая директория останется на месте, в том, что импортировано svn commit.

Разница между -empty_dir и +empty_dir примерно равна , как пустая директория появляется в репозитории SVN:

-empty_dir

Букет файлов удаляется, оставляя папку (ветвь или тег) пустым.

+empty_dir

В импортируемой версии SVN только что была создана пустая ветвь или тег, а git-svn не будет импортировать пустой каталог.


Обратите внимание, что вы можете перезапустить импорт после этого предупреждения.

Ответ 2

Одна из вещей с git заключается в том, что она не отслеживает каталоги. Это все о содержании (файлах) в git. Таким образом, пустые каталоги в значительной степени остаются томиться в вашем местном репо. Лучший способ избавиться от пустых каталогов в вашем локальном репо - сделать git clean -d.

Оформить заказ git для получения дополнительной информации.

Ответ 3

Относительно вопроса в заголовке (который привлекает внимание Google к этой странице), согласно моим выводам, используя либо git -svn 1.7.1, либо git 1.8.5: предупреждение W: -empty_dir: x/y/z означает что файл или папка x/y/z удалены в наборе изменений SVN. Если вы не указали -q (--quiet), этот факт уже был указан как D x/y/z. Я думаю, он пытается сказать, что, как следствие, папка x/y могла бы стать пустой и поэтому была удалена из представления git. Гораздо более распространено, что x/y не стало пустым и ничего особенного не происходит.

На практике, если удаление x/y/z оставило бы x/y пустым, вы, вероятно, удалили бы все x/y в наборе изменений SVN, и удаление x/y/z даже не было бы сообщается отдельно. Поэтому вы не получите этого предупреждения, но вместо этого W: -empty_dir: x/y предупреждает вас, что x, возможно, стал пустым, и вы знаете, что это не так, потому что тогда вы бы удалили x...

Если, с другой стороны, вы оставили пустые каталоги и хотите сохранить их, я думаю, вы использовали бы -preserve-empty-dirs, и я тоже не вижу смысла в предупреждении (если он все еще появляется в этом случай).

Короче говоря, игнорируйте это. В отличие от W: +empty_dir, это совсем другая история.