p4v如何仅同步工作区文件

时间:2012-03-28 07:42:32

标签: windows-7 perforce p4v

P4V v2011.1

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

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

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

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

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

  3. ...

    如果你想在P4V中使用它,你可以写一个调用WSH脚本的custom tool

    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%的时间。