【发布时间】:2015-12-28 15:13:31
【问题描述】:
我正在做一个相当有趣的项目,尝试做以下事情:
每当开发人员将提交推送到远程分支时,执行一个 gitook,它将通过问题跟踪系统查找其关联的 QA 分支,然后将该提交合并到 QA 分支中。
如果 QA 分支上存在任何冲突,重要的是拒绝提交到远程分支(镜像开发人员的本地分支)。
我遇到的问题是 git-merge(以及 pull、checkout 等)必须在工作树中运行,这会导致 gitook 失败。
是否有一种(相对)简单的方法可以通过 update gitook 将一个分支(或提交)合并到另一个分支?我的理由是远程虽然不是工作树,但显然拥有执行此操作所需的所有数据,只是没有命令(据我所知)。
如果没有直接的命令,我的下一个想法是创建一个远程的临时克隆,我可以在其中执行合并操作:
(psuedocode)
mkdir $GIT_DIR/tempRepo
cd $GIT_DIR/tempRepo
git clone -b $QA_BRANCH --local $PARENT_DIR $CURRENT_DIR
git merge $WHATEVER
#cleanup
如果其中任何部分失败,我会拒绝update(希望对开发人员提供一些有用的信息,以便他/她可以修复它)。我已经玩过这个解决方案了,虽然它通过我的脚本似乎可以正常工作,但在真正的遥控器上运行时它会失败(我还不知道为什么,但是在输入这个时,弹出的这个答案可能会有所帮助 - getting "fatal: not a git repository: '.'" when using post-update hook to execute 'git pull' on another repo)
我很想从这里的 git 大师那里得到任何见解,我对支撑整个系统的管道还是相当陌生,所以如果我在正确(或错误)的轨道上,或者如果有一些我应该知道的神奇命令或陷阱,我将不胜感激。
提前致谢!
【问题讨论】: