7

如果您远程使用 perforce 并希望拥有 git 的惊人速度来跟踪差异,这里是解决方案:http: //kb.perforce.com/article/1417/git-p4

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

  1. 完全按照说明进行
  2. 在不获取历史记录的情况下导入大树可能需要一段时间
  3. 在大树上,第一次提交将花费很长时间,因为此命令将同步整个树。
  4. 如果你做了一个你不想发送到 perforce 的提交,你必须做一个“git rebase -i”并删除有问题的提交记录。您不能执行“git p4 submit”然后“p4 revert”您不想发送的文件。
  5. 如果你把事情搞砸了,事情会变得非常混乱。

这就是我的问题。关于 git-p4 如何使用远程存储库有很好的解释吗?以及热 git-p4 作品的整体解释?

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

4

5 回答 5

10

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

git-p4 维护一个 refs/remotes/p4 分支来镜像远程 Perforce 服务器。默认情况下git-p4 clonegit-p4 sync更新此遥控器,然后根据它重新设置您的主服务器。

git-p4 submit需要将额外的本地目录配置为 Perforce 客户端根目录以供p4 submit.

git-p4 sync/clone 将在相应的 git 提交消息中记录每个 Perforce 更改列表编号。例如:

[git-p4: depot-paths = "//depot/test/": change = 51]

使用这些更改列表符号,git-p4 sync获取尚未提交到 git 的 Perforce 服务器上的更改列表,将更改列表符号添加到每个新的 git 提交消息。

git-p4 submit首先确定新的本地 git 提交——那些没有[git-p4: ...]. 使用 Perforce 客户端本地工作区,它同步 Perforce 文件,并git applygit format-patch调用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 的分支中和分支之外。

于 2012-01-10T20:49:50.240 回答
2

关于“哪些提交有待提交以强制执行?”

任何可以接受修订范围的命令(请参阅gitrevisions(7))都应该可以工作,您只需将 p4 远程作为该范围的端点。例如:

  • git log remotes/p4/master..master
  • git diff remotes/p4/master..master

我倾向于使用show-branch快速概览我的分支的状态,在这种情况下git show-branch --all也可以。

于 2013-09-18T18:44:59.190 回答
1

我偶尔会使用 git-p4,因为我经常出差,而且与办公室的联系并不总是很好。我的理解是,虽然我没有深入研究,但 git-p4 为您维护了一个 Perforce 工作区。每当您执行git p4 rebase时,您基本上是在将代码同步到您的工作区中,然后 git-p4 将作为新提交重播到您的 git 存储库中。每当您执行git p4 submit时,它会将一系列补丁重播到您的 Perforce 工作区并使用 Perforce 更改列表提交它们。

我想您可以将其视为使用 Perforce 服务器作为远程分支,但实际上这是一个非常有限的实现。

如果您有更详细的问题,我会尝试在 Perforce 论坛上发帖。办公室里有几个人详细研究了 git-p4,也许能提供帮助。

于 2012-01-08T22:02:06.500 回答
1

FirstDocumentation/git-p4.txt在 8 年内发生了很大变化:查看2012 年和 2020 年第一季度之间的差异

  • 您可以指定单个提交或一系列提交git p4 submit
  • 您可以使用--shelveand--update-shelve搁置更改而不是提交
  • 您可以将标签从 p4 导入 Git。
  • 您可以从 Git 中将标签导出为 p4 标签。

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

  • 您有一个详细模式,可以帮助您了解正在发生的事情
  • 你有一个试运行模式,它显示了哪些提交将提交给 p4;不要在 Git 或 p4 中更改状态。

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

请参阅Ben Keene ( ) 的提交 608e380提交 e2aed5f(2019 年 12 月 16 日(由Junio C Hamano 合并 -- --提交 bc85523中,2020 年 1 月 2 日)seraphire
gitster

git-p4: 解析选项失败时显示详细帮助

签字人:本·基恩

当用户向 提供无效参数时git-p4,程序会报告失败但不提供正确的命令语法。

向命令行参数解析器添加异常处理程序,以在引发异常时显示命令的特定命令行参数语法。
重新抛出异常,以便保留当前行为。

于 2020-01-03T20:22:02.507 回答
-1

也许你会发现这个替代工具很有趣: http: //lm1.github.io/git-p4s

这是原始 git-p4 实用程序的一个分支,支持 Perforce 流,但此时只有单向同步有效。

于 2013-11-10T16:04:54.703 回答