4

状況

1 つの「メイン」ブランチと 2 つのブランチを perforce から git に移行しようとしています。perforce でブランチを仕様にマッピングした後、典型的な移行を試みましたが、コード ディレクトリの重複の問題が発生しました。

問題

"git p4" (クローンまたは同期) を実行すると、マスター ブランチ コードの複製がブランチに含まれ、ブランチ コードはマスターの次のディレクトリに配置されます。git ステージング領域にはブランチ コードのみが表示されると思います。

設定

#Perforce Repo Structure
//depot/main/branches/MAINT_01
//depot/main/branches/MAINT_02
//depot/main/branches/mobile

# perforce branch maps
# note: mobile and MAINT_02 are branched (in perforce) from MAINT_01
MAINT_02 -> //depot/main/branches/MAINT_01/... //depot/main/branches/MAINT_02/...
mobile  -> //depot/main/branches/MAINT_01/... //depot/main/branches/mobile/...

# Perforce info
Server version: P4D/LINUX26X86_64/2009.2/241896 (2010/04/10)
Client Spec: (need to exclude many branches here)
//depot/main/branches/... //buildmaster-scm01/...
-//depot/main/branches/BranchA/... //buildmaster-scm01/BranchA/...
-//depot/main/branches/BranchB/... //buildmaster-scm01/BranchB/...
-//depot/main/branches/tempBranch/... //buildmaster-scm01/tempBranch/...
-//depot/main/branches/Bar/... //buildmaster-scm01/Bar/...
-//depot/main/branches/Foo/... //buildmaster-scm01/Foo/...
-//depot/main/branches/Cheese/... //buildmaster-scm01/Cheese/...

# Git Info (Linux Box)
 /git/buildmaster/git2 302  % git --version
 git version 1.7.12.rc2

移行の試み

これがどのように進んだかです...

agvscm01.inq.com /git/buildmaster/git 225  % git init
Initialized empty Git repository in /git/buildmaster/git/.git/
agvscm01.inq.com /git/buildmaster/git 226  % git p4 sync --detect-branches --use-client-spec //depot/main/branches@all
Importing revision 20482 (88%)
    Importing new branch branches/MAINT_01

    Resuming with change 20482
Importing revision 21137 (96%)
    Importing new branch branches/mobile

    Resuming with change 21137
Importing revision 21396 (100%)
Updated branches: MAINT_01 MAINT_02 mobile
agvscm01.inq.com /git/buildmaster/git 227  % git checkout -b master p4/branches/MAINT_01
Checking out files: 100% (14923/14923), done.
Already on 'master'
agvscm01.inq.com /git/buildmaster/git 228  % git checkout -b rel_2 p4/branches/MAINT_02
Checking out files: 100% (15142/15142), done.
Switched to a new branch 'rel_2'
agvscm01.inq.com /git/buildmaster/git 229  % git checkout -b mobile p4/branches/mobile
Checking out files: 100% (29960/29960), done.
Switched to a new branch 'mobile'
agvscm01.inq.com /git/buildmaster/git 233  % git checkout master
Switched to branch 'master'
  agvscm01.inq.com /git/buildmaster/git2 303  % git branch -a
* master
  mobile
  rel_2
  remotes/p4/branches/MAINT_01
  remotes/p4/branches/MAINT_02
  remotes/p4/branches/mobile

結果

agvscm01.inq.com /git/buildmaster/git2 304  % git checkout mobile
Checking out files: 100% (15073/15073), done.
Switched to branch 'mobile'
agvscm01.inq.com /git/buildmaster/git2 305  % ls
MAINT_01  mobile
agvscm01.inq.com /git/buildmaster/git2 306  %

MAINT_01 とモバイル ディレクトリにはすべて正しい履歴がありますが、このレベルではモバイルのコンテンツのみが表示されることに注意してください。

期待

モバイル ブランチ ブランチには、MAINT_01 ディレクトリを含めないでください。モバイルは MAINT_01 のブランチです。これはおそらく本当に単純なものですが、私はそれを見ていません。さらに、マスターをチェックアウトすると、ルートとして MAINT_01 だけが含まれます。MAINT_01 の内容は、ブランチのルートである必要があります。

agvscm01.inq.com /git/buildmaster/git2_bak 307  % git checkout master
Switched to branch 'master'
agvscm01.inq.com /git/buildmaster/git2_bak 308  % ls
MAINT_01
agvscm01.inq.com /git/buildmaster/git2_bak 309  %

ここで助けていただければ幸いです。


4

1 に答える 1

2

--use-client-spec--detect-branchesオプションを一緒に使用すると、perforce コードを git リポジトリに誤ってマッピングする git-p4 モジュールの 1.7.11 の時点で、git に確認済みのバグがあります。この問題を git dev team に報告したときの電子メール応答のスニペット...

詳細なレポートありがとうございます。これは 1.7.12-rc2 のバグです。このシリーズは、origin/master の上でそれを修正します。

問題の核心は、 --use-client-spec と --branch-detection の両方が有効になっている場合、ファイルが git の間違った場所にマップされることです。

ピート・ワイコフ (5):

  • git p4 test: client_view() 関数をライブラリに移動
  • git p4 test: 壊れた --use-client-spec --detect-branches テストを追加
  • git p4: 初期化で self.branchPrefixes を設定する
  • git p4: stripRepoPath でワイルドカードのデコードを行う
  • git p4: --use-client-spec でブランチ検出を機能させる
 git-p4.py                     | 75 +++++++++++++++++++++++++++--------------

 t/lib-git-p4.sh               | 18 ++++++++++

 t/t9801-git-p4-branch.sh      | 77 +++++++++++++++++++++++++++++++++++++++++++

 t/t9809-git-p4-client-view.sh | 17 ----------

 4 files changed, 146 insertions(+), 41 deletions(-)

現在、彼らは 1.7.12rc2 を公開しています。修正版待ち

于 2012-08-13T17:03:01.447 に答える