public static bool GetLatest(EA.Repository rep, EA.Package pkg, bool recursive, ref int count, int level, ref int errorCount) { if (pkg.IsControlled) { level = level + 1; // check if checked out string path = GetVccFilePath(rep, pkg); string fText; //rep.WriteOutput("Debug", "Path:" + pkg.Name + path, 0); var sLevel = new string(' ', level * 2); rep.WriteOutput("Debug", sLevel + (count+1).ToString(",0") + " Work for:" + path, 0); if (path != "") { count = count + 1; rep.ShowInProjectView(pkg); // delete a potential write protection try { var fileInfo = new FileInfo(path); var attributes = (FileAttributes)(fileInfo.Attributes - FileAttributes.ReadOnly); System.IO.File.SetAttributes(fileInfo.FullName, attributes); System.IO.File.Delete(path); } catch (FileNotFoundException e) { fText = path + " " + e.Message; rep.WriteOutput("Debug", fText, 0); errorCount = errorCount + 1; } catch (DirectoryNotFoundException e) { fText = path + " " + e.Message; rep.WriteOutput("Debug", fText, 0); errorCount = errorCount + 1; } // get latest try { // to make sure pkg is the correct reference // new load of pkg after GetLatest string pkgGuid = pkg.PackageGUID; pkg.VersionControlGetLatest(true); pkg = rep.GetPackageByGuid(pkgGuid); count = count + 1; } catch { fText = path + " " + pkg.GetLastError(); rep.WriteOutput("Debug", fText, 0); errorCount = errorCount + 1; } } else { fText = pkg.XMLPath + " invalid path"; rep.WriteOutput("Debug", fText, 0); errorCount = errorCount + 1; } } //rep.WriteOutput("Debug", "Recursive:" +recursive.ToString(), 0); if (recursive) { //rep.WriteOutput("Debug","Recursive count:" + pkg.Packages.Count.ToString(), 0); // over all contained packages foreach (EA.Package pkgNested in pkg.Packages) { //rep.WriteOutput("Debug", "Recursive:"+ pkgNested.Name, 0); GetLatest(rep, pkgNested, true, ref count, level, ref errorCount); } } return true; }