我们使用Visual Studio,它生成许多bin和obj目录.当我使用P4V的"协调脱机工作"功能时,这些功能会出现在"不在软件仓库中的本地文件"列表中.
我想排除它们.我发现了这个问题,但是这涉及到文件,当我尝试它的建议时(将以下内容添加到我的工作区视图中),它不起作用:
//depot/Foo/... //Client/Foo/...
-//depot/Foo/.../*.user //Client/Foo/.../*.user
-//depot/Foo/.../bin/... //Client/Foo/.../bin/...
-//depot/Foo/.../obj/... //Client/Foo/.../obj/...
Run Code Online (Sandbox Code Playgroud)
它实际上似乎不适用于文件:foo.csproj.user文件仍然显示在列表中.
我可以从P4V中排除目录吗?如果是这样,怎么样?我究竟做错了什么?
rav*_*ven 73
从2012.1版开始,Perforce支持P4IGNORE环境变量.这允许您指定的文件和目录使用搜索命令时忽略或添加新的文件(p4 add,p4 status,和p4 reconcile).
要使用忽略文件,请在工作区的根目录中创建一个文件,并为其指定一些有意义的名称.该约定似乎类似于.ignore或.p4ignore,但任何事情都可以(我使用p4ignore.txt以便我可以通过简单的双击来编辑它).然后用你的忽略规则填充它.以下将忽略Visual Studio生成的不需要的碎片:
# directories bin obj # files *.suo *.user
创建此文件后,将P4IGNORE环境变量设置为指向它.在命令行中,键入以下内容:
p4 set P4IGNORE=C:\somepath\p4ignore.txt
Run Code Online (Sandbox Code Playgroud)
一定要使用绝对路径! 该Perforce的文件没有规定这一点,我第一次尝试没有工作(在Windows反正),因为我没有指定一个绝对路径.
执行此操作后,任何添加忽略列表中的文件或目录的尝试都将被拒绝,您将看到此类警告(它们确实为您提供了禁止选项):

如果您使用的是2012.1之前的Perforce服务器版本,则仍可以在客户端规范中执行此操作.您的排除规则的语法只是一点点.你想要的是这个:
-//depot/Foo.../*.user //Client/Foo.../*.user -//depot/Foo...bin/... //Client/Foo...bin/... -//depot/Foo...obj/... //Client/Foo...obj/...
注意"Foo"之后和"bin"和"obj"之前丢失的斜杠.
更新的答案:这在过去有点棘手,因为没有内置的方法从Perforce命令中排除目录.自2012年以来,这已发生变化 你可以看看这个问题的一篇很好的perforce文章.
从2012.1开始,P4IGNORE可以设置环境变量以指定用于从Perforce中排除文件的文件.Perforce Server(p4d)和客户端(p4,P4V)都需要为2012.1或更高版本. P4IGNORE的目的是在将新文件添加到库和协调工作空间时忽略文件.与其他版本控制系统中的类似功能一样,P4IGNORE不能用于忽略存储库控制下的文件.
P4Eclipse .p4ignore按照自己的条件管理文件.(请参阅此处有关此点的手册)
使用客户端视图排除文件和目录:
在Perforce中排除文件和目录的传统方法是使用排除客户端映射.有关完整文档,请参阅视图的命令参考.示例视图:
视图:
//depot/... //test_ws/depot/...
-//depot/dir/etc/... //test_ws/depot/dir/etc/...
Run Code Online (Sandbox Code Playgroud)
此视图将阻止将dir/etc中的文件添加到库中.如果尝试从只读查询中排除目录,请使用客户端或相对语法.
$ p4 files //depot/dir/etc/...
//depot/dir/etc/foo#1 - add change 1186 (text)
//depot/dir/etc/bar#1 - add change 1186 (text)
$ p4 files //test_ws/dir/etc/...
//test_ws/test_ignore/ignoredir/... - file(s) not in client view.
$ cd dir/etc
$ p4 files ...
... - file(s) not in client view.
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用shell命令根据需要过滤输出.
p4 files //depot/dir/... |
awk -F# '{print $1}' |
grep -v "//depot/dir/etc/" |
p4 -x - fstat
Run Code Online (Sandbox Code Playgroud)
它在" //depot/dir/" 下的所有文件上运行p4 fstat ,但" //depot/dir/etc/" 下的文件除外.通过列出所有文件,然后使用grep删除要排除的目录下的那些文件来完成此目录排除." //depot/dir/etc/"中的尾部斜杠是必要的,以防止在" //depot/dir/"以"etc"开头的匹配目录(例如," //depot/dir/etc2009").
注意:
awk命令假定没有包含"#"字符的文件名.grep命令还可以从文件中读取其模式,如果您需要排除多个目录,这将非常有用.我们使用'-x - '标志和p4命令将输入用作相应命令的参数; 有关详细信息,请参阅Perforce命令行全局选项.
有一种方法可以直接在Perforce中执行:
导航项目树.右键单击文件或文件夹.选择包括或排除文件,文件夹,整个树.
| 归档时间: |
|
| 查看次数: |
42977 次 |
| 最近记录: |