フォークをまたいだマージリクエストの共同作業の許可

GitLab 10.6で導入されました

ユーザーがフォークからのマージリクエストを開くと、そのソースブランチでの上流メンバーとの共同作業を許可するオプションが与えられます。 これにより、上流プロジェクトのメンバーはマージ前に小さな修正やブランチのリベースを行うことができ、外部からの貢献を受け入れる際のやりとりを減らすことができます。

この機能は、公開されているフォークプロジェクト全体のマージリクエストに利用できます。

マージリクエストで有効にすると、プロジェクトのターゲットブランチへのマージアクセス権を持つメンバーに、マージリクエストのソースブランチへの書き込み権限が付与されます。

上流メンバーからのコミット編集の有効化

この機能は、ソースプロジェクトへのプッシュアクセス権を持っているユーザーのみが有効化でき、マージリクエストがオープンされている間のみ有効です。 有効化されると、アップストリームメンバーはマージリクエストのパイプラインとジョブを再試行できるようになります:

  1. マージリクエストを作成または編集中に貢献者を有効にします。

    Enable contribution

  2. マージリクエストが作成されると、対象ブランチにマージできるメンバーからのコミットが許可されていることがわかります。

    Check that contribution is enabled

上流メンバーとしてフォークへプッシュ

マージリクエストの作成者がアップストリームメンバーからの貢献を有効にしている場合、フォークしたリポジトリのブランチに直接プッシュすることができます。

そう仮定すると

  • フォークされたプロジェクトのURLはgit@gitlab.com:thedude/awesome-project.git
  • マージリクエストのブランチはupdate-docsです。

プロセスはこんな感じです:

  1. まず最初に、マージリクエストによる変更を取得する必要があります。 ブランチをチェックアウトボタンをクリックすると、実行可能なコマンドがあらかじめ用意されています。

    Check out branch button

  2. コピーボタンを使って最初のコマンドをコピーし、ターミナルに貼り付けます:

    git fetch git@gitlab.com:thedude/awesome-project.git update-docs
    git checkout -b thedude-awesome-project-update-docs FETCH_HEAD
    

    これはフォークしたプロジェクトのブランチを取得し、取得したブランチをもとにローカルブランチを作成します。

  3. 必要な変更を加えてコミットしてください。
  4. フォークされたプロジェクトにプッシュします:

    git push git@gitlab.com:thedude/awesome-project.git thedude-awesome-project-update-docs:update-docs
    

    2つのブランチの間にコロン (:) があることに注意してください。上のコマンドは、ローカルブランチthedude-awesome-project-update-docsgit@gitlab.com:thedude/awesome-project.git リポジトリのupdate-docs ブランチにプッシュします。