python - 如何将排除标志添加到 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 开发人员,所以不确定我做错了什么!
解决方案
您'grep', '-i', '-e',
作为单独的参数传递,但exclude_list
作为单个字符串传递;git
抱怨不理解这个单一的字符串。拆分它:
result = git('grep', '-i', '-e', '"({})"'.format(r'\|'.join(self.keywords)), '--', './*', ':!*.java', ':!*.xml', 'HEAD', _tty_out=False))
这是必不可少的部分:'--', './*', ':!*.java', ':!*.xml',
推荐阅读
- c# - 当 Process.WaitForExit() 不等待时
- javascript - Javascript - 仅将 onclick 设置为页面的第一部分
- python - pipenv:已安装软件包但未找到模块
- c# - C# HttpListener - 503 不可用(2 个应用程序,2 个前缀)
- sql - 来自两个表oracle SQL的所有记录对
- angular - Angular 浏览器缓存清除不起作用
- dax - DAX 度量与计算列
- c# - 如何在分布式 Windows 应用程序之间共享秘密而不将其保存到程序集中?
- deep-learning - 深度纯价值强化学习:训练 V(s) 而不是 Q(s,a)?
- django - 带有设置子文件夹的 django wsgi 设置