我正在尝试使用p4同步使用通配符将特定目录同步到给定的更改列表编号,但我还想排除该目录下的文件列表(在子目录中),我尝试使用 - (两者之前)并且在使用带通配符的路径之后)但文件永远不会被排除,这是我正在尝试的命令:
p4 sync //Repo/Foo/... -//Repo/Foo/Bar/Foobar.txt
文件排除似乎仅在您同步的文件/目录与您尝试排除的文件不匹配时才有效。
答案 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,这可能不是您想要的。