如何使用 Github API 找出谁关闭了拉取请求?
例如,这个拉取请求由 myakura 打开,由 markdotto 关闭。但是https://api.github.com/repos/twitter/bootstrap/pulls/4461没有显示对 markdotto 的任何引用。
我有一个分支,它已经将master合并了几次(以获得对该功能分支的最新错误修复).现在我想看看我在那个分支开始工作后所做的所有改变,所以我试过了git diff start_commit..HEAD.但是我注意到git也显示了那些合并的提交,所以这不是我想要的.
然后我尝试从该分支创建一个pull请求,看看是否同样适用于GitHub的pull请求,但是注意到pull请求只显示我想要的更改.
分支看起来像这样
master: A---B---C---D---E---F
\ \ \
feature: G---H---I---J---K---L
Run Code Online (Sandbox Code Playgroud)
问题是git diff A..L显示来自AL的所有提交,但是GitHub的pull请求只显示GL,这就是我想要的.
那么GitHub用来形成拉取请求的命令(或命令)是什么?
编辑:添加了图片
我知道将分支用于多个拉取请求,这很好。
但是这个场景呢:
我发现了两组相互矛盾的建议(但也许对 B 的依赖是不同的)
来自 GitHub 的建议似乎是说 C 应该应用于 A:
更改基本存储库会更改收到拉取请求通知的人。每个可以推送到基础存储库的人都会收到一封电子邮件通知,并在下次登录时在他们的仪表板中看到新的拉取请求。
这似乎适用于这种情况,原因有两个:
但是StackOverflow 上的这个答案恰恰相反,应该将 C 应用于 B。请注意,他的情况是a->b->c->d->e,而我的情况更简单A->B->C。
提出另一个请求。对于基础,输入 C 的提交编号,对于头部,输入 E(你的/主人)。
这相当于我的场景中的 B->C 范围。
对我来说,这两个论点都有一定的道理。哪个是正确的?
我猜答案是“这取决于......”,但我真的很感激演练。感觉这里至少有三个问题:
想法???
我有一组开发人员在 GitLab 存储库中工作。我希望他们都能创建合并请求,但我想确保每个更改都有代码审查的书面记录,这意味着合并请求必须被作者以外的其他人接受。
我可以通过使用受保护的分支来设置一些模拟这一点的东西,但是只有一部分人可以接受合并请求到该分支。这是不必要的限制;只要经过代码审查,任何代码都可以被接受。
是否可以在 GitLab 中创建这样的工作流程?具体来说,是否可以进行设置以使用户无法接受他们自己的合并请求?
有人从 fork 向我的 GitHub 项目提交了拉取请求。与其直接合并到 master 中,我更愿意将更改合并到一个 feature 分支中,这样我就可以在将最终产品合并到 master 之前进行一些小的编辑。如果可能的话,我希望 GitHub 向提交者表明请求已被接受(我想鼓励和表彰贡献!)。这可能吗?我该怎么做?
我跑了
git fetch upstream +refs/pull/*:refs/remotes/upstream/pr/*
git fetch origin +refs/pull/*:refs/remotes/origin/pr/*
Run Code Online (Sandbox Code Playgroud)
我最终得到了数百个分支——每个拉取请求有 4 个分支(head、merge,以及来自 origin 和 upstream。
如何分两步在本地摆脱这些分支?
我试过了
git branch -D refs/remotes/origin/pr/*
Run Code Online (Sandbox Code Playgroud)
但这说“未找到”。
是否有用于创建拉取请求的 Jenkins 插件?
假设我在某个功能分支上运行 Jenkins 作业。如果这项工作成功,那么我希望 Jenkins 自动从这个功能分支创建一个拉取请求。
有一种命令行方式来创建拉取请求:
git request-pull [-p] <start> <url> [<end>]
Run Code Online (Sandbox Code Playgroud)
但我一直无法找到让 Jenkins 自动执行任务的方法。
有没有人使用过 stash builder 插件。它的文档说它在构建环境中添加了一些环境变量,但是如果我回应它们,它们都是空的
echo "${sourceBranch}"
echo "${targetBranch}"
echo "${sourceRepositoryOwner}"
echo "${sourceRepositoryName}"
echo "${pullRequestId}"
echo "${destinationRepositoryOwner}"
echo "${destinationReposotryName}"
echo "${pullRequestTitle}"
echo "${sourceCommitHash}"
Run Code Online (Sandbox Code Playgroud)
这个插件对我没有任何作用。这是我的配置我选择 git 作为 SCM [poll scm is not selected]
RepositoryUrl:ssh://git@stash-eng.abc.com:7999/mytool/my_tools_demo.git
Refspec:\+refs/pull-requests/*:refs/remotes/origin/pr/*
Branch Specifier:-origin/pr/${pullRequestId}/from
Run Code Online (Sandbox Code Playgroud)
然后我标记复选框“Stash Pull Requests Builder”,下面是差异字段的值
Cron:H/2 * * * *
Stash Host:stash-eng.abc.com
Stash Credentials:..........
Project:mytool
Repository Name:my_tools_demo
Run Code Online (Sandbox Code Playgroud)
仍然什么都不做。我也没有在日志中看到任何与插件相关的东西。
我想在travis上列出拉取请求中修改的所有文件.
我试过$(git diff --name-only $TRAVIS_PULL_REQUEST_BRANCH $(git merge-base $TRAVIS_PULL_REQUEST_BRANCH master))但git不知道TRAVIS_PULL_REQUEST_BRANCH,因为它是在一个分叉的回购.
我还尝试了git rev-list和$ TRAVIS_COMMIT_RANGE但它还包括主分支上的新提交.
知道如何获取由PR专门修改的文件吗?
我正在写一个shell脚本,一旦在Bitbucket中创建了Pull请求就应该触发它.我的问题是捕获Pull请求的方法是什么.到目前为止我找到了两种方法.
1)在bitbucket中创建一个钩子插件,用于捕获拉取请求.
2)创建一个jenkins作业,并在jenkins中使用相关插件捕获pull请求,并在构建操作中触发我的shell脚本.
有没有其他方法来捕获Pull请求?
谢谢.