Exemplo n.º 1
0
        public static IEnumerable<string> AddMoveMatches(this IEnumerable<string> assetPaths, IVersionControlCommands vcc)
        {
            List<string> moveMatches = new List<string>();
            var allDeleted = vcc.GetFilteredAssets(status => status.fileStatus == VCFileStatus.Deleted);
            var allAdded = vcc.GetFilteredAssets(status => status.fileStatus == VCFileStatus.Added);
            var commitDeleted = assetPaths.Where(a => vcc.GetAssetStatus(a).fileStatus == VCFileStatus.Deleted);
            var commitAdded = assetPaths.Where(a => vcc.GetAssetStatus(a).fileStatus == VCFileStatus.Added);
            foreach (var deleted in allDeleted)
            {
                var deletedPath = deleted.assetPath.Compose();
                if (commitAdded.Count(added => added.EndsWith(Path.GetFileName(deletedPath))) > 0)
                {
                    moveMatches.Add(deletedPath);
                }
                if (commitAdded.Count(added => added.StartsWith(Path.GetDirectoryName(deletedPath)) && Path.GetExtension(deletedPath) == Path.GetExtension(added)) > 0)
                {
                    moveMatches.Add(deletedPath);
                }

            }
            foreach (var added in allAdded)
            {
                var addedPath = added.assetPath.Compose();
                if (commitDeleted.Count(deleted => deleted.EndsWith(Path.GetFileName(addedPath))) > 0)
                {
                    moveMatches.Add(addedPath);
                }
                if (commitDeleted.Count(deleted => deleted.StartsWith(Path.GetDirectoryName(addedPath)) && Path.GetExtension(addedPath) == Path.GetExtension(deleted)) > 0)
                {
                    moveMatches.Add(addedPath);
                }
            }
            return assetPaths.Concat(moveMatches).ToArray();
        }
Exemplo n.º 2
0
 public SVNCommands()
 {
     vcc = new VCCFilteredAssets(this);
     StartRefreshLoop();
     AppDomain.CurrentDomain.DomainUnload += Unload;
     AppDomain.CurrentDomain.ProcessExit  += Unload;
 }
Exemplo n.º 3
0
 private static void OnVersionControlBackendChanged(IVersionControlCommands vcc)
 {
     if (VersionControlBackendChanged != null)
     {
         VersionControlBackendChanged(vcc);
     }
 }
Exemplo n.º 4
0
 public SVNCommands()
 {
     vcc = new VCCFilteredAssets(this);
     StartRefreshLoop();
     AppDomain.CurrentDomain.DomainUnload += Unload;
     AppDomain.CurrentDomain.ProcessExit += Unload;
 }
Exemplo n.º 5
0
 public static bool InIgnoredParentFolder(this string asset, IVersionControlCommands vcc)
 {
     return(ParentFolders(asset).Any(a =>
     {
         return vcc.GetAssetStatus(a).fileStatus == VCFileStatus.Ignored;
     }));
 }
Exemplo n.º 6
0
 public static IEnumerable<string> AddDeletedInFolders(this IEnumerable<string> assetPaths, IVersionControlCommands vcc)
 {
     var deletedInFolders = assetPaths
         .SelectMany(d => vcc.GetFilteredAssets(status => (status.fileStatus == VCFileStatus.Deleted || status.fileStatus == VCFileStatus.Missing) && status.assetPath.StartsWith(new ComposedString(d))))
         .Select(status => status.assetPath.Compose())
         .ToArray();
     return assetPaths.Concat(deletedInFolders).ToArray();
 }
Exemplo n.º 7
0
 public static IEnumerable<string> AddFolders(this IEnumerable<string> assets, IVersionControlCommands vcc)
 {
     return assets
         .Select(a => Path.GetDirectoryName(a))
         .Where(d => vcc.GetAssetStatus(d).fileStatus != VCFileStatus.Normal)
         .Concat(assets)
         .Distinct()
         .ToArray();
 }
Exemplo n.º 8
0
 public static void AddFolders(ref List <string> assets, IVersionControlCommands vcc)
 {
     for (int i = assets.Count - 1; i >= 0; i--)
     {
         string directory = GetDirectoryNameForwardSlash(assets[i]);
         if (!assets.Contains(directory) && vcc.GetAssetStatus(directory).fileStatus != VCFileStatus.Normal)
         {
             assets.Add(directory);
         }
     }
 }
Exemplo n.º 9
0
 protected VCCDecorator(IVersionControlCommands vcc)
 {
     this.vcc = vcc;
     vcc.ProgressInformation += progress => { if (ProgressInformation != null)
                                              {
                                                  ProgressInformation(progress);
                                              }
     };
     vcc.StatusCompleted += () => { if (StatusCompleted != null)
                                    {
                                        StatusCompleted();
                                    }
     };
 }
Exemplo n.º 10
0
 private void OnVersionControlBackendChanged(IVersionControlCommands newVcc)
 {
     vcc?.Dispose();
     vcc = newVcc;
     vcc.ProgressInformation += progress =>
     {
         if (ProgressInformation != null)
         {
             OnNextUpdate.Do(() => ProgressInformation(progress));
         }
     };
     vcc.StatusCompleted += OnStatusCompleted;
     OnNextUpdate.Do(Start);
     EditorApplication.playModeStateChanged += OnPlaymodeStateChanged;
 }
Exemplo n.º 11
0
 public static IEnumerable<string> AddFilesInFolders(this IEnumerable<string> assets, IVersionControlCommands vcc, bool versionedFoldersOnly = false)
 {
     foreach (var assetIt in new List<string>(assets))
     {
         if (Directory.Exists(assetIt) && (!versionedFoldersOnly || vcc.GetAssetStatus(assetIt).fileStatus != VCFileStatus.Unversioned))
         {
             assets = assets
                 .Concat(Directory.GetFiles(assetIt, "*", SearchOption.AllDirectories)
                 .Where(a => File.Exists(a) && !a.Contains("/.") && !a.Contains("\\.") && (File.GetAttributes(a) & FileAttributes.Hidden) == 0)
                 .Select(s => s.Replace("\\", "/")))
                 .ToArray();
         }
     }
     return assets;
 }
Exemplo n.º 12
0
        public void Init()
        {
            if (Directory.Exists(workingDirectoryForSVNTests))
            {
                Directory.Delete(workingDirectoryForSVNTests, true);
            }
            Directory.CreateDirectory(workingDirectoryForSVNTests);

            vcc = new VCCFilteredAssets(new SVNCommands());
            vcc.SetWorkingDirectory(workingDirectoryForSVNTests);
            Directory.SetCurrentDirectory(workingDirectoryForSVNTests);
            vcc.ProgressInformation += s => D.Log(s);
            vcc.Start();
            vcc.SetUserCredentials("kjems", "dingo", true);
            vcc.Checkout(urlToEmptyRepo, workingDirectoryForSVNTests);
        }
Exemplo n.º 13
0
        public static bool CreateVersionControlCommands(VCSettings.EVersionControlBackend backend)
        {
            string workDirectory = Application.dataPath.Remove(Application.dataPath.LastIndexOf("/Assets", StringComparison.Ordinal));
            bool   noopSelected  = backend == VCSettings.EVersionControlBackend.None;
            bool   svnSelected   = backend == VCSettings.EVersionControlBackend.Svn;
            /*P4_DISABLED bool p4Selected = backend == VCSettings.EVersionControlBackend.P4_Beta;*/
            IVersionControlCommands uvc = null;
            bool success = false;

            if (svnSelected && CreateVersionControl <SVNCommands>(() => new SVNCommands(), workDirectory, out uvc))
            {
                //D.Log(backend + " backend initialized successfully");
                OnVersionControlBackendChanged(uvc);
                success = true;
            }

            /*P4_DISABLED
             * else if (p4Selected && CreateVersionControl<P4Commands>(() => new P4Commands(), workDirectory, out uvc))
             * {
             *  //D.Log(backend + " backend initialized successfully");
             *  OnVersionControlBackendChanged(uvc);
             *  success = true;
             * }*/
            else if (noopSelected)
            {
                //D.Log(backend + " backend initialized successfully");
                OnVersionControlBackendChanged(GetDefaultImplementation());
                success = true;
            }

            GoogleAnalytics.LogUserEvent("Backend", $"{backend.ToString()}_{(success ? "success" : "failed")}");

            if (!success)
            {
                DebugLog.LogWarning(backend + " backend initialization failed!");
            }

            return(success);
        }
Exemplo n.º 14
0
        public static void AddMoveMatches(ref List <string> assetPaths, IVersionControlCommands vcc)
        {
            List <string> moveMatches = new List <string>();
            //moveMatches.AddRange(assetPaths.Select(vcc.GetAssetStatus).Where(status => !ComposedString.IsNullOrEmpty(status.movedFrom)).Select(status => status.movedFrom.Compose()));
            //UnityEngine.Debug.Log(moveMatches.Count > 0 ? moveMatches.AggregateString() : "Empty move match");

            var allDeleted    = vcc.GetFilteredAssets(status => status.fileStatus == VCFileStatus.Deleted);
            var allAdded      = vcc.GetFilteredAssets(status => status.fileStatus == VCFileStatus.Added);
            var commitDeleted = assetPaths.Where(a => vcc.GetAssetStatus(a).fileStatus == VCFileStatus.Deleted);
            var commitAdded   = assetPaths.Where(a => vcc.GetAssetStatus(a).fileStatus == VCFileStatus.Added);

            foreach (var deleted in allDeleted)
            {
                var deletedPath = deleted.assetPath.Compose();
                if (commitAdded.Count(added => added.EndsWith(Path.GetFileName(deletedPath))) > 0)
                {
                    moveMatches.Add(deletedPath);
                }
                if (commitAdded.Count(added => added.StartsWith(GetDirectoryNameForwardSlash(deletedPath)) && Path.GetExtension(deletedPath) == Path.GetExtension(added)) > 0)
                {
                    moveMatches.Add(deletedPath);
                }
            }
            foreach (var added in allAdded)
            {
                var addedPath = added.assetPath.Compose();
                if (commitDeleted.Count(deleted => deleted.EndsWith(Path.GetFileName(addedPath))) > 0)
                {
                    moveMatches.Add(addedPath);
                }
                if (commitDeleted.Count(deleted => deleted.StartsWith(GetDirectoryNameForwardSlash(addedPath)) && Path.GetExtension(addedPath) == Path.GetExtension(deleted)) > 0)
                {
                    moveMatches.Add(addedPath);
                }
            }
            assetPaths.AddRange(moveMatches.Distinct());
        }
Exemplo n.º 15
0
 public static IEnumerable<string> AddedOrUnversionedParentFolders(this IEnumerable<string> assets, IVersionControlCommands vcc)
 {
     return assets.Concat(assets.SelectMany(ParentFolders).Where(a => vcc.GetAssetStatus(a).fileStatus == VCFileStatus.Unversioned || vcc.GetAssetStatus(a).fileStatus == VCFileStatus.Added)).Distinct().ToArray();
 }
Exemplo n.º 16
0
 public static IEnumerable <string> OnChangeList(this IEnumerable <string> assets, IVersionControlCommands vcc)
 {
     return(assets.Where(a => vcc.GetAssetStatus(a).changelist != null));
 }
Exemplo n.º 17
0
 public static IEnumerable <string> Locked(this IEnumerable <string> assets, IVersionControlCommands vcc)
 {
     return(assets.Where(a => vcc.GetAssetStatus(a).lockStatus == VCLockStatus.LockedHere));
 }
Exemplo n.º 18
0
 public static IEnumerable <string> InVersionedFolder(this IEnumerable <string> assets, IVersionControlCommands vcc)
 {
     return(assets.Where(a => !a.InUnversionedParentFolder(vcc)).ToArray());
 }
Exemplo n.º 19
0
        public static IEnumerable <string> AddDeletedInFolders(this IEnumerable <string> assetPaths, IVersionControlCommands vcc)
        {
            var deletedInFolders = assetPaths
                                   .SelectMany(d => vcc.GetFilteredAssets(status => (status.fileStatus == VCFileStatus.Deleted || status.fileStatus == VCFileStatus.Missing) && status.assetPath.StartsWith(new ComposedString(d))))
                                   .Select(status => status.assetPath.Compose())
                                   .ToArray();

            return(assetPaths.Concat(deletedInFolders).ToArray());
        }
Exemplo n.º 20
0
 public void Dispose()
 {
     vcc.Dispose();
     vcc = null;
 }
Exemplo n.º 21
0
 public static IEnumerable <string> AddFilesInFolders(this IEnumerable <string> assets, IVersionControlCommands vcc, bool versionedFoldersOnly = false)
 {
     foreach (var assetIt in new List <string>(assets))
     {
         if (Directory.Exists(assetIt) && (!versionedFoldersOnly || vcc.GetAssetStatus(assetIt).fileStatus != VCFileStatus.Unversioned))
         {
             assets = assets
                      .Concat(Directory.GetFiles(assetIt, "*", SearchOption.AllDirectories)
                              .Where(a => File.Exists(a) && !a.Contains("/.") && !a.Contains("\\.") && (File.GetAttributes(a) & FileAttributes.Hidden) == 0)
                              .Select(s => s.Replace("\\", "/")))
                      .Distinct()
                      .ToArray();
         }
     }
     return(assets);
 }
Exemplo n.º 22
0
 public static IEnumerable<string> Locked(this IEnumerable<string> assets, IVersionControlCommands vcc)
 {
     return assets.Where(a => vcc.GetAssetStatus(a).lockStatus == VCLockStatus.LockedHere);
 }
Exemplo n.º 23
0
 public static IEnumerable <string> AddFolders(this IEnumerable <string> assets, IVersionControlCommands vcc)
 {
     return(assets
            .Select(a => Path.GetDirectoryName(a))
            .Where(d => vcc.GetAssetStatus(d).fileStatus != VCFileStatus.Normal)
            .Concat(assets)
            .Distinct()
            .ToArray());
 }
Exemplo n.º 24
0
 public static IEnumerable<string> Deleted(this IEnumerable<string> assets, IVersionControlCommands vcc)
 {
     return assets.Where(a => vcc.GetAssetStatus(a).fileStatus == VCFileStatus.Deleted);
 }
Exemplo n.º 25
0
 private static IVersionControlCommands AddDecorators(IVersionControlCommands vcc)
 {
     return(new VCCAddMetaFiles(new VCCFilteredAssets(vcc)));
 }
Exemplo n.º 26
0
 public static IEnumerable<string> NotLocked(this IEnumerable<string> assets, IVersionControlCommands vcc)
 {
     return
         assets.Where(a => vcc.GetAssetStatus(a).fileStatus != VCFileStatus.Unversioned &&
         vcc.GetAssetStatus(a).lockStatus == VCLockStatus.NoLock);
 }
Exemplo n.º 27
0
 public static IEnumerable<string> OnChangeList(this IEnumerable<string> assets, IVersionControlCommands vcc)
 {
     return assets.Where(a => vcc.GetAssetStatus(a).changelist != null);
 }
Exemplo n.º 28
0
 public static IEnumerable<string> RemoveFilesUnderUnversionedFolders(this IEnumerable<string> assets, IVersionControlCommands vcc)
 {
     var folders = assets.Where(a => Directory.Exists(a) && vcc.GetAssetStatus(a).fileStatus == VCFileStatus.Unversioned);
     assets = assets.Where(a => !folders.Any(f => a.StartsWith(f) && a != f));
     return assets.ToArray();
 }
Exemplo n.º 29
0
 public static IEnumerable <string> LocalModified(this IEnumerable <string> assets, IVersionControlCommands vcc)
 {
     return(assets
            .Where(d => vcc.GetAssetStatus(d).ModifiedOrLocalEditAllowed())
            .ToArray());
 }
Exemplo n.º 30
0
 public static IEnumerable<string> InVersionedFolder(this IEnumerable<string> assets, IVersionControlCommands vcc)
 {
     return assets.Where(a => !a.InUnversionedParentFolder(vcc)).ToArray();
 }
Exemplo n.º 31
0
 public static IEnumerable <string> LocalOnly(this IEnumerable <string> assets, IVersionControlCommands vcc)
 {
     return(assets
            .Where(d => vcc.GetAssetStatus(d).localOnly)
            .ToArray());
 }
Exemplo n.º 32
0
 public static bool InUnversionedParentFolder(this string asset, IVersionControlCommands vcc)
 {
     return ParentFolders(asset).Any(a => vcc.GetAssetStatus(a).fileStatus == VCFileStatus.Unversioned);
 }
Exemplo n.º 33
0
 public VCCFilteredAssets(IVersionControlCommands vcc)
     : base(vcc)
 {
 }
Exemplo n.º 34
0
 public VCCAddMetaFiles(IVersionControlCommands vcc)
     : base(vcc)
 {
 }
Exemplo n.º 35
0
        public static IEnumerable <string> RemoveFilesUnderUnversionedFolders(this IEnumerable <string> assets, IVersionControlCommands vcc)
        {
            var folders = assets.Where(a => Directory.Exists(a) && vcc.GetAssetStatus(a).fileStatus == VCFileStatus.Unversioned);

            assets = assets.Where(a => !folders.Any(f => a.StartsWith(f) && a != f));
            return(assets.ToArray());
        }
Exemplo n.º 36
0
 protected VCCDecorator(IVersionControlCommands vcc)
 {
     this.vcc = vcc;
     vcc.ProgressInformation += progress => { if (ProgressInformation != null) ProgressInformation(progress); };
     vcc.StatusCompleted += () => { if (StatusCompleted != null) StatusCompleted(); };
 }
Exemplo n.º 37
0
        public static IEnumerable <string> AddMoveMatches(this IEnumerable <string> assetPaths, IVersionControlCommands vcc)
        {
            List <string> moveMatches   = new List <string>();
            var           allDeleted    = vcc.GetFilteredAssets(status => status.fileStatus == VCFileStatus.Deleted);
            var           allAdded      = vcc.GetFilteredAssets(status => status.fileStatus == VCFileStatus.Added);
            var           commitDeleted = assetPaths.Where(a => vcc.GetAssetStatus(a).fileStatus == VCFileStatus.Deleted);
            var           commitAdded   = assetPaths.Where(a => vcc.GetAssetStatus(a).fileStatus == VCFileStatus.Added);

            foreach (var deleted in allDeleted)
            {
                var deletedPath = deleted.assetPath.Compose();
                if (commitAdded.Count(added => added.EndsWith(Path.GetFileName(deletedPath))) > 0)
                {
                    moveMatches.Add(deletedPath);
                }
                if (commitAdded.Count(added => added.StartsWith(Path.GetDirectoryName(deletedPath)) && Path.GetExtension(deletedPath) == Path.GetExtension(added)) > 0)
                {
                    moveMatches.Add(deletedPath);
                }
            }
            foreach (var added in allAdded)
            {
                var addedPath = added.assetPath.Compose();
                if (commitDeleted.Count(deleted => deleted.EndsWith(Path.GetFileName(addedPath))) > 0)
                {
                    moveMatches.Add(addedPath);
                }
                if (commitDeleted.Count(deleted => deleted.StartsWith(Path.GetDirectoryName(addedPath)) && Path.GetExtension(addedPath) == Path.GetExtension(deleted)) > 0)
                {
                    moveMatches.Add(addedPath);
                }
            }
            return(assetPaths.Concat(moveMatches).ToArray());
        }
Exemplo n.º 38
0
        public void Init()
        {
            if (Directory.Exists(workingDirectoryForSVNTests))
            {
                Directory.Delete(workingDirectoryForSVNTests, true);
            }
            Directory.CreateDirectory(workingDirectoryForSVNTests);

            vcc = new VCCFilteredAssets(new SVNCommands());
            vcc.SetWorkingDirectory(workingDirectoryForSVNTests);
            Directory.SetCurrentDirectory(workingDirectoryForSVNTests);
            vcc.ProgressInformation += s => D.Log(s);
            vcc.Start();
            vcc.SetUserCredentials("kjems", "dingo", true);
            vcc.Checkout(urlToEmptyRepo, workingDirectoryForSVNTests);
        }
Exemplo n.º 39
0
 public static IEnumerable <string> Versioned(this IEnumerable <string> assets, IVersionControlCommands vcc)
 {
     return(assets.Where(a => vcc.GetAssetStatus(a).fileStatus != VCFileStatus.Unversioned && !a.InUnversionedParentFolder(vcc)));
 }
Exemplo n.º 40
0
 public void Dispose()
 {
     vcc.Dispose();
     vcc = null;
 }
Exemplo n.º 41
0
 public static IEnumerable <string> Conflicted(this IEnumerable <string> assets, IVersionControlCommands vcc)
 {
     return(assets.Where(a => vcc.GetAssetStatus(a).fileStatus == VCFileStatus.Conflicted));
 }
 public static IEnumerable <string> AddedOrUnversionedParentFolders(this IEnumerable <string> assets, IVersionControlCommands vcc)
 {
     return(assets.Concat(assets.SelectMany(ParentFolders).Where(a => vcc.GetAssetStatus(a).fileStatus == VCFileStatus.Unversioned || vcc.GetAssetStatus(a).fileStatus == VCFileStatus.Added)).Distinct().ToArray());
 }
Exemplo n.º 43
0
 public static IEnumerable <string> NotLocked(this IEnumerable <string> assets, IVersionControlCommands vcc)
 {
     return
         (assets.Where(a => vcc.GetAssetStatus(a).fileStatus != VCFileStatus.Unversioned &&
                       vcc.GetAssetStatus(a).lockStatus == VCLockStatus.NoLock));
 }
Exemplo n.º 44
0
 public static IEnumerable<string> Versioned(this IEnumerable<string> assets, IVersionControlCommands vcc)
 {
     return assets.Where(a => vcc.GetAssetStatus(a).fileStatus != VCFileStatus.Unversioned && !a.InUnversionedParentFolder(vcc));
 }
Exemplo n.º 45
0
        public static IEnumerable <string> AddedOrUnversionedParentFolders(this IEnumerable <string> assets, IVersionControlCommands vcc)
        {
            return(assets.Concat(assets.SelectMany(ParentFolders).Where(a =>
            {
                Logging.D.Log("AddedOrUnversionedParentFolders: " + a + " - " + vcc.GetAssetStatus(a).fileStatus);

                bool bAddedOrUnversioned = vcc.GetAssetStatus(a).fileStatus == VCFileStatus.Unversioned || vcc.GetAssetStatus(a).fileStatus == VCFileStatus.Added;
                if (bAddedOrUnversioned)
                {
                    return true;
                }

                //else if (vcc.GetAssetStatus(a).fileStatus == VCFileStatus.Normal) //Should not happen anymore (Direcotry exists fix)
                //{
                //    IEnumerable<string> parentsOfParent = ParentFolders(a);
                //    foreach (string strParent in parentsOfParent)
                //    {
                //        if (vcc.GetAssetStatus(strParent).fileStatus == VCFileStatus.Unversioned || vcc.GetAssetStatus(strParent).fileStatus == VCFileStatus.Added)
                //            return true;
                //    }

                //    return false;
                //}

                else
                {
                    return false;
                }
            }
                                                                        )).Distinct().ToArray());
        }
Exemplo n.º 46
0
        private static bool CreateVersionControl <T>(Func <T> factory, string workDirectory, out IVersionControlCommands uvc) where T : IVersionControlCommands
        {
            var watch = new System.Diagnostics.Stopwatch();

            watch.Start();
            uvc = null;
            bool valid = false;

            try
            {
                uvc = AddDecorators(factory());
                uvc.SetWorkingDirectory(workDirectory);
                valid = uvc.HasValidLocalCopy();
            }
            catch (Exception e)
            {
                DebugLog.ThrowException(e);
            }
            finally
            {
                if (!valid && uvc != null)
                {
                    uvc.Dispose();
                }
            }
            DebugLog.Log("CreateVersionControl took : " + watch.ElapsedMilliseconds + "ms");
            return(valid);
        }
Exemplo n.º 47
0
 public VCCFilteredAssets(IVersionControlCommands vcc)
     : base(vcc)
 {
 }
Exemplo n.º 48
0
 public VCCAddMetaFiles(IVersionControlCommands vcc) : base(vcc)
 {
 }