Мы бы хотели использовать git для поддержки конфигурации системы. Поскольку иногда данные конфигурации существуют вне / etc, мы начали делать что-то подобное в наших системах:
# cd /
# git init
# git add etc
# git add some/other/path
# git commit -m 'initial import'
И так далее. Это работает, до определенного момента. Пока ваш cwd == '/', git ведет себя нормально. Однако, если вы попытаетесь, например, запустить git из подкаталога:
cd /etc
git status
Вы получаете мусор. В нашем случае тысячи строк списков «удалено:» для файлов, которые явно существуют. Такое поведение кажется исключительным для запуска git в /; делать то же самое в другом месте работает просто отлично.
Я могу «исправить» поведение следующим образом:
GIT_WORK_TREE=/ git status
И, эй, все работает так, как намеревался Линус ... но это боль. Я не хочу устанавливать его в среде в одностороннем порядке (потому что это может противоречить использованию git в других репозиториях), и я бы хотел избежать сценария-оболочки. У меня есть другие варианты?