git-p4 - 对它如何工作的任何重要解释

时间:2012-01-07 23:22:02

标签: git perforce git-p4

如果您远程使用perforce并希望获得跟踪差异的git速度,那么这就是解决方案:http://kb.perforce.com/article/1417/git-p4

但是,我注意到以下内容:

  1. 完全按照说明进行操作
  2. 导入没有历史记录的大树可能需要一段时间
  3. 在一棵大树上,第一次提交将需要很长时间,因为此命令将同步整个树。
  4. 如果你做了一个你不想发送给perforce的提交,你必须做一个“git rebase -i”并删除有问题的提交记录。你不能做“git p4 submit”,然后“p4 revert”你不想发送的文件。
  5. 如果你把事搞砸了,事情会变得非常混乱。
  6. 这是我的问题。 git-p4如何使用远程存储库有一个很好的解释吗?热门git-p4的整体解释有效吗?

    git-p4不适合胆小的人。我知道你真的需要理解git才能很好地使用它。

5 个答案:

答案 0 :(得分:9)

git项目源代码中的Documentation/git-p4.txt中有更多信息。

git-p4维护一个refs / remotes / p4分支来镜像远程Perforce服务器。 默认情况下,git-p4 clonegit-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搁置更改,而不必提交
  • 您可以将标签从p4导入到Git中。
  • 您可以将Git中的标签导出为p4标签。

但是关于“它是如何工作的”,现在有一些助手:

  • 您有一个详细模式,它将帮助您了解发生了什么情况
  • 您有一个空运行模式,该模式仅显示将什么提交提交给p4;请勿更改Git或p4中的状态。

使用Git 2.25(2020年第一季度)时,会显示使用情况。

请参见commit 608e380commit e2aed5fBen 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流,但此时只有单向同步。