如何获取本地变更列表并将其发送给Perforce中的其他人?

如何获取本地变更列表并将其发送给Perforce中的其他人?,perforce,Perforce,如何获取本地变更列表并将其发送给Perforce中的其他人?更具体地说,我想将未提交的更改从本地挂起更改列表发送到另一个用户的挂起更改列表。set P4DIFF=C:\cygwin\bin\diff.exe set P4DIFF=C:\cygwin\bin\diff.exe p4 diff -du -c 12345 > patch-to-head.diff # On Other machine patch -p1 < patch-to-head.diff p4 diff-du-c

如何获取本地变更列表并将其发送给Perforce中的其他人?更具体地说,我想将未提交的更改从本地挂起更改列表发送到另一个用户的挂起更改列表。

set P4DIFF=C:\cygwin\bin\diff.exe
set P4DIFF=C:\cygwin\bin\diff.exe
p4 diff -du -c 12345 > patch-to-head.diff

# On Other machine
patch -p1 < patch-to-head.diff
p4 diff-du-c 12345>贴片到头部.diff #在其他机器上 贴片-p1<贴片到头部的差异

我可能在Envvar上出错,你可能需要在DIFF文件上做一些修改,但是一般的想法是你生成一个GNU统一的DIFF,你可以发送给可以使用GNU补丁的人来使用它。

不确定你到底想做什么,但是你也可以考虑。它允许您将大量挂起的更改放在虚拟工具架上,然后稍后再重新获取它们。根据您希望通过向其他人发送变更列表来实现的具体目标,这可以提供部分答案


从P4Shelve站点链接的是,这可能也很有用-这会在客户端完成所有打包,因此您只需留下一个文件就可以发送给其他人。

P4现在对2009.2中的搁置操作具有本机支持。客户机和服务器都需要至少为2009.2才能使用此版本


2016年性能,osx。挂起变更列表的差异:

mac:src user$ cl=123456 && p4 diff -du $( p4 files @=$cl | sed s/#.*// ) > $cl.diff
输出:123456.diff

应用修补程序:

mac:src user$ patch -p0 < 123456.diff
mac:src用户$patch-p0<123456.diff

要搁置挂起的更改列表您的更改:

p4 shelve [-c YOURCHANGE]
然后,另一个用户执行以下操作:

p4 unshelve -s YOURCHANGE [-c THEIRCHANGE]

在任何一种情况下,都可以省略“-c”参数以使用默认变更列表。在
p4 shelve
案例中,这意味着将创建一个新的变更列表,并且默认变更列表中的文件将被搁置在其中;在
p4 unshelve
案例中,这意味着您的变更列表中的搁置文件将被取消搁置到其他用户的默认变更列表中。

您必须更加具体。听起来好像您想将未提交的更改从本地挂起更改列表发送到另一个用户的挂起更改列表?是的,@ninesided至少在服务器2008.2和2010.1中,“p4 diff”没有-c标志。我仍然没有找到在特定挂起的变更列表中的文件上运行“p4 diff”的方法。是的,我们使用的p4版本已被黑客攻击,这就是为什么我对语法如此不确定的原因-抱歉:(您可能希望两个用户都同步到同一个变更列表,但由于它只应用您的更改,因此可能仍然有效。这一行中的命令不起作用,因为它可能已经说过了。Perforce没有问题中要求的功能,但有些功能“足够接近”可通过
p4 diff//path/to/root/…
检索,不幸的是,从特定变更列表获取修补程序(无搁置)如果不将关联变更列表中的每个文件指定给p4 diff命令,则无法执行此操作。我的答案被Tim Danner的答案所取代,因为Performce现在直接支持搁置功能。请注意,
shelve
命令将
YOURCHANGE
转换为搁置的变更列表。当其他用户取消搁置时,
-s
标志指定搁置的更改,可选的
-c
标志指定搁置文件将复制到的本地挂起更改列表(即其他用户拥有的更改,因此
其更改
)。
set P4DIFF=C:\cygwin\bin\diff.exe
p4 diff -du -c 12345 > patch-to-head.diff

# On Other machine
patch -p1 < patch-to-head.diff