web-dev-qa-db-ja.com

プルリクエストはGitの一部ですか、それともGitHub、Gerrit、Atlassian Stashなどのツールの機能ですか?

プルリクエストは、Gitでコードレビューを行うための一般的な方法のようです。ただし、組み込みのgit request-pullを使用する場合、または別のツールを使用する場合に、この用語が同じ意味であるかどうかは明確ではありません。

プルリクエストはGitの組み込み関数ですか、それともGitHub、Gerrit、Atlassian Stashなどのツールの一般的な用語ですか?

コードレビューのディスカッションと「結果」は、Gitのコミット履歴または別のデータベースに保存されていますか?

38
user3049984

プルリクエストは、Gitが作成されたときに始まった単純な概念ですが、それ以降、さまざまなレベルに引き上げられています。

本質的には、貢献したいリポジトリへのプッシュ権限がないため、代わりにリポジトリをフォークしてプライベートコピーを作成し(クローンはすでにこれを行っています)、代わりにそのリポジトリに貢献します。そして、あなたは元のリポジトリのメンテナプルインするように依頼します変更。つまり、基本的にパッチを送信していることになります。

さて、私が言ったように、これを行うにはさまざまな方法がありますが、それはすべて、メンテナに変更をプルするように要求すること、つまり名前になります。 Gitが作成された本来の目的はLinuxカーネルであり、メーリングリストを使用して永遠に開発されてきました。したがって、彼らにとって、プルリクエストは実際には電子メールごとにパッチを送信しています。これらのパッチは、実際には、通常の電子メール通信のものが付加されたコミットオブジェクトです。Gitにはこれを生成するためのツールがあります。

git request-pullは、プルリクエストを要求するメッセージを生成するための同様のツールです。ただし、この場合は、プルのアイデアに近いです。パッチを適用することもできますが、request-pullによって作成されたリクエストは、実際にはメンテナに別のリモートリポジトリから変更をプルするように指示します。

Git book には次の例があります:

$ git request-pull Origin/master myfork
The following changes since commit 1edee6b1d61823a2de3b09c160d7080b8d1b3a40:
  John Smith (1):
        added a new function

are available in the git repository at:

  git://githost/simplegit.git featureA

Jessica Smith (2):
      add limit to log function
      change log output to 30 from 25

 lib/simplegit.rb |   10 +++++++++-
 1 files changed, 9 insertions(+), 1 deletions(-)

つまり、基本的な概念を実行するためのメッセージを生成するのは、実際には単なるユーティリティです。

GitHubのような他のソースコードホスティング業者も同様にこれを行います。 GitHubでプルリクエストを作成するときは、メンテナがプルできるコミットの詳細情報を含む問題を作成するだけです。もちろん、すべてが1つのWebサイト上にあるため、すべてをもう少し相互リンクして、たとえばワンクリックのマージボタンを提供できます。

ただし、基本的な概念は同じです。メンテナーに、行った変更をいくつか取り込むように要求します。唯一の違いは、このリクエストの通信方法です。

34
poke

git request-pull コマンドを使用して、ネイティブgitで「プルリクエスト」を作成できます。 Gitを実行すると、プロジェクトへの変更の概要と、コードを取得できるGitリポジトリのURLが生成されます。次に、これをメーリングリストまたはプロジェクトメンテナにメールで送信できます。メーリングリストは、自分のリポジトリへの変更をプルできます。

このセクションPro Gitブックには、git request-pullコマンドに関するより具体的な情報が含まれています。

7
blacktide