如果您远程使用perforce并希望获得跟踪差异的git速度,那么这就是解决方案:http://kb.perforce.com/article/1417/git-p4
但是,我注意到以下内容:
这是我的问题。 git-p4如何使用远程存储库有一个很好的解释吗?热门git-p4的整体解释有效吗?
git-p4不适合胆小的人。我知道你真的需要理解git才能很好地使用它。
答案 0 :(得分:9)
git项目源代码中的Documentation/git-p4.txt
中有更多信息。
git-p4维护一个refs / remotes / p4分支来镜像远程Perforce服务器。
默认情况下,git-p4 clone
和git-p4 sync
更新此遥控器,然后根据它重新设置主人。
git-p4 submit
需要将其他本地目录配置为Perforce客户端根目录,以供p4 submit
使用。
git-p4 sync/clone
将在相应的git commit消息中记录每个Perforce变更列表编号。例如:
[git-p4: depot-paths = "//depot/test/": change = 51]
使用这些更改列表表示法,git-p4 sync
获取尚未提交给git的Perforce服务器上的更改列表,并为每个新的git提交消息添加更改列表表示法。
git-p4 submit
首先确定新的本地git提交 - 那些没有[git-p4: ...]
的提交。
使用Perforce客户端本地工作区,它会同步Perforce文件,并且git apply
会在调用git format-patch
之前在未提交的git提交中应用从p4 submit
获取的修补程序。
然后git-p4 submit
调用git-p4 sync
来更新针对刚刚更新的Perforce远程的ref / remotes / p4分支。
最后git-p4 submit
将在主分支上针对更新的远程调用git rebase
。这会导致提交相同的git树,但编辑的提交消息包含[git-p4...]
更改列表符号。
如何在git中修改一些文件而不将它们发送到p4?
git-p4 submit
将提交所有分支提交。使用常用的git工具来组织进出您选择提交给Perforce的分支的更改。
答案 1 :(得分:2)
关于“承诺强制执行哪些提交?”
任何可以接受修订范围的命令(参见gitrevisions(7))都应该有效,你只需要将p4遥控器作为范围的端点。例如:
git log remotes/p4/master..master
git diff remotes/p4/master..master
我倾向于使用show-branch
来快速了解我的分支状态,在这种情况下git show-branch --all
也可以。{/ p>
答案 2 :(得分:1)
我经常使用git-p4,因为我经常旅行,并不总是与办公室有良好的联系。我的理解是,虽然我没有深入研究,但git-p4为您维护了Perforce工作区。每当你执行 git p4 rebase 时,你基本上都会将代码同步到你的工作区,然后git-p4作为新的提交重放到你的git存储库中。每当您执行 git p4 submit 时,它会将一系列补丁重放到Perforce工作区中,并使用Perforce更改列表提交它们。
我猜你可以把它想象为使用Perforce服务器作为远程分支,但实际上它是一个非常有限的实现。
如果您有更详细的问题,我会尝试在Perforce论坛上发帖。办公室里有几个人详细研究了git-p4,可能会有所帮助。
答案 3 :(得分:0)
第一个Documentation/git-p4.txt
在8年中发生了很大变化:请参见diff between 2012 and Q1 2020。
git p4 submit
上指定一个提交或一系列提交--shelve
和--update-shelve
搁置更改,而不必提交但是关于“它是如何工作的”,现在有一些助手:
使用Git 2.25(2020年第一季度)时,会显示使用情况。
请参见commit 608e380的commit e2aed5f,Ben Keene (seraphire
)(2019年12月16日)。
(由Junio C Hamano -- gitster
--在commit bc85523中合并,2020年1月2日)
git-p4
:在解析选项失败时显示详细的帮助签名人:Ben Keene
当用户向
git-p4
提供无效参数时,程序将报告失败,但不会提供正确的命令语法。将异常处理程序添加到命令行参数解析器,以在引发异常时显示命令的特定命令行参数语法。
重新抛出异常,以便保留当前行为。
答案 4 :(得分:-1)
也许你会发现这个替代工具很有趣: http://lm1.github.io/git-p4s
这是原始git-p4实用程序的一个分支,支持Perforce流,但此时只有单向同步。