所以,我对git一般都非常流利,但我从未使用过基于分支的工作流程,而且大多数都使用Gerrit.我对Pull Requests很新.
Pull Requests主要与我相似,因为一个分支被推向Gerrit,等待审查.在Gerrit中,如果我的某个提交出现问题,则会留下评论并收到非正评分.通过Pull Request,可以留下评论,并且可以拒绝评论.在Gerrit中,为了解决提出的问题,我修改了违规提交并再次推送它们(好吧,具有相同Change-Id的新提交).如何更新Pull请求?只需在顶部推送修复提交?取消拉取请求(这可能吗?),修改我的提交并推送新的提交?
我们正在为我们的项目使用Bitbucket,现在我们正在计划避免分支,只是从功能分支中获取拉取请求(我们的"生产"分支),主要是因为这感觉更贴近我熟悉的内容.
有没有办法找出一个人的GitHub PR的接受率,可能使用API?
在此期间,有趣的是找出我所报告的有多少问题已经关闭,而且仍然是开放的,在所有回购中.
以下是迄今为止的情况:
现在,我想为分支A添加一些工作.是否可以重新打开现有的Pull Request,以便可以添加额外的提交,然后再次重新合并?如果没有,我怎么能以干净的方式做到这一点?我考虑过创建另一个分支并从那个分区打开一个Pull Request,但它似乎不正确,额外的工作应该提交给同一个分支.
我正在尝试设计遵循以下原则的新工作流程:
我们正在使用git,Stash和TeamCity.这就是我想出来的,但它们都不是完美的.我正在寻找对我的建议或新想法的调整.
工作流程1
当拉取请求被另一个开发人员批准时,它会被Stash自动合并到主线中(主线由TeamCity中的普通CI覆盖)
问题:如果存在合并冲突,Stash将不会执行合并,但直到合并到主线之后才会测试合并状态.我们不知道主线是否会发生故障.
工作流程2
当拉取请求被另一个开发人员批准时,它会被Stash自动合并到主线中(主线由TeamCity中的普通CI覆盖)
问题:测试合并状态之间的时间(20分钟 - 1天?),并且集成发生允许集成分支中的更改,这可能意味着合并状态不再起作用.整合分支破裂的机会.
工作流程3
当另一个开发人员批准并合并拉取请求时,feature/VHPC-1/review将在合并状态下自动构建和测试,并在成功时自动充当主线
问题:分支数量的两倍意味着一些额外的复杂性和工作.
工作流程4
如果自动验证通过,TeamCity将批准拉取请求.然后,人可以审查,批准并将其合并到主线中.
问题:TeamCity监视refs/pull-requests/merge,当集成分支发生变化时,这会改变,这意味着当集成分支获得一个新的更改时,将在所有打开的pull请求上触发构建.
git teamcity continuous-integration pull-request bitbucket-server
经过几次操作后,GitHub似乎有点失落 - 我当然......
所以,这就是故事:
我是git的新手,也是github的新手.在我的存储库中,我有一个分支(让我们称之为B)我正在处理一个功能.
现在我想继续我在分支B上的工作,然后合并它,但是虽然分支是不同的超过800行,GitHub显示只有一行差异(一次提交).
这可能是因为我在恢复更改后尝试重新打开旧的pull请求.我确实重新打开了拉取请求,但合并选项不再可用.我试图关闭或打开老拉请求,并创建一个新的拉请求(拉分支B到master),但这种只显示了一个承诺,仿佛其余的全是由原始拉请求吃掉了(尽管已恢复).但是,如果我尽量拉master至B-它显示所有(约800 +/-300差)的不同之处.
我想回到分支机构安静地工作B- 我想回到B可以自动合并的那一刻(现在不可能因为新的拉动请求只显示一个微小的差异B,master而实际的差异是不同的) .最简单的方法是什么?
在Visual Studio Online中,我们已经能够设置拉取请求的通知,因此现在可以在创建,更新和完成一个时收到电子邮件警报.但是,在对代码更改发表评论时,不会发送电子邮件警报.由于我们将此作为代码审查的论坛,因此拉取请求的创建者获得通知的唯一方法是让审阅者添加他们的注释并将其响应设置为已拒绝.
当对拉取请求中的代码更改发表评论时,有什么方法可以收到警报吗?
我从一个开源存储库分叉并从我的fork克隆.我创建了一个功能分支,进行了一些更改,将它们推送到我的分叉仓库,并从那里向主仓库提交了拉取请求.
后来我对同一个本地功能分支进行了更多更改,从开源repo中取出最新的master,将我的更改重新设置为,然后将它们推送到我的fork上的同一个功能分支.pull请求已自动更新,但现在GitHub上的pull请求页面(在我的repo和主repo中)都注意到"所有检查都已通过",但随后说"此分支有必须解决的冲突".
这仅仅是因为在我提交之后其他拉取请求已经合并了吗?或者是否还有另一个冲突的原因?我如何找出原因?
我在提交这个问题之前看到的答案涉及合并具有不同名称或所有者的分支.我想知道:
从gerrit到github,我缺少一个主要功能,即仅允许快速向前合并。从本质上讲,我认为,如果您要在陈旧的master分支上进行更改,则任何类型的“ CI构建签名”都是没有用的。
我想知道是否有任何方法可以在(企业)github中配置它?是否有任何设置或其他技巧,除非分支被正确地重新设置,否则不允许用户按下github中的“合并拉取请求”按钮?
最好,我什至想补充一点,它还应该检查PR中的所有提交是否都被压缩(除非PR仅包含一个提交,否则PR无法合并)。
因此,完美的解决方案:只允许具有单个提交且先前已重新定基础的PR合并。
我开始在Github上使用新的草稿拉取请求功能,但是我想知道是否可以在不小心提出拉取请求的情况下将合法的拉取请求转回草稿拉取请求。
当在Bitbucket Cloud上创建请求请求时,这是有效负载的重要部分,该负载由Bitbucket webhooks进行回购以进行POST:
{
"destination": {
"commit": {
"hash": "b0xxxx9b05e6",
"type": "commit"
},
"repository": {
"type": "repository",
"name": "test-repo",
"full_name": "ntrs/test-repo",
"uuid": "{4exxxx51-e5df-49a7-9601-5d24cb50d3bd}"
},
"branch": {
"name": "master"
}
},
"source": {
"commit": {
"hash": "3dxxxxea3b8f",
"type": "commit",
"repository": {
"type": "repository",
"name": "test-repo",
"full_name": "ntrs/test-repo",
"uuid": "{4exxxx51-e5df-49a7-9601-5d24cb50d3bd}"
},
"branch": {
"name": "temp"
}
}
}
Run Code Online (Sandbox Code Playgroud)
因此,与Github不同,Bitbucket不会创建一些具有合并功能的临时分支-因此,我是否希望自己进行合并以创建一些可以提交以进行测试的合并提交?如您所见,我所拥有的只是源提交和目标提交,而不是要测试的新合并提交。
pull-request ×10
git ×7
github ×6
bitbucket ×2
azure-devops ×1
github-api ×1
merge ×1
teamcity ×1