git-diff в другом каталоге - PullRequest
2 голосов
/ 05 мая 2010

В настоящее время я пишу небольшую zsh-функцию, которая проверяет все мои git-репозитории, чтобы определить, грязные они или нет, а затем распечатывает те, которые требуют фиксации. До сих пор я выяснил, что самый быстрый способ выяснить состояние очистки / грязи в репозитории git - через git-diff и git-ls-files:

if ! git diff --quiet || git ls-files --others --exclude-standard; then
  state=":dirty"
fi

У меня к вам два вопроса:

  1. Кто-нибудь знает о более быстром и эффективном способе проверки изменений / дополнений файлов в git-репо?
  2. Я хочу, чтобы моя функция zsh передавала путь к файлу (скажем, ~/Code/git-repos/) и проверяла все репозитории в нем. Есть ли способ обойтись без CD в каждый каталог и выполнить эти команды? Нечто подобное git-diff --quiet --git-dir="~/Code/git-repos/..." было бы фантастическим.

Спасибо! :)

1 Ответ

3 голосов
/ 05 мая 2010

Если $DIR содержит имя вашего каталога и это стандартная раскладка (т. Е. .git dir $DIR/.git), тогда git --git-dir $DIR/.git --work-tree $DIR status -s -uno выведет список всех файлов, которые не были приняты Проверка, если список пуст, должен дать вам то, что вы хотите.

...