tl;博士; 我希望保留迁移到 git 的文件的历史记录,包括早期集成的历史记录。即git p4 clone
这样git log --all --follow <file>
==p4 filelog -li <file>
更长的版本:
我有一个项目,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/...@all .
我获得了该文件的完整历史记录,就像获得当前目录位置在perforce
.
(您现在在 is 处获得文件的单个提交,而没有@all
看到使用 git-p4 获取整个文件历史记录)
我怎样才能git log --follow <file2>
给我我会看到的完整历史p4 filelog -li
?
您可能会注意到文件历史记录本身不如存储库历史记录有用。例如,如果没有其他文件在正确的相对位置的正确版本,一个单独的文件甚至可能无法编译。但是,完整的perforce
存储库包含许多其他不相关项目的历史记录,这些项目不得包含在 git 存储库中。我不希望修剪存储库或嫁接历史是一个漫长而痛苦的过程(对于现在来说相对较新git
并且希望避免较暗的角落)。
添加一个选项以git p4 clone
跨集成复制文件历史记录以便--follow工作需要什么?
这与git p4: migrate full history - 包括集成历史非常相似
与那个问题不同,我总是使用 p4 集成在存储库中移动文件,因此 perforce 记录的文件历史记录是完整的。那应该使我的任务更容易。虽然我不确定它是否在实践中。