public override void ExecuteBuild() { var Changelist = ParseParamValue("cl", ""); if (!String.IsNullOrEmpty(Changelist)) { Changelist = "@" + Changelist; } var AlwaysSync = new List <string>(new string[] { "Engine/Binaries/ThirdParty", "Engine/Content", } ); var AdditionalAlwaysSyncPaths = ParseParamValue("sync"); if (!String.IsNullOrEmpty(AdditionalAlwaysSyncPaths)) { var AdditionalPaths = AdditionalAlwaysSyncPaths.Split(new string[] { "+" }, StringSplitOptions.RemoveEmptyEntries); AlwaysSync.AddRange(AdditionalPaths); } var ExclusionList = new HashSet <string>(new string[] { "Binaries", "Content", "Documentation", "DataTables", }, StringComparer.InvariantCultureIgnoreCase ); var AdditionalExlusionPaths = ParseParamValue("exclude"); if (!String.IsNullOrEmpty(AdditionalExlusionPaths)) { var AdditionalPaths = AdditionalExlusionPaths.Split(new string[] { "+" }, StringSplitOptions.RemoveEmptyEntries); foreach (var Dir in AdditionalPaths) { ExclusionList.Add(Dir); } } var DepotPath = ParseParamValue("branch", "//depot/UE4/"); foreach (var AlwaysSyncSubFolder in AlwaysSync) { var SyncCmdLine = CombinePaths(PathSeparator.Depot, DepotPath, AlwaysSyncSubFolder, "...") + Changelist; LogInformation("Syncing {0}", SyncCmdLine, Changelist); SafeSync(SyncCmdLine); } DepotPath = CombinePaths(PathSeparator.Depot, DepotPath, "*"); var ProjectDirectories = P4.Dirs(String.Format("-D {0}", DepotPath)); foreach (var ProjectDir in ProjectDirectories) { var ProjectDirPath = CombinePaths(PathSeparator.Depot, ProjectDir, "*"); var SubDirectories = P4.Dirs(ProjectDirPath); foreach (var SubDir in SubDirectories) { var SubDirName = Path.GetFileNameWithoutExtension(GetDirectoryName(SubDir)); if (!ExclusionList.Contains(SubDirName)) { var SyncCmdLine = CombinePaths(PathSeparator.Depot, SubDir, "...") + Changelist; LogInformation("Syncing {0}", SyncCmdLine); SafeSync(SyncCmdLine); } } } }