Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 获取传递给git merge的分支的名称_Python_Git_Merge_Githooks - Fatal编程技术网

Python 获取传递给git merge的分支的名称

Python 获取传递给git merge的分支的名称,python,git,merge,githooks,Python,Git,Merge,Githooks,我正在编写一个prepare-commit-msg(作为预合并)钩子,需要获取合并的源分支名称以传递给restapi。换句话说,我需要从git merge获取branchname的值。 到目前为止,我已经尝试重新设置parse MERGE_HEAD,但是当钩子触发时,它似乎还没有被设置。目前,我只是使用git revparse--abbrev ref@{-1}来获取我所使用的最后一个分支,但这不一定总是我想要合并的分支 我试图强制执行的规则是,除非满足某些条件,否则用户不能将其功能分支与mast

我正在编写一个prepare-commit-msg(作为预合并)钩子,需要获取合并的源分支名称以传递给restapi。换句话说,我需要从
git merge获取branchname的值。

到目前为止,我已经尝试重新设置parse MERGE_HEAD,但是当钩子触发时,它似乎还没有被设置。目前,我只是使用git revparse--abbrev ref@{-1}来获取我所使用的最后一个分支,但这不一定总是我想要合并的分支

我试图强制执行的规则是,除非满足某些条件,否则用户不能将其功能分支与master合并。如果有更好的钩子来做这件事,那也会有帮助。Prepare commit msg是唯一一个似乎将提交类型作为参数的

到目前为止,我已经尝试重新设置parse MERGE_HEAD,但是当钩子触发时,它似乎还没有被设置

对,;但问题远不止于此。(和/或更小,也许吧!:-)(我在这里也要注意:一个不进行合并的
git merge
,也就是说,一个快进跳过一切的东西。)

首先,考虑用户运行时发生的情况:

git merge a97131c
这是哪个分支机构?好吧,让我们画一张图表:

...--*--o--o--@   <-- blarg (HEAD), xtest
      \
       o--A--B   <-- br1
           \
            C   <-- br2, br3
如果
a97131c
是commit
B
的ID,我们可能正在执行
git merge br1
,因此结果将是:

...--*--o--o--o   <-- xtest
      \        \
       o-----A--@   <-- blarg (HEAD)
             |\
             | B  <-- br1
              \
               C   <-- br2, br3
...--*--o--o--o   <-- xtest
      \        \
       o        @  <-- blarg (HEAD)
        \      /
         A----B   <-- br1
          \
           C   <-- br2, br3

..--*--o--o--o我不确定它在
git
中是否可能,因为
prepare-commit-msg
hook甚至没有在
fast-forward
merges.right上运行。我已经关闭了快进合并,除了拉。我希望他们已经添加了一个预合并挂钩:(这,@torek,是一个很好的回答!谢谢你花时间来做这一切。这回答了我的问题。我想我会走包装路线。我认为这是一个很好的短期解决方案。从长远来看,我想我会选择服务器端挂钩。不过我们正在使用Bitbucket服务器,并将他们的插件sdk安装到我们孤立的网络上有点痛苦…官僚主义和所有的爵士乐…再次感谢你的帮助!