0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【git-spice】フォークワークフロー

0
Posted at

セットアップ方法

リモートの役割を理解する

フォークワークフローでは、2種類のリモートを使い分けます。

リモート 指す先 役割
upstream 本家リポジトリ PRの受け先、trunkの取得元
origin 自分のフォーク ブランチのプッシュ先

リポジトリの初期化

gs repo init--upstream--remote オプションを渡すことで、それぞれの役割を明示的に設定します。

$ gs repo init --upstream upstream --remote origin
  • --upstream upstream : PRを受け取るリモートを upstream に指定
  • --remote origin : ブランチをプッシュするリモートを origin に指定

これだけで設定は完了です。

注意:GitHub App認証との非互換性

GitHubのフォークワークフローでは、GitHub App認証はサポートされていません。Personal Access Token(PAT)やOAuthなど、他の認証方法を使用してください。

通常のPR提出との違い

初期化後は、これまでと同じコマンドでブランチを提出できます。内部動作が変わるだけです。

# 現在のブランチをPR提出する
$ gs branch submit --fill
INF Created #123: https://github.com/example/project/pull/123

git-spiceが自動的に:

  • ブランチを origin(フォーク)にプッシュ
  • upstream(本家)に対してPRを作成

してくれます。--fill フラグはコミットメッセージからタイトルと本文を自動入力するオプションです。

スタック提出時の挙動

フォークワークフローでスタック全体を提出するときは、少し挙動が異なります。

$ git branch --show-current
feature-a

$ gs stack submit --fill
INF Created #123: https://github.com/example/project/pull/123
INF feature-b: Pushing to origin, skipping CR: base is feature-a

feature-b はプッシュはされますが、PRは作成されません。

これはなぜかというと、フォークワークフローでは trunkを直接ベースとするブランチのみPRが作成される からです。feature-bfeature-a をベースにしているため、feature-a のPRがマージされてtrunkにリベースされるまで、PRの作成はスキップされます。

スタック全体をPRにしたい場合

スタック全体でPRを出したい場合は、write権限を持つリポジトリを使う通常フロー、またはフォーク先のリポジトリにメンバーとして参加している場合に限り可能です。フォークワークフローではこの制限があることを念頭に置いておきましょう。

upstreamとの同期

本家リポジトリのmainブランチを取得して最新の状態に保つには、通常どおり gs repo sync を使います。

$ gs repo sync
INF main: pulled 3 new commit(s)
INF feat1: #123 was merged
INF feat1: deleted (was 9f1c9af)

フォーク設定を行っていれば、upstream からtrunkを取得し、マージ済みのローカルブランチを自動で削除してくれます。

まとめ

操作 コマンド
フォークワークフローの初期化 gs repo init --upstream upstream --remote origin
現在のブランチをPR提出 gs branch submit --fill
スタック全体をPR提出 gs stack submit --fill
upstreamと同期 gs repo sync

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?