p4同步,如何在使用通配符时排除文件?

时间:2011-10-12 13:42:28

标签: perforce

我正在尝试使用p4同步使用通配符将特定目录同步到给定的更改列表编号,但我还想排除该目录下的文件列表(在子目录中),我尝试使用 - (两者之前)并且在使用带通配符的路径之后)但文件永远不会被排除,这是我正在尝试的命令:

p4 sync //Repo/Foo/... -//Repo/Foo/Bar/Foobar.txt

文件排除似乎仅在您同步的文件/目录与您尝试排除的文件不匹配时才有效。

3 个答案:

答案 0 :(得分:6)

在您的客户端中,您将有多行:

//Repo/Foo/... //my_client/Repo/Foo/...
-//Repo/Foo/subdirectory/... //my_client/Repo/Foo/subdirectory/...

这将允许您获取Foo目录中的所有内容以及除“子目录”之外的所有子目录

答案 1 :(得分:3)

简而言之,您无法排除同步文件。这只能在客户规范中完成。 (好吧,它可以通过保护表来完成,但我认为这确实是另一回事。)

但是,如果要同步特定文件夹并仅同步该文件夹中的文件,请使用*

p4 sync //Repo/Foo/*

只会获取Foo文件夹中的文件。

答案 2 :(得分:3)

如果您使用标签,则可以执行此操作。在您喜欢的编辑器中创建一个标签(p4v或命令行p4标签,并添加两行:

//Repo/Foo/...
-//Repo/Foo/Bar/Foobar.txt

如果您需要最新或更改列表编号,请在修订字段中输入"#head"(包括引号!)。为标签指定名称 - 例如“sync_butnot_foobar”

在命令行上,您现在可以同步:

p4 sync @sync_butnot_foobar,@sync_butnot_foobar

这比修改客户端规范和同步头模型有很大的好处。如果您在客户端规范中排除了某个文件,则下次同步该文件时,该文件将被带到修订版0,这可能不是您想要的。