示例#1
0
 void OnEnable()
 {
     changeLists = VCCommands.Instance
                   .GetFilteredAssets(s => !ComposedString.IsNullOrEmpty(s.changelist))
                   .Select(s => s.changelist.Compose())
                   .ToArray();
 }
示例#2
0
 public static bool HaveAssetControl(VersionControlStatus assetStatus)
 {
     return(!VCCommands.Active ||
            HaveVCLock(assetStatus) ||
            assetStatus.fileStatus == VCFileStatus.Added ||
            assetStatus.fileStatus == VCFileStatus.Unversioned ||
            assetStatus.fileStatus == VCFileStatus.Ignored ||
            ComposedString.IsNullOrEmpty(assetStatus.assetPath) ||
            assetStatus.LocalEditAllowed());
 }
示例#3
0
        public static string GetLockStatusMessage(VersionControlStatus assetStatus)
        {
            string lockMessage = assetStatus.lockStatus.ToString();

            if (assetStatus.lockStatus == VCLockStatus.LockedOther)
            {
                lockMessage = Terminology.getlock + " by: " + assetStatus.owner;
            }
            if (assetStatus.lockStatus == VCLockStatus.LockedHere)
            {
                lockMessage = Terminology.getlock + " Here: " + assetStatus.owner;
            }
            if (assetStatus.lockStatus == VCLockStatus.NoLock)
            {
                if (ComposedString.IsNullOrEmpty(assetStatus.assetPath))
                {
                    lockMessage = "Not saved";
                }
                else if (assetStatus.fileStatus == VCFileStatus.Added)
                {
                    lockMessage = "Added";
                }
                else if (assetStatus.fileStatus == VCFileStatus.Replaced)
                {
                    lockMessage = "Replaced";
                }
                else
                {
                    lockMessage = VCUtility.ManagedByRepository(assetStatus) ? "Not " + Terminology.getlock : "Not on Version Control";
                }
            }
            if (assetStatus.LocalEditAllowed())
            {
                lockMessage = Terminology.allowLocalEdit;
                if ((assetStatus.lockStatus == VCLockStatus.LockedOther))
                {
                    lockMessage += " (" + Terminology.getlock + " By: " + assetStatus.owner + " )";
                }
            }
            if (assetStatus.fileStatus == VCFileStatus.Modified)
            {
                lockMessage += "*";
            }
            return(lockMessage);
        }
示例#4
0
        // This is a performance critical function
        private bool BaseFilter(VersionControlStatus vcStatus)
        {
            if (!vcStatus.Reflected)
            {
                return(false);
            }

            bool assetCriteria = vcStatus.fileStatus != VCFileStatus.None && (vcStatus.ModifiedOrLocalEditAllowed() || vcStatus.fileStatus != VCFileStatus.Normal || !ComposedString.IsNullOrEmpty(vcStatus.changelist)) && vcStatus.fileStatus != VCFileStatus.Ignored;

            if (assetCriteria)
            {
                return(true);
            }

            bool property = vcStatus.property == VCProperty.Modified || vcStatus.property == VCProperty.Conflicted;

            if (property)
            {
                return(true);
            }

            bool localLock = vcStatus.lockStatus == VCLockStatus.LockedHere;

            if (localLock)
            {
                return(true);
            }

            var  metaStatus   = vcStatus.MetaStatus();
            bool metaCriteria = metaStatus.fileStatus != VCFileStatus.Normal && (metaStatus.fileStatus != VCFileStatus.None || !ComposedString.IsNullOrEmpty(metaStatus.changelist)) && metaStatus.fileStatus != VCFileStatus.Ignored;

            if (metaCriteria)
            {
                return(true);
            }

            return(false);
        }
示例#5
0
 public static bool ManagedByRepository(VersionControlStatus assetStatus)
 {
     return(assetStatus.fileStatus != VCFileStatus.Unversioned && !ComposedString.IsNullOrEmpty(assetStatus.assetPath) && !Application.isPlaying);
 }
示例#6
0
        public static ValidActions GetValidActions(string assetPath, Object instance = null)
        {
            using (sceneviewUpdateMarker.Auto())
            {
                if (!VCCommands.Active || string.IsNullOrEmpty(assetPath))
                {
                    return(noAction);
                }

                var assetStatus = VCCommands.Instance.GetAssetStatus(assetPath);

                bool isPrefab              = instance != null && PrefabHelper.IsPrefab(instance);
                bool isPrefabParent        = isPrefab && PrefabHelper.IsPrefabParent(instance);
                bool isFolder              = AssetDatabase.IsValidFolder(assetPath);
                bool diffableAsset         = MergeHandler.IsDiffableAsset(assetPath);
                bool mergableAsset         = MergeHandler.IsMergableAsset(assetPath);
                bool modifiedDiffableAsset = diffableAsset && assetStatus.fileStatus != VCFileStatus.Normal;
                bool modifiedMeta          = assetStatus.MetaStatus().fileStatus != VCFileStatus.Normal;
                bool lockedMeta            = assetStatus.MetaStatus().lockStatus == VCLockStatus.LockedHere;
                bool modified              = assetStatus.fileStatus == VCFileStatus.Modified;
                bool localOnly             = assetStatus.localOnly;
                bool deleted        = assetStatus.fileStatus == VCFileStatus.Deleted;
                bool added          = assetStatus.fileStatus == VCFileStatus.Added;
                bool unversioned    = assetStatus.fileStatus == VCFileStatus.Unversioned;
                bool ignored        = assetStatus.fileStatus == VCFileStatus.Ignored;
                bool replaced       = assetStatus.fileStatus == VCFileStatus.Replaced;
                bool lockedByOther  = assetStatus.lockStatus == VCLockStatus.LockedOther;
                bool managedByRep   = VCUtility.ManagedByRepository(assetStatus);
                bool haveControl    = VCUtility.HaveAssetControl(assetStatus);
                bool haveLock       = VCUtility.HaveVCLock(assetStatus);
                bool allowLocalEdit = assetStatus.LocalEditAllowed();
                bool pending        = assetStatus.reflectionLevel == VCReflectionLevel.Pending;
                bool mergeinfo      = assetStatus.property == VCProperty.Modified;
                bool conflicted     = assetStatus.fileStatus == VCFileStatus.Conflicted;
                bool hasChangeSet   = !ComposedString.IsNullOrEmpty(assetStatus.changelist);

                bool showAdd    = !pending && !ignored && unversioned;
                bool showOpen   = !pending && !showAdd && !added && !haveLock && !deleted && !isFolder && !mergableAsset && ((!lockedByOther && !localOnly) || allowLocalEdit);
                bool showDiff   = !pending && !ignored && !deleted && modifiedDiffableAsset && managedByRep;
                bool showCommit = !pending && !ignored && !allowLocalEdit && !localOnly && (haveLock || added || deleted || modifiedDiffableAsset || modifiedMeta || mergeinfo);
                bool showRevert = !pending && !ignored && !unversioned &&
                                  (haveControl || modified || added || deleted || replaced || modifiedDiffableAsset || modifiedMeta || lockedMeta || mergeinfo);
                bool showDelete           = !pending && !ignored && !deleted && !lockedByOther;
                bool showOpenLocal        = !pending && !ignored && !deleted && !isFolder && !allowLocalEdit && !unversioned && !added && !haveLock && !mergableAsset && !localOnly;
                bool showUnlock           = !pending && !ignored && !allowLocalEdit && haveLock;
                bool showUpdate           = !pending && !ignored && !added && managedByRep && instance != null;
                bool showUseTheirs        = !pending && !ignored && conflicted;
                bool showUseMine          = !pending && !ignored && conflicted;
                bool showMerge            = !pending && !ignored && conflicted && mergableAsset;
                bool showAddChangeList    = !pending && !ignored && !unversioned;
                bool showRemoveChangeList = !pending && !ignored && hasChangeSet;

                ValidActions validActions = 0;
                if (showAdd)
                {
                    validActions |= ValidActions.Add;
                }
                if (showOpen)
                {
                    validActions |= ValidActions.Open;
                }
                if (showDiff)
                {
                    validActions |= ValidActions.Diff;
                }
                if (showCommit)
                {
                    validActions |= ValidActions.Commit;
                }
                if (showRevert)
                {
                    validActions |= ValidActions.Revert;
                }
                if (showDelete)
                {
                    validActions |= ValidActions.Delete;
                }
                if (showOpenLocal)
                {
                    validActions |= ValidActions.OpenLocal;
                }
                if (showUnlock)
                {
                    validActions |= ValidActions.Unlock;
                }
                if (showUpdate)
                {
                    validActions |= ValidActions.Update;
                }
                if (showUseTheirs)
                {
                    validActions |= ValidActions.UseTheirs;
                }
                if (showUseMine)
                {
                    validActions |= ValidActions.UseMine;
                }
                if (showMerge)
                {
                    validActions |= ValidActions.Merge;
                }
                if (showAddChangeList)
                {
                    validActions |= ValidActions.AddChangeList;
                }
                if (showRemoveChangeList)
                {
                    validActions |= ValidActions.RemoveChangeList;
                }

                return(validActions);
            }
        }