使用python脚本在GIT中自动合并

时间:2015-10-28 17:34:45

标签: git python-3.x git-merge

我在python中编写了一个自动合并脚本,用于不同分支之间的自动合并。

我计划使用“外部挂钩”(此脚本配置为在GIT存储库服务器上运行,脚本将在每次签入时触发)并将参数传递给此脚本,如分支名称作为源和目标。

但是一旦办理登机手续,脚本就会通过“外部挂钩”被解雇,但脚本中的“Git status”命令如下:

listitems.data.row

它会抛出错误:

PS H:\> $listXml.listitems.data.row[0]

    ows_ID                   : 2
    ows_ContentTypeId        : 0x010094EFD209B7CD4E1AB7F9577...
    ows_ContentType          : MapDetails
    ows_Title                : UK
    ows_Modified             : 2015-10-28 14:49:58
     [...]
    ows_Latitude             : 1.23000000000000
    ows_Longitude            : 0.560000000000000
    ows_LocationDetails      : <div>Top united Kingdom Hits</div>

直到现在,我指的是http://blogs.atlassian.com/2013/05/git-automatic-merges-with-server-side-hooks-for-the-win/

整个脚本很简单,结帐源分支并将其合并到目标中。

任何想法,为什么我看到这个错误?

1 个答案:

答案 0 :(得分:0)

这几乎肯定与git本身无关。

如果这里的call实际上是subprocess.call(您确实from subprocess import call?),请注意各种subprocess模块操作需要以下两种方法之一:

  • shell = True,或
  • 预拆分参数

那是:

statuscode = call('/usr/local/bin/git status')
也许应该读到:

statuscode = call('/usr/local/bin/git status'.split())

或:

statuscode = call(['/usr/local/bin/git', 'status'])

或:

statuscode = call('/usr/local/bin/git status', shell=True)

或类似。