Exemplo n.º 1
0
 private static bool ImportVersions(Area ws, ClientStateInfo clientInfo)
 {
     lock (ws)
     {
         var versionsToImport = clientInfo.SharedInfo.PushedVersions.OrderBy(x => x.Version.Timestamp).ToArray();
         Dictionary<Guid, bool> importList = new Dictionary<Guid, bool>();
         foreach (var x in versionsToImport)
             importList[x.Version.ID] = false;
         int importCount = versionsToImport.Length;
         var orderedImports = versionsToImport.OrderBy(x => x.Version.Revision).ToList();
         while (importCount > 0)
         {
             foreach (var x in orderedImports)
             {
                 if (importList[x.Version.ID] != true)
                 {
                     bool accept;
                     if (!x.Version.Parent.HasValue || !importList.TryGetValue(x.Version.Parent.Value, out accept))
                         accept = true;
                     if (accept)
                     {
                         ws.ImportVersionNoCommit(clientInfo.SharedInfo, x, true);
                         importList[x.Version.ID] = true;
                         importCount--;
                     }
                 }
             }
         }
         foreach (var x in clientInfo.MergeVersions)
             ws.ImportVersionNoCommit(clientInfo.SharedInfo, x, false);
         foreach (var x in clientInfo.UpdatedHeads)
             ws.ImportHeadNoCommit(x);
         return true;
     }
 }