Summary: | gear-update не работает если есть пустые каталоги | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | swi <swi> |
Component: | gear | Assignee: | Alexey Gladkov <legion> |
Status: | CLOSED NOTABUG | QA Contact: | qa-sisyphus |
Severity: | major | ||
Priority: | P2 | CC: | evg, glebfm, ldv, legion, php-coder, placeholder, vvk, wrar |
Version: | unstable | ||
Hardware: | all | ||
OS: | Linux |
Description
swi
2008-04-23 22:54:35 MSD
Эту проблему можно решить через --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. Но эта бага уже другая история. |