克隆GitHub存储库并合并所有拉取请求。

4

你的意思是如何自动化这个过程? - Schwern
1
你是否拥有这个 GitHub 仓库? - Code-Apprentice
不,对两个问题都不是。 - Mike Deluca
2个回答

2
这样可以实现你想要的功能。克隆远程仓库,配置拉取请求并合并每个PR分支。但是,分支之间存在冲突。它们以不同的方式更改相同的文件。因此将所有分支合并在一起并非易事。因此脚本会失败。
#!/usr/bin/env bash

set -e

git clone https://github.com/Sumi-Interactive/SIAlertView
cd SIAlertView

git config --add remote.origin.fetch "+refs/pull/*/head:refs/remotes/origin/pr/*"
git fetch

for branch in $(git branch -r); do
    [[ $branch =~ origin/pr/ ]] && git merge $branch
done

自动接受拉取请求是非常糟糕的做法。这样做无异于否定了拉取请求的意义。 - Schwern
这很好,我不需要有冲突的文件。谢谢! - Mike Deluca
这将合并所有拉取请求,即使已关闭的请求! - Schwern
更改 remote.origin.fetch 是不必要的。您可以直接使用 pull/*/head 拉取分支。 - Code-Apprentice
@Code-Apprentice 你会如何准确地做到这一点? - Mike Deluca
我不确定如何在脚本中自动化它,但是 git fetch origin pull/###/head 可以在不更改 remote.origin.fetch 的情况下工作。(将 ### 替换为实际的 PR 编号。)我一直在尝试找出如何获取所有这种形式的分支,但还没有成功。 - Code-Apprentice

0

浏览它们,审核它们,如果通过审核,请点击合并按钮。如果没有,请评论并自行修复或等待贡献者修复。

您不想自动化此过程,拥有PR的意义在于有人进行审核。如果您自动接受,则失去了这个意义。如果您不想审核PR,则完全跳过它们,并允许贡献者推送到主分支(可能不是一个好主意)。

您似乎没有对PR进行持续集成测试,因此您甚至不确定PR是否有效。即使它们单独工作,也不能保证它们一旦组合起来就能全部工作。 master 将会变得混乱不堪。

而且,由于同时存在36个PR,盲目地将它们全部合并会导致冲突(或更糟糕的是,悄悄地覆盖彼此的更改)。您需要智能地将它们整合在一起。

现在,您已经宣传了您的项目正在盲目地接受PR,一个恶意攻击者很容易将恶意软件插入您的项目中。

最好的方式是找到更多人来帮忙审查和集成。这可以是非官方的,只需请求一些人对PR进行评论,或者您可以使用Github的审查流程

由于他们想克隆GitHub存储库,我相信OP在其中没有任何特权,因此无法合并PR。 - Code-Apprentice
我不是存储库的所有者。我并不在意这些,我只想让它更新到最新状态,然后再修复它。 - Mike Deluca
@MikeDeluca,你不必合并他们的PR来更新项目以进行贡献。这是一个坏主意,因为你现在会与其他人使用的内容不同,并且你不知道哪些PR将被接受或以何种修改形式。Fork该repo,clone它,然后开始。如果你真的想要本地查看PR,可以使用Harald的技巧获取并检查它们,但不要盲目地合并它们!停在git fetch或者按照此过程操作 - Schwern

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接