使用Gitpython推送refs / for / master和change-id问题

时间:2017-07-17 13:26:26

标签: python gerrit gitpython

我有以下代码,我想使用GitpYthon将我的分支中的更改推送到gerrit。

repo_path_new = repo_path+repo_name
repo_obj = Repo(repo_path_new)
os.chdir(repo_path_new)
repo_obj.git.add(A=True)
if commit_command_line(commit_message, repo_obj, repo_name):
    repo_obj.git.push("origin", "HEAD:refs/for/master")

它添加并提交文件,但是当我想推送到refs / for / master时,我遇到了一个问题:

remote: Processing changes: refs: 1, done
remote: ERROR: [0f7c907] missing Change-Id in commit message footer
remote:
remote: Hint: To automatically insert Change-Id, install the hook:
remote:   gitdir=$(git rev-parse --git-dir); scp -p -P port 
username@url:hooks/commit-msg ${gitdir}/hooks/
remote: And then amend the commit:
remote:   git commit --amend
remote:
 To ssh://url:port/repo-name
 ! [remote rejected]   HEAD -> refs/for/master ([0f7c907] missing Change-Id in commit message footer)
error: failed to push some refs to 'ssh://url:port/repo-name''

请注意我站在克隆的回购中。当然我可以在git bash中手动安装git hook change-id。但由于这应该是自动完成的,我想知道是否有办法通过gitpython来做到这一点。

1 个答案:

答案 0 :(得分:0)

您是否手动克隆了存储库,或者是通过gitpython完成的?请注意,您只需要安装一次commit-msg挂钩(第一次克隆存储库),之后所有提交都将自动具有Change-Id。

如果您通过SSH运行访问Gerrit:

$ gitdir=$(git rev-parse --git-dir); scp -p -P 29418 GERRIT-SERVER:hooks/commit-msg ${gitdir}/hooks

如果您通过HTTPS运行访问Gerrit:

$ gitdir=$(git rev-parse --git-dir); curl --create-dirs -Lo ${gitdir}/hooks/commit-msg https://GERRIT-SERVER/tools/hooks/commit-msg

您可以在克隆存储库后手动执行它,也可以将其添加到gitpython。