tl; dr;我希望保留遷移到git的文件的歷史記錄,包括早期集成的歷史記錄。 即git p4 clone
這樣git log --all --follow <file>
== p4 filelog -li <file>
git p4克隆文件歷史包括積分歷史
加長版:
我在perforce
一個項目,包括已經被移動,在過去的reposotory各地的其他項目複製的文件。
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作品?
這是非常相似的git p4: migrate full history - including integration history
不像這個問題,我一直使用移動P4庫中的文件集成,因此由Perforce的記錄文件歷史記錄是完整的。這應該使我的工作更輕鬆。雖然我不確定它是否在實踐中。
從根本上說,Perforce會記錄關於您所做的工作的更多信息,而不是git所做的。你可能採取了一些行動,git根本無法代表。你爲什麼不簡單地把你的Perforce服務器放在線上,以便將來你可以參考它進行歷史分析,即使你的新工作在git中提交後也是如此? –
git可以代表文件的增量,它只需要文件的位置。如果該位置位於git repo中不存在的樹中,但我們可以將該文件僞造爲位於(例如,在分支中)的位置,我將允許該位置不正確。 –
將一些代碼移動到git的目標是打開源代碼,讓perforce repo關閉源代碼。所以外部的git用戶將無法訪問它。 –