p4 sync -p 在 Perforce 中的某些条件下不起作用
p4 sync -p does not work under certain conditions in Perforce
我有一个 Perforce 软件仓库并连接到一个副本服务器。因此,我将 p4 sync
与 -p
标志一起使用,因为副本没有 "have-list" 客户端工作区。示例:
$ p4 sync -p //depot/path/to/branch/...@12345,12345
因为我想将该更改列表中的所有更改应用到我当前的工作区,所以我将 ...@CHANGELISTID,CHANGELISTID
表达式添加到末尾。
这适用于所有同步操作和所有分支,但如果更改列表有一个文件被删除,我会收到此错误:
//depot/path/to/branch/foo - can't sync -p a file that's synced
但是我想删除它。为什么那不起作用?
来自documentation 关于p4 sync
:
-p
Populate a client workspace, but do not update the have list. Any file
that is already synced or opened is bypassed with a warning message.
This option is typically used for workspaces used in processes (such
as certain build or publication environments) where there is no need
to track the state of the workspace after it has first been synced.
我知道文件已经同步,但在给定的更改列表中它的状态实际上切换到 "deleted"。作为参考,这里是 p4 describe
:
的输出
$ p4 describe -s 12345
Change 12345 by daniel@my_workspace on 2020/02/15 23:09:38
delete test
Affected files ...
... //depot/path/to/branch/foo#2 delete
如果您使用 p4 sync -p
,则需要始终如一地使用它 -- sync -p
不会跟踪状态,因此如果您尝试 sync -p
具有现有同步的工作区状态,这可能意味着你处在一个糟糕的地方,sync -p
将拒绝做任何事情(发出你看到的错误消息)。
如果错误消息准确无误,则表明您没有始终如一地使用 p4 sync -p
(也许您将此工作区与主服务器一起使用?)。辨别方法如下:
p4 have
如果您只使用过 p4 sync -p
,这将 return 什么都没有。如果它 return 是一个同步文件列表,这意味着至少您的工作区状态的某些部分正在被跟踪,并且当 sync -p
看到它时,它会担心它会使您的本地文件与其不一致状态。
要丢弃所有工作区状态,您可以执行以下操作:
p4 revert -k //...
p4 flush #none
如果 p4 have
说您没有同步文件,但 p4 sync -p
说您有,您可能遇到了某种错误,应该联系支持@perforce.com。
我有一个 Perforce 软件仓库并连接到一个副本服务器。因此,我将 p4 sync
与 -p
标志一起使用,因为副本没有 "have-list" 客户端工作区。示例:
$ p4 sync -p //depot/path/to/branch/...@12345,12345
因为我想将该更改列表中的所有更改应用到我当前的工作区,所以我将 ...@CHANGELISTID,CHANGELISTID
表达式添加到末尾。
这适用于所有同步操作和所有分支,但如果更改列表有一个文件被删除,我会收到此错误:
//depot/path/to/branch/foo - can't sync -p a file that's synced
但是我想删除它。为什么那不起作用?
来自documentation 关于p4 sync
:
-p
Populate a client workspace, but do not update the have list. Any file that is already synced or opened is bypassed with a warning message.
This option is typically used for workspaces used in processes (such as certain build or publication environments) where there is no need to track the state of the workspace after it has first been synced.
我知道文件已经同步,但在给定的更改列表中它的状态实际上切换到 "deleted"。作为参考,这里是 p4 describe
:
$ p4 describe -s 12345
Change 12345 by daniel@my_workspace on 2020/02/15 23:09:38
delete test
Affected files ...
... //depot/path/to/branch/foo#2 delete
如果您使用 p4 sync -p
,则需要始终如一地使用它 -- sync -p
不会跟踪状态,因此如果您尝试 sync -p
具有现有同步的工作区状态,这可能意味着你处在一个糟糕的地方,sync -p
将拒绝做任何事情(发出你看到的错误消息)。
如果错误消息准确无误,则表明您没有始终如一地使用 p4 sync -p
(也许您将此工作区与主服务器一起使用?)。辨别方法如下:
p4 have
如果您只使用过 p4 sync -p
,这将 return 什么都没有。如果它 return 是一个同步文件列表,这意味着至少您的工作区状态的某些部分正在被跟踪,并且当 sync -p
看到它时,它会担心它会使您的本地文件与其不一致状态。
要丢弃所有工作区状态,您可以执行以下操作:
p4 revert -k //...
p4 flush #none
如果 p4 have
说您没有同步文件,但 p4 sync -p
说您有,您可能遇到了某种错误,应该联系支持@perforce.com。