1

P4V v2011.1

p4v 现在所做的是同步我要同步的文件夹下的所有内容。但是,在我的情况下,该文件夹可能有很多子文件夹,我可能只需要同步其中的 50 个并跳过另外 50 个子文件夹。由于我们不想浪费带宽来传输不需要的文件,因此也不想右键单击 50 个子文件夹来单独同步。有没有一种简单的方法可以只同步我工作区中的文件?

4

2 回答 2

4

如何编辑您的工作区视图,使其仅指定您明确需要的文件夹,并避免使用“...”通配符递归地包含子文件夹?

于 2012-03-28T14:00:49.437 回答
2

可以通过使用说明符的命令行#have

p4 fstat -T depotFile //...#have | p4 -x – sync
  1. p4 fstat -T depotFile //...#have返回当前工作区中文件的仓库文件规范。

  2. p4 -x – sync获取上一个命令的输出(使用 pipe |)并进行同步。

...

如果您希望在 P4V 中使用此功能,您可以编写一个调用 WSH 脚本的自定义工具。

var WshShell = new ActiveXObject("WScript.Shell");
var oExec = WshShell.Exec("p4 fstat -T depotFile //...#have | p4 -x – sync");    
while (oExec.Status == 0)
    WScript.Sleep(100);

WScript.Echo(oExec.Status);

注意:使用上述方法#have不会同步任何新添加的文件。不确定这是否是您想要的。


另一种方法完全是创建一个批处理文件来同步您想要的文件规范。我每天早上都会运行一个同步多个分支和项目的程序。

要创建您自己的,请打开记事本并p4 sync逐个添加必要的命令。

p4 sync //projectA/...
p4 sync //projectB/folder1
p4 sync //projectB/folder2
...
p4 sync //projectB/folder5

最初设置的一些工作。

或者

也许比批处理文件或脚本使用两个工作区更好,第一个工作区映射了完整的仓库,第二个工作区使用了 90% 的时间需要的有限映射。

于 2012-03-28T09:08:05.187 回答