tl; dr;以前の統合の履歴を含め、gitに移行されたファイルの履歴を保持したい。 すなわちgit p4 clone
なgit log --all --follow <file>
== p4 filelog -li <file>
git p4クローンファイルの履歴(統合履歴を含む)
長いバージョンその:
私は過去にreposotoryに他のプロジェクトの周りに移動し、コピーされたファイルが含まれperforce
でプロジェクトを持っています。
p4 filelog -l <file2>
は、その現在の位置でファイル(ロングフォームの-l)の履歴を示しています。 ファイルはp4 integrate
で移動(コピー)されます。
p4 integrate <file1> file2>
使用移動前履歴を確認するには、次の
p4 filelog -li <file2>
同等git
コマンドは次のとおりです。
git log --follow <file2>
今、私が使用してperforce
プロジェクトの一部を複製する場合:
git p4 clone //depot/some/path/[email protected] .
ファイルの完全な履歴は、同じファイルの現在のディレクトリの場所と同じようにperforce
になります。
(あなたが@all
がGetting the whole files history with git-p4を参照することなく、今では、単一のファイルのコミットを取得)
どのように私はgit log --follow <file2>
は私がp4 filelog -li
で見ていた完全な履歴を与えることを得るのですか?
ファイルの履歴は、リポジトリの履歴よりもそれほど有用ではないことに注意してください。たとえば、孤独なファイルは、正しいバージョンの適切な相対位置に他のファイルがなければコンパイルされません。しかし、完全なperforce
リポジトリには、gitリポジトリに含まれてはならない他の無関係なプロジェクトの履歴が含まれています。 私は、リポジトリや移植履歴を長い間痛みを伴うプロセスにすることは望ましくありません(比較的新しいgit
で、今はもっと暗いコーナーを避けたい)。
git p4 clone
にオプションを追加すると、--followのようにファイルの履歴が統合されます。
これは私が常にP4を使用してリポジトリ内のファイルを移動したその質問とは異なりgit p4: migrate full history - including integration history
に非常に似ているのでPERFORCEので記録されたファイル履歴が途切れないで統合します。それは私の仕事を楽にするはずです。実際にそうするかどうかはわかりませんが。
基本的に、Perforceは、gitの作業の詳細を記録します。 gitには表現する方法がないという行動があります。 Perforceサーバをオンラインにしておくだけで、新しい仕事がgitでコミットされた後でも、将来の履歴分析のために相談できるのはなぜですか? –
gitはファイルへのデルタを表すことができ、ファイルの場所だけが必要です。場所がgitリポジトリに存在しないツリー内にある場合は正しいとは限りませんが、おそらくファイルが(たとえばブランチ内の)場所にあると見せかけることができます。 –
いくつかのコードをgitに移動する目的は、ソースをオープンしてPERFORCEレポを閉じたソースを残すことです。したがって、外部のgitユーザーはアクセスできません。 –