4

git p4 submit --shelve在本地 git repo 中获取您提交的更改并将它们放入更改列表 X 并将它们搁置。

假设我对搁置的更改进行了一些代码审查,因此我的本地 git 存储库中的文件与更改列表 X 中的文件不同。如何将更改列表 X 中的更新获取到我的本地 git 存储库中?

4

2 回答 2

1

我制作了git-p4.py 的修改版本来支持这一点。您创建一个文件,其中包含每个搁置的更改列表的更改编号。然后你就跑git p4 sync --changesfile <filename>

唯一的问题是这会将更改导入您的p4/master分支,因此git-p4会认为这些更改已经提交。如果你使用它,你必须对新导入的提交进行一些本地 git 分支的硬重置,然后将p4/masterref 硬重置为导入之前的状态。它还将[git-p4: depot-paths = ...]信息添加到提交消息的底部,因此不适合git p4 submit直接运行。您可能可以编写某种 git commit 过滤器来批量删除它们。

尽管如此,我认为这比手动处理p4 unshelve,p4 diff -dau > foo.patchpatch -Npx -i手动处理要好得多。

于 2017-07-12T18:59:21.047 回答
0

您可以生成一个差异,然后将其应用到您的 git 树。(生成差异的最简单和最可靠的方法可能是将变更集取消搁置到干净的 Perforce 客户端中,然后执行p4 diff -du .... 请注意,这不适用于添加或删除的文件。)

将来,您应该避免需要这样做。首先使用git-p4的目的是主要使用 git,但要与 Perforce 同步更改。因此,您的 git 环境应该是您的“主”环境,并且您的 Perforce 客户端应该仅用作 Perforce 服务器的暂存区。

于 2017-02-06T20:09:42.600 回答