在我的 GitHub 存储库上,我有两个主要分支develop和main,分别代表测试和生产就绪的网站。我在某个分支上开发一个功能,例如newFeature,然后将其合并到develop, 中进行测试。其他人也在他们的分支机构中这样做,因此develop有一些变化。假设一切都经过测试,我们现在希望通过合并develop到main.
我想定期进行合并develop,main比如每周五上午 10 点。我需要与本周添加更改的任何人进行核对,以确保一切都经过测试并正常工作。为了确保这里成功的机会,我想阻止人们develop在周四下午 2 点之后合并更多的拉取请求。
然后,开发人员(意识到这一限制)应该花一天剩下的时间来测试将在第二天早上develop添加的任何更改。main如果他们发现 已经存在的任何问题develop,他们可以在其分支上解决该问题,向 提出 PR develop,并要求存储库所有者(不受此限制)批准他们的 PR。
这种情况下,用户(除了仓库所有者之外)无法在一周的某些时间将 PR 合并到分支中,可能吗?
有多种方法可以实现这一点,而且没有一种方法是 GitHub 特有的:
develop从时间 X 开始并在时间 Y 结束的分支。据我所知,最流行的集中式 Git 存储库工具可以让管理员手动锁定和解锁分支(使用显式锁定或通过调整权限)。是否可以自动化计时将取决于工具,但我假设您可以编写自定义集成,如果不能,每周手动锁定一次并不是什么大问题,特别是因为您必须手动干预才能修复错误在。develop根本不要锁定!这实际上是大多数人所做的。例如,在Git Flow 中,您只需出于这个确切原因创建一个发布分支。如果您不想实际创建专用发布分支,则不必这样做;只需记住您从中截断和测试的提交 ID develop,如果您没有用于错误修复的新 PR,只需释放该提交 ID 并将该提交 ID 合并到main. 如果您最终修复了错误,您不妨创建一个release分支,以便有一个分支可以将修复 PR 到其中。无论您是否使用 Git Flow,出于理智的目的,我都强烈推荐选项 3,这样您就不必在发布周期期间停止开发。