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




парсинг таблицы с сайта python (4)

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

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

with settings(warn_only=True):
  run('git commit ...')

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

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


На странице 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.

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

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))

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

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

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

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







fabric