void OnEnable() { changeLists = VCCommands.Instance .GetFilteredAssets(s => !ComposedString.IsNullOrEmpty(s.changelist)) .Select(s => s.changelist.Compose()) .ToArray(); }
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()); }
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); }
// 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); }
public static bool ManagedByRepository(VersionControlStatus assetStatus) { return(assetStatus.fileStatus != VCFileStatus.Unversioned && !ComposedString.IsNullOrEmpty(assetStatus.assetPath) && !Application.isPlaying); }
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); } }