ブランチ機能は、ソフトウェアのバージョン管理で使用されます。ブランチと呼ばれるプロジェクトファイルのコピーにより、チームはプロジェクトの未編集のコピーを保持したまま、同時に並行して仕事を進めることができます。これにより、他のユーザーによるプロジェクトファイルへの変更を誤って上書きするリスクが排除されます。
新しいブランチが作成されるとメインのプロジェクトがコピーされ、変更はそのブランチに対してのみ行われます。変更が完了すると、ブランチはメインプロジェクトにマージされます。複数のブランチで同時に仕事を進めることができ、マージ後、ブランチは自動的に削除されます。マージされたブランチは、履歴追跡を簡素化するためにタブで引き続き利用できます。既存のブランチのタグは、新しいブランチにコピーされます。
制限事項
-
翻訳者およびゲストを除くすべてのrolesは、ビューにアクセスできます。
-
マージを元に戻すことはできず、ブランチを復元することもできません。
-
特定のブランチで作成されたJobsはメインプロジェクトでは表示されず、その逆も同様です。ブランチがメインプロジェクトにマージされると、そのブランチ内の未完了のジョブは失われます。
-
ビューのレポートには、アクティブなブランチのステータスのみが反映されます。ブランチをメインプロジェクトにマージすると、メインプロジェクトのレポートが更新されます。
-
ビューには、アクティブなブランチ内のアクティビティのみが含まれます。ブランチ内のアクティビティはメインプロジェクトでは表示されず、その逆も同様です。ブランチ内のアクティビティは、メインプロジェクトにマージされると失われます。
-
GitHub Syncはメインプロジェクトでのみ使用でき、ブランチでは使用できません。
-
コメントは、ブランチ内で行われた場合、メインのプロジェクトでは表示されず、その逆も同様です。
-
は、ブランチ内で作成された場合、メインのプロジェクトでは表示されず、その逆も同様です。ブランチがメインのプロジェクトにマージされると、そのブランチ内の未完了の注文は失われます。
-
翻訳者は特定のブランチに制限することはできませんが、特定のロケールで仕事をする権限は与えられます。翻訳者には、ブランチで仕事をする方法を指示する必要があります。
ブランチ機能は、のタブで有効になり、メインのブランチを変更から保護するオプションがあります。
有効にすると、プロジェクト画面にブランチメニューが表示され、そこで仕事をするブランチを選択できます。CLIでブランチを指定するには、
--branchパラメータを使用します。
--branch <branch_name>
ブランチはプロジェクトのタブに一覧表示され、作成およびマージ情報が表示されます。ブランチは、タブから削除やマージを行うことができ、そのブランチ用のジョブを作成することもできます。
APIまたはCLI経由でプロジェクトのすべてのブランチを一覧表示するには、以下を実行します。
$ phrase branches list --project_id <project_id> # 例 $ phrase branches list --project_id 1d8ae641902624df63ce6fbd64ff9549$ phrase branches list <project_id>
APIまたはCLI経由でブランチを削除するには、以下を実行します。
$ phrase branches delete --project_id <project_id> --name <branch_name> # 例 $ phrase branches delete --project_id 1d8ae641902624df63ce6fbd64ff9549 --name test-test$ phrase branch delete <project_id> <branch_name>
管理者、プロジェクトマネージャ、デザイナー、および開発者のロールは、タブ、API経由、またはCLIで新しいブランチを作成できます。ブランチは、メインのブランチだけでなく、他のどのブランチからでも作成できます。最大5レベルのブランチがサポートされています。
UIからブランチを作成するには、以下の手順に従います。
-
ページから、タブを選択します。
-
ブランチを作成をクリックします。
ウィンドウが開きます。
-
ブランチの名前を入力します。
-
既存のブランチの一覧からを選択します。
-
作成をクリックします。
新しいブランチが一覧に追加されます。
APIまたはCPI経由でブランチを作成するには、以下を実行します。
$ phrase branches create --project_id <project_id> --data <data>
翻訳をプッシュする際にブランチを作成するには、以下を実行します。
$ phrase push --branch <branch_name>
同期を行うことで、作業ブランチが、そのブランチの作成元であるブランチからの最新の変更と一致した状態に保たれます。これにより、翻訳者は長期プロジェクトにおいても更新されたバージョンのコンテンツで仕事ができます。
ブランチをベースブランチと同期するには、以下の手順に従います。
-
タブで、目的のブランチの横にあるベースブランチと同期をクリックします。
ページが表示され、ベースブランチと同期される競合や変更に関する情報が示されます。
-
検出された変更のいずれかをクリックして、同期前に確認します。
選択した変更に関する詳細が記載されたテーブルが表示されます。
-
Syncを選択し、確定して変更を適用します。
変更はベースブランチに追加され、翻訳エディタで表示可能になります。前回の同期に関する情報は、タブの列に表示されます。
ブランチの同期は、以下のCLIコマンドを実行してAPI経由で行うこともできます:
$ phrase branches sync \\
--project_id <project_id> \
--name <branch_name> \
--data '{"strategy":"use_main"}' \
--access_token <token>
-
use_branchは、ブランチからの変更を適用することで競合を解決します。指定がない場合はこれがデフォルトとなります。 -
use_mainは、ブランチからの変更を拒否することで競合を解決し、ベースブランチを参照します。スタックされたブランチで仕事をする場合、ベースブランチが必ずしも実際のメインプロジェクトブランチであるとは限りません。
ブランチで翻訳やバージョン固有の仕事が完了したら、変更をベースブランチに結合できます。すべての変更がチェーンの上位に結合されたら、トップレベルのブランチをメインブランチに結合できます。
結合が成功すると、結合されたブランチは自動的に削除され、履歴追跡のためにタブに表示されます。
結合中にベースブランチに適用されるのは、以下のリソースへの変更のみです:
-
ロケール
-
キー
-
翻訳
アクティビティ、ジョブ、注文などの他のリソースへの変更は適用されません。
アクティブな子ブランチを持つブランチは、先に子ブランチが削除または結合されるまで結合できません。
競合
競合は、ブランチが作成または最後に同期された後、現在のブランチとそのベースブランチの両方でリソース(翻訳、キー、またはロケール)が変更された場合に発生します。競合はメインへの結合時だけでなく、ブランチスタックのどのレベルでも発生する可能性があります。
ブランチを結合するには、以下の手順に従います:
-
プロジェクトのタブから、目的のブランチの横にあるMerge with base branchをクリックします。
ページが開きます。結合中に変更される翻訳に関する情報には、セルをクリックしてアクセスできます。
-
競合がある場合は、結合戦略を選択してください:
-
を選択して、競合する変更を拒否し、既存の翻訳を保持します。
-
を選択して、既存の翻訳をブランチからの変更で置換します。
-
-
結合をクリックし、確定して変更を適用します。
ブランチはベースブランチに結合され、自動的に削除されます。結合されたブランチの履歴を確認するには、ページのタブを開きます。
APIまたはCPI経由でブランチを結合するには、以下を実行します:
$ phrase branches merge \\
--project_id <project_id> \
--name <name> \\
--data '{"strategy":"use_main"}' \
--access_token <token>
-
use_branchは、ブランチからの変更を適用することで競合を解決します。指定がない場合はこれがデフォルトとなります。 -
use_mainは、ブランチからの変更を拒否することで競合を解決します。use_masterもサポートされています。
結合アクションは、結合されたブランチも自動的に削除します。
CLIを使用する場合、--branchパラメータを使用して、プッシュまたはプルするブランチを指定します。
$ phrase push --branch <branch_name> $ phrase pull --branch <branch_name>
指定されたブランチがプロジェクトに存在しない場合、クライアントがそれを作成します。
アクティブなgitブランチのブランチ名を使用してプッシュおよびプルするには、--use-local-branch-nameを使用します。
$ phrase push --use-local-branch-name $ phrase pull --use-local-branch-name
プロジェクト引数を取るすべてのAPIエンドポイントは、--branchパラメータもサポートしており、プロジェクトの特定のブランチに対してアクションを実行できます。
$ phrase upload create <project_id> \
--branch <branch_name>
--file /path/to/my/file.json \
--file-format json \
--locale-id abcd1234cdef1234abcd1234cdef1234 \
--tags awesome-feature,needs-proofreading \
--locale-mapping "{"en": "2"}" \
--format-options "{"foo": "bar"}"