【问题标题】:Difference between 'git request-pull' and 'pull request'“git request-pull”和“pull request”之间的区别
【发布时间】:2018-03-22 08:17:12
【问题描述】:

什么是git request-pull,它与制作pull request 相比如何,例如on github?

1.应该如何使用?

2. 是否可以替代拉取请求(例如在 github 上)?

3.使用它有什么好处?

【问题讨论】:

  • @LasseVågsætherKarlsen:虽然肯定是与 GitHub/GitLab/etc 上的 PR 不同的工具,但其描述的第一行 Generate a request asking your upstream project to pull changes into their tree. 听起来非常接近,区别在于不需要协调网站.运行命令,将其转储到标准输出并以电子邮件/博客文章/等形式发送给某人。
  • 拉取请求不是 git 的一部分,它们是托管服务的一部分。此命令无法创建拉取请求。它会生成一个补丁,可用于将更改拉入存储库,此补丁需要使用邮件列表、电子邮件或讨论论坛或诸如此类的方式传达给 repo 所有者。
  • 我的问题是,有人在他们的工作流程中使用过它吗?如何使用?我会发现有类似“标准化拉取请求”之类的东西非常有趣,它不依赖于单一平台并将文档添加到 gitlog 等。
  • 我猜,是的,Linus 和 linux 内核的家伙?
  • Git Book,“贡献于项目”一章,“分叉公共项目”段落 - 在线查看:git-scm.com/book/en/v2/… - 顺便说一句,它还描述了email/patch 工作流/命令,也非常有用跨度>

标签: git github version-control pull-request


【解决方案1】:

git request-pull 命令早于 托管服务。如 cmets 中所述,它适用于倾向于包括运行 git format-patchgit send-email 以通过电子邮件传递补丁的工作流程。一旦补丁经过测试和批准,补丁生成器可能会使提交在他们或他们的公司提供的公共服务器上可访问,并向项目维护者发送最终电子邮件消息,宣布他们已经清理、重新定位、等,项目主题准备合并。

例如,假设一个名叫 Phil Systeme 的人有一个用于文件系统的 Linux 内核补丁。从某些 Linux 版本开始,他拥有 Linux 内核树的克隆。他的补丁包含一个对十几个文件的巨大提交,他将这些文件发送到文件系统维护列表,主题行是:

PATCH: make the foo file system better

文件系统维护邮件列表上的反馈首先说:将其分成至少六个较小的部分。 Phil Systeme 将他的 Phile System 补丁分解为八个合乎逻辑的小补丁,每个补丁都做了一些有用的事情并且仍然可以构建。这次他发了9条消息:

[PATCH v2 0/8]: make the foo file system better

(description of what the patch series is about)

[PATCH v2 1/8]: split up the xyzzy function

As a prerequisite for improving the foo file system, break
a large function into several smaller ones that each do one
thing.  We'll use this later to work better and add new features.

[PATCH v2 2/8]: ...

这一次,他收到的反馈说它看起来更好,但他忘记考虑 ARM cpu 需要一个特殊的东西而 MIPS CPU 需要不同的特殊东西这一事实。于是他发送了第三轮[PATCH v3 m/n]消息,以此类推。

最终,文件系统维护副手同意这个补丁应该进入。现在,Phil 或副手将通过电子邮件发送的补丁转换为实际的 Git 提交,应用于当前的开发内核或维护内核,管他呢。在这一点上,Linus Torvalds 非常信任这个人,以至于这个人可以说:“这是一个 Git 存储库,其中包含您应该添加到内核的新提交。”然后,Linus 可以直接从另一个存储库中 git pull,或者更有可能从那里 git fetch 决定是否以及如何合并它们,或者是否侮辱该人。 :-)


像 GitHub 和 Bitbucket 这样的托管服务声称,或者感觉,或者你喜欢的任何动词,他们的“拉取请求”机制优于所有这些电子邮件。在某些方面,很明显是;但是他们对隐藏实际提交图的热情,如果你要使用真正的合并,这真的很重要,对我来说有点神秘。

【讨论】:

  • 您好,谢谢您的回答。 “隐藏实际的提交图”是什么意思?谁或什么是补丁生成器?抱歉,如果这些问题感觉很愚蠢,但是仅结合 github 了解 git 这为我打开了一个新世界。
  • 这里的“patch-generator”是编写一系列补丁然后根据邮件列表上的回复进行修改的个人或团体。提交图是您可以使用某些 Git GUI 或 git log --graph(尝试 git log --all --decorate --oneline --graph)看到的。
  • 谢谢。如果您能考虑stackoverflow.com/questions/54218945/…,我将不胜感激
【解决方案2】:

1.Pull Request 支持将代码修改受控地采用到给定代码库中通过 Web-UI,由托管商(例如 github、bitbucket)提供)。 Example.

2. git request-pull 是一个 git 命令,它简化了通过电子邮件贡献补丁的过程,而不依赖于单个主机的服务。 Example.

+------------------+---------------------------- --+--------------+
|行动 |拉取请求 | git 请求拉 |
+-----------------+-------------------------------- -+--------------+
|认证 |在主机上注册并登录 |全名,签名电子邮件 |
|描述 |网页界面 |补丁,电子邮件 |
|讨论 |网页界面 |电子邮件,邮件列表 |
|评论 |网页界面 |电子邮件,邮件列表 |
|收养|一键“合并”动作 | git 拉/推 |
+-----------------+-------------------------------- -+--------------+

【讨论】:

    猜你喜欢
    • 2017-11-23
    • 2023-02-09
    • 1970-01-01
    • 1970-01-01
    • 2020-10-20
    • 2017-03-26
    • 2021-02-05
    • 2014-10-15
    • 2011-02-22
    相关资源
    最近更新 更多