если в git репо присутствуют пустые каталоги (git их вообще не видит получается) то gear-update не срабатывает жалуясь на то что якобы присутствуют модифицированные или неконтролируемые git файлы. Удаление этих каталогов решает проблему, но в tar-ball они могут присутствовать (ошметки, CVS).
Эту проблему можно решить через --exclude или через .gitignore. git не поддерживает пустые каталоги. Пустые каталоги это проблема, но не проблема gear. В общем случае добавить решить эту проблему нельзя т.к. если добавить в пустой каталог нечто, то это может создать ошибку. Поэтому в этих случаях мантейнер должен сам решать эту проблему и решений может быть несколько. Так что это не бага, это фича.
(In reply to comment #1) > git не поддерживает пустые каталоги. Пустые каталоги это проблема, но не > проблема gear. В общем случае добавить решить эту проблему нельзя т.к. если > добавить в пустой каталог нечто, то это может создать ошибку. А может алгоритм проверки? Ведь git этих каталогов не видит не обрабатывает... чего ж тогда gear на них реагирует? Может тоже пусть игнорирует?
gear-update ругается на модифицированные файлы только перед началом работы. Эта проверка может быть отключена через --force. Эта проверка защищиает от ошибок, когда обновляются исходники в рабочем каталоге с незакоммиченными данными. Конечно можно в эту проверку добавить --no-empty-directory, но при наличии --force я не вижу в этом смысла.
(In reply to comment #3) > gear-update ругается на модифицированные файлы только перед началом работы. Эта > проверка может быть отключена через --force. Эта проверка защищиает от ошибок, > когда обновляются исходники в рабочем каталоге с незакоммиченными данными. Ещё раз: поскольку наш любимый git не считает и не может считать пустые каталоги "незакоммиченными данными", как и вообще данными, то почему они должны препятствовать обновлению?
Я вешал когда-то bug #13583 об этом же. Не завидую судьбе этого бага -- он или INVALID или DUPLICATE..
(In reply to comment #4) > Ещё раз: поскольку наш любимый git не считает и не может считать пустые > каталоги "незакоммиченными данными", как и вообще данными, то почему они должны > препятствовать обновлению? Потому что эти директории могут быть важны. То что эти директории не могут быть добавлены это ещё не повод для того чтобы их игнорировать. gear-update не делает предположений о назначении изменений в рабочем каталоге. Повторю комментарий из bug #13583#c5: У gear-update есть ключ --force на случай когда вы уверены что обновление не удалит ничего важного или не закоммиченные данные вам не нужны.
(In reply to comment #6) > Потому что эти директории могут быть важны. То что эти директории не могут быть > добавлены это ещё не повод для того чтобы их игнорировать. Поэтому чтобы сделать gear-update приходится ух удалять или вносить в ignore - т.е. игнорировать. Я чего-то недопонимаю в логике
(In reply to comment #7) > Поэтому чтобы сделать gear-update приходится ух удалять или вносить в ignore - > т.е. игнорировать. Я чего-то недопонимаю в логике Неправильно :) Поэтому если вам нужно обновить директорию с незакоммиченными данными, вам нужно выполнять gear-update c ключём --force. В этом случае gear-update обновит директорию и удалит эти данные.
Вообщем, это документированное поведение и есть документированное решение: $ gear-update --help |grep -A1 -- --force -f,--force remove files from <subdirectory> even if untracked or modified files found; Также есть другие решения этой же проблемы. Resolution => INVALID
(In reply to comment #1) > Эту проблему можно решить через --exclude или через .gitignore. > > git не поддерживает пустые каталоги. Пустые каталоги это проблема, но не > проблема gear. В общем случае добавить решить эту проблему нельзя т.к. если > добавить в пустой каталог нечто, то это может создать ошибку. А, может быть, просто удалять пустые каталоги, не спрашивая пользователя, нужны они ему или нет? find -type d -empty -delete
А ты можешь с уверенностью сказать что этот каталог в <subdirectory> не был сделан с каким-то смыслом ? Тогда уж можно проще сделать: добавить к git-ls-files ключ --no-empty-directory. Всё равно в этом каталоге все данные будут потеряны и незачем удалять что-либо до полного удаления. Но мне бы очень не хотелось удалять _любые_ несохранёные данные в <subdirectory> без явного согласия пользователя.
(In reply to comment #11) > А ты можешь с уверенностью сказать что этот каталог в <subdirectory> не был > сделан с каким-то смыслом ? Как правило, да, но в gear-srpmimport я сделал в точности наоборот. :) Вот упрощённая цитата оттуда: # Add empty .gitignore file to each empty directory. find -type d -empty -exec touch -- '{}/.gitignore' ';'
(In reply to comment #12) > # Add empty .gitignore file to each empty directory. > find -type d -empty -exec touch -- '{}/.gitignore' ';' Такой подход также опасен как и удаление пустых каталогов. Так как в случае gear-update речь идёт об удалении данных, а не об их добавлении в репозиторий, то мне кажется, что лучшим решением будет дать выбрать пользователю нужны ли ему эти данные или нет. Тем более эта проверка работает быстро. Кстати, ты поднял интересный вопрос: когда gear-update обновляет каталог из архива, то в архиве запросто могут быть пустые каталоги, которые не попадут в репозиторий. И тут я согласен, что стоит делать как gear-srpmimport. Но эта бага уже другая история.