在gi中使用pythonsh模块

2024-04-19 03:06:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下代码

import urllib2
import unicodedata
from sh import git

repo_name = "bitbucket.org/foo/foo.git"
repo_dir = "/home/foo/code"
user = "foo"
pwd = "foo"

git = git.bake(_tty_out=False, _cwd=repo_dir)
for file_name in git.diff('--name-only'):
    file_name_str=file_name.encode('ascii','ignore')
    file_name_str=file_name_str.strip()
    git("-c user.name=foo -c user.email='foo@bitbacket.org' commit -m 'no comments' group_vars/git_vars.yml")

这给了我以下错误:

^{pr2}$

我发现这个问题很难解决的主要原因是如果我将输出命令-c user.name=foo -c user.email='foo@bitbacket.org' commit -m 'no comments' group_vars/git_vars.yml复制到终端并在其文件前面添加$git,那么group_vars/git_vars.yml将提交给本地repo fine


Tags: nameorgimportgitfooemailymldir
1条回答
网友
1楼 · 发布于 2024-04-19 03:06:56

你需要分开你的论点。在

您的错误消息如下(添加了引号和换行符):

RAN: /usr/bin/git "-c user.name=awsAnsibleViju -c 
                   user.email='awsAnsibleViju@bitbacket.org' commit -m 
                   'no comments' 
                   /home/r_ansible/playbooks/group_vars/git_vars.yml"

并且git不理解这一点(它将整个字符串作为第一个参数)。在

可以使用^{}拆分参数:

^{pr2}$

把它当作

git(args)  # or: git(*args)

这也是the documentation所说的:

When passing multiple arguments to a command, each argument must be a separate string:

tar("cvf", "/tmp/test.tar", "/my/home/directory/")

This will not work:

tar("cvf /tmp/test.tar /my/home/directory")

注意:使用git时,我更喜欢^{}而不是{}。在

相关问题 更多 >