リポジトリの使用

リポジトリの使用

repo start  ##ブランチの作成と切り替え
repo start newbranchname [--all | projectName]
repo start は git checkout -b コマンドのカプセル化です。git checkout -b は現在のブランチに基づいて機能ブランチを作成し、repo start はマニフェスト ファイルに設定されているブランチに基づいて機能ブランチを作成します。例: (マニフェスト ファイルに設定されているブランチが安定した 2 であると仮定します)
repo startsteady  --all (すべてのプロジェクト)
(すべてのプロジェクトについて、stable2 に基づいて
安定した機能ブランチを作成します。) repo startsteady platform/build platform /bionic
(プラットフォーム/ビルドおよびプラットフォーム/バイオニック プロジェクトの場合のみ、stable2 に基づいて安定したフィーチャー ブランチを作成します)
リポジトリ チェックアウトブランチ名  ##デフォルトでは、すべてのウェアハウスでブランチを切り替えます
リポジトリ チェックアウトブランチ名 ローカル ウェアハウス相対パス ##指定されたウェアハウスの切り替え ブランチ
リポジトリのマージ--branch-name ソース ブランチ名--merge-message 送信の説明  ##ブランチ マージ コマンド、このコマンドは、それらのパブリック ウェアハウス (つまり、リバースが個別に構成されているウェアハウス)
リポジトリ ブランチ ##ブランチを見る
repo マニフェスト  ##マニフェスト ファイルを表示します。
repo マニフェスト -ro aaaaa.xml ##タグ ファイルを生成します。
リポジトリ ステータス(ファイル ステータスの表示)
は git diff-index および git diff-filse コマンドをカプセル化したもので、一時記憶域のステータスを表示します。ファイル変更のローカル ステータス
repo accept BranchName ##ブランチ
リポジトリ バージョンを削除  ## リポジトリ バージョン番号を表示
repo grep   ## プロジェクト内のコンテンツを検索
repo sync  ## デフォルトでは、すべてのウェアハウスが同期されており、プロジェクトを指定できます。
初めてリポジトリ同期を実行する場合は、サーバーのすべてのコンテンツをローカルにコピーする git clone と同等です。マニフェストの xml ファイルの git commit に従って同期します。この xml ファイルは、リポジトリの初期化時に指定されます。
リポジトリ同期を実行するのが初めてではない場合、git リモート更新と同等です。git rebase のorigin/branch は、ローカル マージを使用してサーバー上のコードを更新します。リベース プロセス中に競合が発生した場合は、競合を手動で解決してから、 git rebase -- continue を実行する必要があります。 注: リポジトリの同期では .repo/repo ウェアハウスは更新されません
マニフェスト リポジトリが更新されます。
リポジトリ同期のパラメータ:
-j: マルチスレッド同期操作を有効にします。これにより、sync コマンドの実行速度が向上します。デフォルトでは、同期には 4 つのスレッドが同時に使用されます。 
-c、--current-branch: 指定されたリモート ブランチのみを同期します。デフォルトでは、同期はすべてのリモート ブランチを同期しますが、リモート ブランチが多数ある場合、ダウンロードされるコードの量が多くなります。このパラメータを使用すると、ダウンロード時間を短縮し、ローカル ディスク領域を節約できます。 
-d、--detach: 現在のローカル ブランチから切り離し、HEAD をmanifest.xml に設定されたブランチに強制的に切り替えます。ローカルの変更は無視され、ローカルの変更は上書きされません。このパラメータは実際の運用で非常に役立ち、初めてコードを同期するときは、開発のために dev ブランチに切り替えることがよくあります。このパラメーターを指定せずに sync を使用すると、ローカルの dev ブランチがマニフェストによって設定されたリモート ブランチとマージされ、同期が失敗する可能性があります。 
--force-sync
別のオブジェクト ディレクトリを指す必要がある場合、既存の git ディレクトリを上書きします。 警告: これによりデータが失われる可能性があります。 説明によると、同期が
強制的に行われ、ローカルの変更が失われる可能性があるようです。ただし、実際のテストでは、このオプションではローカルの変更が強制的に上書きされるわけではないことがわかりました。ローカル ファイルが変更された場合、このオプション sync を追加してもエラーが報告されます。
現在、repo sync コマンドには、ローカルの変更を強制的に上書きするオプションはありません。
-f、--force-broken: git ライブラリの同期が失敗しても、同期操作全体は中断されず、他の git ライブラリは引き続き同期されます。 
–no-clone-bundle: サーバーへのリクエストを開始するとき、最速の応答速度を達成するために、コンテンツ配信ネットワーク (CDN、Content Delivery Network) が使用されます。同期操作では、CDN を介して最も近いサーバーとの接続も確立され、HTTP/HTTPS の $URL/clone.bundle を使用してローカル git ライブラリが初期化されます。clone.bundle は実際にはリモート git ライブラリのミラー イメージであり、ダウンロードされます。 HTTP 経由で直接送信するため、ネットワーク帯域幅が有効に活用され、ダウンロードが高速化されます。

repo init -u xxx/manifest.git -b xxx -m xxx --repo-url=git://codeaurora.org/tools/repo.git --repo-branch=caf-stable
リポジトリはバッチ ファイルに相当します、リポジトリ スクリプトを使用して、複数の Git リポジトリのコンテンツを一度にダウンロードし、複数の Git クローンを回避し、より適切な管理と使用を可能にします。
リポジトリを使用して取得すると、すべての .git は .repo に配置され、外部の .git は単なるリンクになります。

リポジトリ スクリプトには、次の使用可能なパラメータがあります。
--repo-url=URL
リポジトリ ツール自体の git リポジトリ アドレス。デフォルトは次のとおりです: git://android.git.kernel.org/tools/repo.git
--repo-branch=REVISION リポジトリのバージョン ライブラリ、つまりリポジトリ git ライブラリのブランチ名またはマイルストーン名を使用します。デフォルトは caf-stable
--no-repo-verify リポジトリのマイルストーン署名を厳密に検証しないように設定します。
-u(--manifest-url) マニフェスト リポジトリの Git サーバー アドレスを設定します。
-b (--manifest-branch) マニフェスト リポジトリの特定のブランチをチェックアウトします。
--mirror は、リポジトリが初めて初期化されるときにのみ使用され、ローカル ミラーを作成します。
-m (--manifest-name) は、リスト ライブラリ内のリストを有効なリスト ファイルとして指定します。デフォルトはdefault.xmlです。
--no-tags はタグを取得しません。                                      
repo コマンド パラメーターの意味は、repo help コマンド (sync) を実行することで確認できます。

コマンド rep init を実行して、次の操作を完了します:
1. リポジトリ ツールの完全なダウンロードを完了します 実行されたリポジトリ スクリプトは単なるブート ツールであり、コードをダウンロードするためのスクリプトではありません。
2. マニフェスト ライブラリ manifest.git のクローンをディレクトリ .repo/manifests/ に作成します。(アドレスは -u パラメーターから取得されます)
3. マニフェスト ファイル .repo/manifest.xml は、.repo/manifests/default.xml を指す単なるシンボリック リンクです。
4. .repo/manifests/ ディレクトリに複数の xml ファイルがある場合、repo init -m パラメータはそのうちの 1 つを任意に選択でき、デフォルトはdefault.xml です。

マニフェスト ファイルの解析:
マニフェスト ライブラリ ファイルには複数のマニフェスト ファイル (ラベル インクルード) を含めることができます。マニフェスト リビジョン、アップストリーム、dest-branch: reviation
の 3 つの属性:
これは改訂されたバージョンで、通常は特定のコミット ID を指しており、リポジトリの同期後にチェックアウトされます。ブランチ名の場合は、リポジトリの同期後に、現在のブランチの最新のコミット ID にチェックアウトされます。アップストリーム: です。ブランチ名とリビジョン。リビジョンがブランチ名の場合、アップストリームは
機能しません。リビジョンが commit-id の場合、アップストリームはコミット オブジェクトが配置されているブランチです。dest-branch: プロジェクトが属するターゲット
ブランチ、 repo アップロード ( gerrit) コマンドを使用する場合、コードはブランチにアップロードされます。gerrit を使用しない場合は、この値を指定できません。現在のマニフェスト情報を表示するには、 repo マニフェスト -r を使用します。リモート要素
:
< remote fetch="../" name="origin" review="http://IP:8080"/>属性フェッチ:
ダウンロードへの相対
パス 属性名: リモート リポジトリ名
属性レビュー: ベース
アドレス デフォルト要素: <default Remote= "origin"reviation="branchName" sync -j="4"/>
デフォルトのリポジトリとブランチを設定します。各プロジェクト (プロジェクト要素) は、独自のリモートとリビジョンを定義して、デフォルト設定をオーバーライドできます。
プロジェクト要素:
<プロジェクト名="device/mediatek/common" path="device/mediatek/common">
        <copyfile dest="mk" src="mk"/>
</project>

子要素 copyfile: クローン作成後の追加アクションを定義し、src から dest にコピーします。

次のコマンドは非常に便利です。-pパラメータはプロジェクトを出力できますが、順序に注意してください。
repo forall -p -c "git Pushorigin HEAD:refs/heads/mtk_8.1_6763 2>&1 | tee" >>push.log

repo list    ##ローカルにダウンロードされたすべてのプロジェクトのパスと名前をコロンで区切ってリストします。
オプション:
-h、--help ヘルプ情報を表示します。
-f、--fullpath プロジェクトのフル パスを表示します
。 -n、--name-only プロジェクトの名前を表示します
。 -p、--path-only プロジェクト パスを表示します。 name

repo forall [project- list] -c コマンドは、
指定されたプロジェクト リストまたはすべてのプロジェクトに対してコマンド コマンドを実行し、-p パラメーターはプロジェクトのパスを出力できます。-c パラメータは、現在のブランチを示します。
各プロジェクトで指定されたシェル コマンドを実行します。次の追加の環境変数は、repo forall を通じて使用できます。
REPO_PROJECT は、プロジェクトの一意の名前に設定されます。
REPO_PATH は、クライアントのルート ディレクトリに対する相対パスです。
REPO_REMOTE は、インベントリ内のリモート システムの名前です。
REPO_LREV は、ローカル追跡ブランチに変換されたマニフェスト内のリビジョンの名前です。ローカルで実行されている Git コマンドにマニフェスト リビジョンを渡す必要がある場合は、この変数を使用します。
REPO_RREV は、マニフェストに表示されているとおりの、マニフェスト内のリビジョンの名前です。
実際の使用: repo forall -c 'echo $REPO_PROJECT' > 102.list
repo forall -c 'echo =======$REPO_PROJECT======;git Push --no-thin ssh://xxx @xxx.com:29418/PHR/$REPO_PROJECT HEAD:refs/heads/xxx' (ブランチを別のサーバーにプッシュ)
repo forall -c 'echo =======$REPO_PROJECT======;git リモートオリジンを追加 ssh://xxx.com:29418/$REPO_PROJECT' (リモートを追加)
repo forall -c 'echo =======$REPO_PROJECT ======;ssh gerritxx gerrit create-project xxx/ $ REPO_PROJECT --parent xxx/platform/art --branch master --empty-commit' (ウェアハウスの構築)

repo start  ##ブランチの作成と切り替え
repo start newbranchname [--all | projectName]
repo start は git checkout -b コマンドのカプセル化です。git checkout -b は現在のブランチに基づいて機能ブランチを作成し、repo start はマニフェスト ファイルに設定されているブランチに基づいて機能ブランチを作成します。例: (マニフェスト ファイルに設定されているブランチが安定した 2 であると仮定します)
repo startsteady  --all (すべてのプロジェクト)
(すべてのプロジェクトについて、stable2 に基づいて
安定した機能ブランチを作成します。) repo startsteady platform/build platform /bionic
(プラットフォーム/ビルドおよびプラットフォーム/バイオニック プロジェクトの場合のみ、stable2 に基づいて安定したフィーチャー ブランチを作成します)
リポジトリ チェックアウトブランチ名  ##デフォルトでは、すべてのウェアハウスでブランチを切り替えます
リポジトリ チェックアウトブランチ名 ローカル ウェアハウス相対パス ##指定されたウェアハウスの切り替え ブランチ
リポジトリのマージ--branch-name ソース ブランチ名--merge-message 送信の説明  ##ブランチ マージ コマンド、このコマンドは、それらのパブリック ウェアハウス (つまり、リバースが個別に構成されているウェアハウス)
リポジトリ ブランチ ##ブランチを見る
repo マニフェスト  ##マニフェスト ファイルを表示します。
repo マニフェスト -ro aaaaa.xml ##タグ ファイルを生成します。
リポジトリ ステータス(ファイル ステータスの表示)
は git diff-index および git diff-filse コマンドをカプセル化したもので、一時記憶域のステータスを表示します。ファイル変更のローカル ステータス
repo accept BranchName ##ブランチ
リポジトリ バージョンを削除  ## リポジトリ バージョン番号を表示
repo grep   ## プロジェクト内のコンテンツを検索
repo sync  ## デフォルトでは、すべてのウェアハウスが同期されており、プロジェクトを指定できます。
初めてリポジトリ同期を実行する場合は、サーバーのすべてのコンテンツをローカルにコピーする git clone と同等です。マニフェストの xml ファイルの git commit に従って同期します。この xml ファイルは、リポジトリの初期化時に指定されます。
リポジトリ同期を実行するのが初めてではない場合、git リモート更新と同等です。git rebase のorigin/branch は、ローカル マージを使用してサーバー上のコードを更新します。リベース プロセス中に競合が発生した場合は、競合を手動で解決してから、 git rebase -- continue を実行する必要があります。 注: リポジトリの同期では .repo/repo ウェアハウスは更新されません
マニフェスト リポジトリが更新されます。
リポジトリ同期のパラメータ:
-j: マルチスレッド同期操作を有効にします。これにより、sync コマンドの実行速度が向上します。デフォルトでは、同期には 4 つのスレッドが同時に使用されます。 
-c、--current-branch: 指定されたリモート ブランチのみを同期します。デフォルトでは、同期はすべてのリモート ブランチを同期しますが、リモート ブランチが多数ある場合、ダウンロードされるコードの量が多くなります。このパラメータを使用すると、ダウンロード時間を短縮し、ローカル ディスク領域を節約できます。 
-d、--detach: 現在のローカル ブランチから切り離し、HEAD をmanifest.xml に設定されたブランチに強制的に切り替えます。ローカルの変更は無視され、ローカルの変更は上書きされません。このパラメータは実際の運用で非常に役立ち、初めてコードを同期するときは、開発のために dev ブランチに切り替えることがよくあります。このパラメーターを指定せずに sync を使用すると、ローカルの dev ブランチがマニフェストによって設定されたリモート ブランチとマージされ、同期が失敗する可能性があります。 
--force-sync
別のオブジェクト ディレクトリを指す必要がある場合、既存の git ディレクトリを上書きします。 警告: これによりデータが失われる可能性があります。 説明によると、同期が
強制的に行われ、ローカルの変更が失われる可能性があるようです。ただし、実際のテストでは、このオプションではローカルの変更が強制的に上書きされるわけではないことがわかりました。ローカル ファイルが変更された場合、このオプション sync を追加してもエラーが報告されます。
現在、repo sync コマンドには、ローカルの変更を強制的に上書きするオプションはありません。
-f、--force-broken: git ライブラリの同期が失敗しても、同期操作全体は中断されず、他の git ライブラリは引き続き同期されます。 
–no-clone-bundle: サーバーへのリクエストを開始するとき、最速の応答速度を達成するために、コンテンツ配信ネットワーク (CDN、Content Delivery Network) が使用されます。同期操作では、CDN を介して最も近いサーバーとの接続も確立され、HTTP/HTTPS の $URL/clone.bundle を使用してローカル git ライブラリが初期化されます。clone.bundle は実際にはリモート git ライブラリのミラー イメージであり、ダウンロードされます。 HTTP 経由で直接送信するため、ネットワーク帯域幅が有効に活用され、ダウンロードが高速化されます。

repo init -u xxx/manifest.git -b xxx -m xxx --repo-url=git://codeaurora.org/tools/repo.git --repo-branch=caf-stable
リポジトリはバッチ ファイルに相当します、リポジトリ スクリプトを使用して、複数の Git リポジトリのコンテンツを一度にダウンロードし、複数の Git クローンを回避し、より適切な管理と使用を可能にします。
リポジトリを使用して取得すると、すべての .git は .repo に配置され、外部の .git は単なるリンクになります。

リポジトリ スクリプトには、次の使用可能なパラメータがあります。
--repo-url=URL
リポジトリ ツール自体の git リポジトリ アドレス。デフォルトは次のとおりです: git://android.git.kernel.org/tools/repo.git
--repo-branch=REVISION リポジトリのバージョン ライブラリ、つまりリポジトリ git ライブラリのブランチ名またはマイルストーン名を使用します。デフォルトは caf-stable
--no-repo-verify リポジトリのマイルストーン署名を厳密に検証しないように設定します。
-u(--manifest-url) マニフェスト リポジトリの Git サーバー アドレスを設定します。
-b (--manifest-branch) マニフェスト リポジトリの特定のブランチをチェックアウトします。
--mirror は、リポジトリが初めて初期化されるときにのみ使用され、ローカル ミラーを作成します。
-m (--manifest-name) は、リスト ライブラリ内のリストを有効なリスト ファイルとして指定します。デフォルトはdefault.xmlです。
--no-tags はタグを取得しません。                                      
repo コマンド パラメーターの意味は、repo help コマンド (sync) を実行することで確認できます。

コマンド rep init を実行して、次の操作を完了します:
1. リポジトリ ツールの完全なダウンロードを完了します 実行されたリポジトリ スクリプトは単なるブート ツールであり、コードをダウンロードするためのスクリプトではありません。
2. マニフェスト ライブラリ manifest.git のクローンをディレクトリ .repo/manifests/ に作成します。(アドレスは -u パラメーターから取得されます)
3. マニフェスト ファイル .repo/manifest.xml は、.repo/manifests/default.xml を指す単なるシンボリック リンクです。
4. .repo/manifests/ ディレクトリに複数の xml ファイルがある場合、repo init -m パラメータはそのうちの 1 つを任意に選択でき、デフォルトはdefault.xml です。

マニフェスト ファイルの解析:
マニフェスト ライブラリ ファイルには複数のマニフェスト ファイル (ラベル インクルード) を含めることができます。マニフェスト リビジョン、アップストリーム、dest-branch: reviation
の 3 つの属性:
これは改訂されたバージョンで、通常は特定のコミット ID を指しており、リポジトリの同期後にチェックアウトされます。ブランチ名の場合は、リポジトリの同期後に、現在のブランチの最新のコミット ID にチェックアウトされます。アップストリーム: です。ブランチ名とリビジョン。リビジョンがブランチ名の場合、アップストリームは
機能しません。リビジョンが commit-id の場合、アップストリームはコミット オブジェクトが配置されているブランチです。dest-branch: プロジェクトが属するターゲット
ブランチ、 repo アップロード ( gerrit) コマンドを使用する場合、コードはブランチにアップロードされます。gerrit を使用しない場合は、この値を指定できません。現在のマニフェスト情報を表示するには、 repo マニフェスト -r を使用します。リモート要素
:
< remote fetch="../" name="origin" review="http://IP:8080"/>属性フェッチ:
ダウンロードへの相対
パス 属性名: リモート リポジトリ名
属性レビュー: ベース
アドレス デフォルト要素: <default Remote= "origin"reviation="branchName" sync -j="4"/>
デフォルトのリポジトリとブランチを設定します。各プロジェクト (プロジェクト要素) は、独自のリモートとリビジョンを定義して、デフォルト設定をオーバーライドできます。
プロジェクト要素:
<プロジェクト名="device/mediatek/common" path="device/mediatek/common">
        <copyfile dest="mk" src="mk"/>
</project>

子要素 copyfile: クローン作成後の追加アクションを定義し、src から dest にコピーします。

次のコマンドは非常に便利です。-pパラメータはプロジェクトを出力できますが、順序に注意してください。
repo forall -p -c "git Pushorigin HEAD:refs/heads/mtk_8.1_6763 2>&1 | tee" >>push.log

repo list    ##ローカルにダウンロードされたすべてのプロジェクトのパスと名前をコロンで区切ってリストします。
オプション:
-h、--help ヘルプ情報を表示します。
-f、--fullpath プロジェクトのフル パスを表示します
。 -n、--name-only プロジェクトの名前を表示します
。 -p、--path-only プロジェクト パスを表示します。 name

repo forall [project- list] -c コマンドは、
指定されたプロジェクト リストまたはすべてのプロジェクトに対してコマンド コマンドを実行し、-p パラメーターはプロジェクトのパスを出力できます。-c パラメータは、現在のブランチを示します。
各プロジェクトで指定されたシェル コマンドを実行します。次の追加の環境変数は、repo forall を通じて使用できます。
REPO_PROJECT は、プロジェクトの一意の名前に設定されます。
REPO_PATH は、クライアントのルート ディレクトリに対する相対パスです。
REPO_REMOTE は、インベントリ内のリモート システムの名前です。
REPO_LREV は、ローカル追跡ブランチに変換されたマニフェスト内のリビジョンの名前です。ローカルで実行されている Git コマンドにマニフェスト リビジョンを渡す必要がある場合は、この変数を使用します。
REPO_RREV は、マニフェストに表示されているとおりの、マニフェスト内のリビジョンの名前です。
実際の使用: repo forall -c 'echo $REPO_PROJECT' > 102.list
repo forall -c 'echo =======$REPO_PROJECT======;git Push --no-thin ssh://xxx @xxx.com:29418/PHR/$REPO_PROJECT HEAD:refs/heads/xxx' (ブランチを別のサーバーにプッシュ)
repo forall -c 'echo =======$REPO_PROJECT======;git リモートオリジンを追加 ssh://xxx.com:29418/$REPO_PROJECT' (リモートを追加)
repo forall -c 'echo =======$REPO_PROJECT ======;ssh gerritxx gerrit create-project xxx/ $ REPO_PROJECT --parent xxx/platform/art --branch master --empty-commit' (ウェアハウスの構築)

おすすめ

転載: blog.csdn.net/qq_31939617/article/details/130886620