2

我已经研究了使用 diff 执行此操作的不同方法。我尝试的第一个选项是:

p4 diff -sa

打开的文件与软件仓库中的修订不同或丢失。

最初我认为这是一个设置了写权限位的文件,但在仓库中不存在。但是,我后来了解到 p4 并不像我最初想到的那样使用模式位来跟踪打开/未打开状态。

接下来我认为这个选项会起作用:

p4 diff -sl

每个未打开的文件,以及“相同”、“差异”或“错过”的状态,与其在软件仓库中的修订版本相比。

这没关系,除了“未打开”不包括“未跟踪”文件。虽然,当我运行它时,它产生了与文档相矛盾的完全不同的东西;它输出几乎所有被跟踪的内容,但也输出所有未被跟踪的内容,但将它们标记为“相同”。也许这意味着它没有被添加并且在depot中不存在,所以客户端与depot相同......?在我的 SVN 偏见看来,这是一个毫无意义的选择。

然后是“打开”选项。但这正是这样做的。它列出了已在客户端打开的 depot 中的所有文件;所以不是尚未添加客户端上修改的文件。

那么是否有一个我在某处遗漏的选项,它将提供一些有价值的答案,比如 SVN 和 CVS 能够用一个简单的命令来完成?

$ svn status
A added
M modified
R deleted
? untracked
L locked
C conflict

或者:

$ cvs -q up -Pd
4

2 回答 2

3

好的,环顾四周并使用'add'命令,如果文件当前不受控制,似乎只读添加将输出成功消息:

$ p4 add -n -f somefile
//source/somefile#1 - opened for add

我将它应用于以下命令,几乎得到了我需要的东西:

$ find . -type f | while read f ; do p4 add -f -n "$f" | grep -e '- opened for add' >/dev/null && echo "A $f"; done
A ./somefile

或者,如果您不关心本地路径:

$ find . -type f | xargs -l1 p4 add -f -n | grep -e '- opened for add'
//source/somefile#1 - opened for add
于 2013-08-28T16:12:35.747 回答
1

嗯,存在“p4 status”,它在目的和行为上都与“svn status”非常相似。

有关更多想法,请参阅:http ://answers.perforce.com/articles/KB_Article/Working-Disconnected-From-The-Perforce-Server

于 2013-08-28T14:03:32.390 回答