gitpython: синтаксис команды для git commit

с помощью модуля gitpython я пишу скрипт python для проверки git diff --> git add всех измененных файлов один за другим. В конце я хочу зафиксировать все эти изменения, но не нашел точного синтаксиса команды.

Я пытаюсь использовать приведенный ниже код, «git add» работает отлично, но «git commit» выдает ошибку.

import git

repo = git.Repo(os.getcwd())
files = repo.git.diff(None, name_only=True)
for f in files.split('\n'):
    show_diff(f)
    repo.git.add(f)

repo.git.commit('test commit', author='[email protected]')

Вот ошибка, которую я вижу, кажется, что-то отсутствует в аргументах cmd.

In [10]: repo.git.commit("test commit", author="[email protected]")
---------------------------------------------------------------------------
GitCommandError                           Traceback (most recent call last)
<ipython-input-10-b4505b7c53c2> in <module>()
----> 1 repo.git.commit("test commit", author="[email protected]")

c:\python27\lib\site-packages\git\cmd.pyc in <lambda>(*args, **kwargs)
    421         if name[0] == '_':
    422             return LazyMixin.__getattr__(self, name)
--> 423         return lambda *args, **kwargs: self._call_process(name,    *args, **kwargs)
    424
    425     def set_persistent_git_options(self, **kwargs):

c:\python27\lib\site-packages\git\cmd.pyc in _call_process(self, method, *args, **kwargs)
    866         call.extend(args)
    867
--> 868         return self.execute(call, **_kwargs)
    869
    870     def _parse_object_header(self, header_line):

c:\python27\lib\site-packages\git\cmd.pyc in execute(self, command, istream, with_extended_output, with_exceptions, as_process, output_stream, stdout_as_string, kill_after_timeout, with_stdout, universal_newlines, shell, **subprocess_kwargs)
    684
    685         if with_exceptions and status != 0:
--> 686             raise GitCommandError(command, status, stderr_value, stdout_value)
    687
    688         if isinstance(stdout_value, bytes) and stdout_as_string:  # could also be output_stream

GitCommandError: Cmd('git') failed due to: exit code(1)
  cmdline: git commit [email protected] test commit
  stderr: 'error: pathspec 'test commit' did not match any file(s) known to      git.'

person SunilThorat    schedule 16.11.2016    source источник
comment
Вы читали документацию?   -  person Tim Biegeleisen    schedule 16.11.2016
comment
@TimBiegeleisen, лучшим ответом может быть то, как применить документацию к рассматриваемому вопросу. Есть уровни понимания. Документация в ее текущем состоянии может иногда сбивать с толку в зависимости от того, с какого уровня вы начинаете. Я недавно принял эту библиотеку, но количество вопросов, которые я вижу, прямо указывает на документацию, вероятно, должно быть более показательным, что документация просто не справляется со своей задачей. Принятый в настоящее время ответ здесь является лишь примером того, насколько бесполезна документация, поскольку по умолчанию используется команда catchall, которую предлагает GitPython.   -  person Marc    schedule 06.07.2019
comment
вот пример типа взаимодействия, который я считаю несколько полезным. stackoverflow.com/a/56915801/2128265 — обратите внимание, что я не просто указываю на документацию, но и показываю, как ее применять . Комментарии в стиле RTFM токсичны и только заставляют замолчать вопросы, что в конечном итоге вредит использованию соответствующего пакета.   -  person Marc    schedule 06.07.2019


Ответы (1)


Проблема решена, необходимо добавить флаг «-m» в команду фиксации, как показано ниже:

repo.git.commit('-m', 'test commit', author='[email protected]')
person SunilThorat    schedule 16.11.2016