P4V v2011.1
p4v 现在所做的是同步我要同步的文件夹下的所有内容。但是,在我的情况下,该文件夹可能有很多子文件夹,我可能只需要同步其中的 50 个并跳过另外 50 个子文件夹。由于我们不想浪费带宽来传输不需要的文件,因此也不想右键单击 50 个子文件夹来单独同步。有没有一种简单的方法可以只同步我工作区中的文件?
如何编辑您的工作区视图,使其仅指定您明确需要的文件夹,并避免使用“...”通配符递归地包含子文件夹?
可以通过使用说明符的命令行#have
。
p4 fstat -T depotFile //...#have | p4 -x – sync
p4 fstat -T depotFile //...#have
返回当前工作区中文件的仓库文件规范。
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% 的时间需要的有限映射。