Более ранний вопрос привел к некоторым идеям о том, как проверить, содержит ли ваш репозиторий Git грязный индекс или необработанные файлы. Ответ, который я принял из этого обсуждения, был следующим:
#!/bin/sh
exit $(git status --porcelain | wc -l)
Идея этого ответа заключалась в том, чтобы подражать тому, что программист сделал бы: запустите git status
, а затем просмотрите вывод.
К сожалению, git status --porcelain
и git status
не делают то же самое. В частности, git status
сообщит о неустановленных изменениях, а git status --porcelain
не будет. Вот пример
[[email protected] math-hl]$ git status --porcelain
[[email protected] math-hl]$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
# (use "git push" to publish your local commits)
#
nothing to commit, working directory clean
Итак, мой вопрос: что мне нужно добавить к оригиналу script, чтобы также определить, когда репо отменило изменения? В частности, будет ли это правильный подход?
#!/bin/bash
if [ $(git status --porcelain | wc -l) != "0" \
-o $(git log @{u}.. | wc -l) != "0" ]; then
echo "local repo is not clean"
Было бы хорошо, в конечном счете, полагаться на git log
, или вместо этого использовать команду "сантехника"?