首页 > 解决方案 > 如何将排除标志添加到 Python git

问题描述

使用 Python 包中的git方法sh,我正在尝试制作以下 git 语句:

git grep -i -e "(example1|example2)" -- './*' ':!*.java' ':!*.xml' HEAD

在我的代码中,我使用以下内容:

exclude_list = '-- \'./*\' \':!*.java\' \':!*.xml\''

result = git('grep', '-i', '-e', '"({})"'.format(r'\|'.join(self.keywords)), exclude_list, 'HEAD', _tty_out=False))

当我运行时返回以下错误:

Error:

  RAN: /usr/bin/git grep -i -e "(example1\|example2)" -- './*' ':!*.java' ':!*.xml' HEAD

  STDOUT:


  STDERR:
error: unknown option ` './*' ':!*.java' ':!*.xml''
usage: git grep [<options>] [-e] <pattern> [<rev>...] [[--] <path>...]

但是,如果我在本地运行该命令,它会按预期返回。不幸的是,我不是 Python 开发人员,所以不确定我做错了什么!

标签: pythongit

解决方案


'grep', '-i', '-e', 作为单独的参数传递,但exclude_list作为单个字符串传递;git抱怨不理解这个单一的字符串。拆分它:

result = git('grep', '-i', '-e', '"({})"'.format(r'\|'.join(self.keywords)), '--', './*', ':!*.java', ':!*.xml', 'HEAD', _tty_out=False))

这是必不可少的部分:'--', './*', ':!*.java', ':!*.xml',


推荐阅读