Как git совершить ничего без ошибки?

Я пытаюсь написать сценарий, который делает git commit ; однако, если нечего совершать, git выходы со статусом 1 . Сценарий развертывания принимает это как неудачное и завершает работу. Я хочу обнаружить фактические сбои в фиксации, поэтому я не могу просто дать теневое изображение игнорировать ошибки при git commit . Как я могу разрешить игнорирование пустых ошибок, чтобы развертывание могло продолжаться, но все же ловить ошибки, вызванные сбоем реального коммита?

 def commit(): local("git add -p && git commit") 

  • Самая длинная расширяющаяся уникальная подпоследовательность
  • Открыть графический файл из другого файла PyQT
  • Как вы обновляете уровни pandas MultiIndex после разрезания его DataFrame?
  • PIL Преобразование PNG или GIF с прозрачностью в JPG без
  • Асинхронные HTTP-вызовы в Python
  • Создание понимания списка Python с помощью if и break
  • Python: подсчет повторяющихся элементов в списке
  • Почему невозможно создать практический Perl-конвертер исходного кода Python?
  • 4 Solutions collect form web for “Как git совершить ничего без ошибки?”

    Зайдите это условие заранее, проверив код выхода git diff?

    Например (в оболочке):

     git add -A git diff-index --quiet HEAD || git commit -m 'bla' 

    EDIT: Исправлена ​​команда git diff соответствии с комментарием Хольгера.

    На странице git commit man:

     --allow-empty Usually recording a commit that has the exact same tree as its sole parent commit is a mistake, and the command prevents you from making such a commit. This option bypassesthe safety, and is primarily for use by foreign SCM interface scripts. 
     with settings(warn_only=True): run('git commit ...') 

    Это заставляет ткань игнорировать отказ. Имеет преимущество не создавать пустые коммиты.

    Вы можете обернуть его в дополнительный слой with hide('warnings'): полностью отключить вывод, иначе вы получите заметку на выходном материале, который произошел сбой (но fabfile продолжает выполняться).

    попробуйте / поймайте ребенка!

     from fabric.api import local from fabric.colors import green def commit(message='updates'): try: local('git add .') local('git commit -m "' + message + '"') local('git push') print(green('Committed and pushed to git.', bold=False)) except: print(green('Done committing, likely nothing new to commit.', bold=False)) 
    Python - лучший язык программирования в мире.