質問

職場では、開発はパフォーマンスを使用してコード共有を処理します。 「改訂制御」とは言いません。なぜなら、回帰テストの準備が整うまで変更をチェックすることは許可されていないからです。個人的な変更セットを修正制御下に置くために、独自のGitを構築し、Perforce DepotのクライアントビューをGit Repoとして初期化するための承認を与えられました。

ただし、これを行うことにはいくつかの困難があります。

  1. クライアントビューは、サブフォルダーに住んでいます ~, (~/p4)、そして私は置きたいです ~ 独自の歴史を持つ改訂制御も同様です。私は歴史を維持する方法を理解できません ~ とは別に ~/p4 サブモジュールを使用せずに。サブモジュールの問題は、サブモジュールになるリポジトリを作成しなければならないように見えることです。 git submodule add <repo> <path>. 。しかし、以外にサブモジュールのリポジトリを作成する場所はありません ~. 。 Git P4クローンを使用して、デポの最初のクライアントビューを作成する安全な場所はないようです。

    (私は、gitリポジトリのサブディレクトリにリポジトリをinitingまたはクローン化するという仮定に取り組んでいます。少なくとも、ネストされたgitリポジトリで権威あるものは何も見つかりません。)

    編集: 単に無視しています ~/p4 にルート化されたレポで ~ ネストされたレポを開始できるのに十分 ~/p4?私の__GIT_PS1関数は、GITリポジトリの無視されたサブディレクトリにアクセスしたとき、私はまだGITリポジトリにいると考えているので、私は考えない傾向があります。

  2. git P4 Syncによって作成された「リモート」リポジトリが〜/p4の分岐になる必要があります。バックアップされないように、すべてのコードを〜/p4に保持する必要があります。実際にローカルブランチである「リモート」ブランチから引っ張ることはできますか?

  3. これは便利なためですが、私はそれを尋ねることで何かを学ぶことができると思いました。プロジェクトの99%については、P4ヘッドリビジョンからINITAL Commitオブジェクトとして開始したいだけです。他の1%については、P4履歴全体を吸い込んで、Gitで閲覧できるようにしたいと思います。 IOW、私がそれを無効化した後、リモート/P4/マスターブランチの最初のコミットには以下が含まれます。

    revision 1 of //depot/prod/Foo/Bar/*
    revision X of other files in //depot/prod/*, where X is the head revision
    

    そしてその remotes/p4/master ブランチにはyが含まれています。ここで、yはファイルを持っていたチェンジリストの数です //depot/prod/Foo/Bar/*, 、歴史のそれぞれのコミットは、これらのP4チェンジリストの1つに対応し、P4の頭のように見えます。

編集:Meagarの答えは私にとってはうまくいきませんでした。

私はイタリタライズ〜を持ち、それにいくつかのコミットをチェックしました。私は〜/p4と〜/p4がコミットオブジェクトに含まれていないことを無視しました。=:

[~@ernie02] (master) $ git show HEAD:p4
fatal: Path 'p4' exists on disk, but not in 'HEAD'.

それから私は〜/p4/prodに行きました、私はチェックアウトしたいブランチです。しかし、このレポは壊れています:

[~/p4/prod@ernie02] (master) $ git log
(shows the log for the repo rooted at ~)
[~/p4/prod@ernie02] (master) $ git init
Initialized empty Git repository in ~/p4/prod/.git/
[~/p4/prod@ernie02] (master) $ git log
fatal: bad default revision 'HEAD'

編集編集:おっと、私は何かをコミットするのを忘れていました ~/p4/prod. 。私はgitp4 sync // depot/prodを今それに試しています...

役に立ちましたか?

解決

#1への回答として、あなたが本当にあなたのホームディレクトリ全体をGitリポジトリに入れたいが、別のリポジトリに〜/P4を持っている場合は、「P4」を追加するだけです .git_ignore 自宅のディレクトリで、P4で別のレポを作成します。

$ cd ~
$ git init
$ echo "p4" > .git_ignore
$ git add .git_ignore
# add all files/directories except p4
$ git commit
$ cd p4
$ git init
$ git add .
$ git commit

私は#2には従いませんが、はい、ファイルシステムにローカルの「リモート」リポジトリから引っ張ることができます。地元の枝から「引っ張る」限り、それは引っ張られていません。引っ張るには、フェッチとマージが含まれます。フェッチを省略した場合、それは単なるマージなので、地元の支店からの融合について本当に話しています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top