static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths) { if (EditorPrefs.GetBool("UniGit_DisablePostprocess")) { return; } if (GitManager.Repository != null) { if (GitManager.Settings != null && GitManager.Settings.AutoStage) { if (importedAssets != null && importedAssets.Length > 0) { string[] importedAssetsToStage = importedAssets.Where(a => !GitManager.IsEmptyFolder(a)).SelectMany(g => GitManager.GetPathWithMeta(g)).Where(g => GitManager.CanStage(GitManager.Repository.RetrieveStatus(g))).ToArray(); if (importedAssetsToStage.Length > 0) { GitManager.Repository.Stage(importedAssetsToStage); GitManager.MarkDirty(importedAssetsToStage); } } if (movedAssets != null && movedAssets.Length > 0) { string[] movedAssetsFinal = movedAssets.Where(a => !GitManager.IsEmptyFolder(a)).SelectMany(g => GitManager.GetPathWithMeta(g)).Where(g => GitManager.CanStage(GitManager.Repository.RetrieveStatus(g))).ToArray(); if (movedAssetsFinal.Length > 0) { GitManager.Repository.Stage(movedAssetsFinal); GitManager.MarkDirty(movedAssetsFinal); } } } //automatic deletion of previously moved asset is necessary even if AutoStage is off if (movedFromAssetPaths != null && movedFromAssetPaths.Length > 0) { string[] movedFromAssetPathsFinal = movedFromAssetPaths.SelectMany(g => GitManager.GetPathWithMeta(g)).Where(g => GitManager.CanUnstage(GitManager.Repository.RetrieveStatus(g))).ToArray(); if (movedFromAssetPathsFinal.Length > 0) { GitManager.Repository.Unstage(movedFromAssetPathsFinal); GitManager.MarkDirty(movedFromAssetPathsFinal); } } //automatic deletion is necessary even if AutoStage is off if (deletedAssets != null && deletedAssets.Length > 0) { string[] deletedAssetsFinal = deletedAssets.SelectMany(g => GitManager.GetPathWithMeta(g)).Where(g => GitManager.CanUnstage(GitManager.Repository.RetrieveStatus(g))).ToArray(); if (deletedAssetsFinal.Length > 0) { GitManager.Repository.Unstage(deletedAssetsFinal); GitManager.MarkDirty(deletedAssetsFinal); } } } }
private static string[] OnWillSaveAssets(string[] paths) { if (GitManager.Settings != null && GitManager.Settings.AutoStage) { string[] pathsFinal = paths.SelectMany(g => GitManager.GetPathWithMeta(g)).Where(g => GitManager.CanStage(GitManager.Repository.RetrieveStatus(g))).ToArray(); if (pathsFinal.Length > 0) { GitManager.Repository.Stage(pathsFinal); } } GitManager.Update(); return(paths); }
private static string[] OnWillSaveAssets(string[] paths) { if (EditorPrefs.GetBool("UniGit_DisablePostprocess")) { return(paths); } if (GitManager.Settings != null && GitManager.Settings.AutoStage && GitManager.Repository != null && paths != null && paths.Length > 0) { string[] pathsFinal = paths.SelectMany(g => GitManager.GetPathWithMeta(g)).Where(g => GitManager.CanStage(GitManager.Repository.RetrieveStatus(g))).ToArray(); if (pathsFinal.Length > 0) { GitManager.Repository.Stage(pathsFinal); GitManager.MarkDirty(pathsFinal); } } return(paths); }
static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths) { if (GitManager.Settings != null && GitManager.Settings.AutoStage) { if (importedAssets.Length > 0) { string[] importedAssetsFinal = importedAssets.SelectMany(g => GitManager.GetPathWithMeta(g)).Where(g => GitManager.CanStage(GitManager.Repository.RetrieveStatus(g))).ToArray(); if (importedAssetsFinal.Length > 0) { GitManager.Repository.Stage(importedAssetsFinal); } } if (movedAssets.Length > 0) { string[] movedAssetsFinal = movedAssets.SelectMany(g => GitManager.GetPathWithMeta(g)).Where(g => GitManager.CanStage(GitManager.Repository.RetrieveStatus(g))).ToArray(); if (movedAssetsFinal.Length > 0) { GitManager.Repository.Stage(movedAssetsFinal); } } } GitManager.Update(); }
private void AddSelectedCallback() { GitManager.Repository.Stage(statusList.Where(e => e.Selected).SelectMany(e => GitManager.GetPathWithMeta(e.Path))); GitManager.Update(); }
private void RevertSelectedCallback() { GitManager.Repository.CheckoutPaths("HEAD", statusList.Where(e => e.Selected).SelectMany(e => GitManager.GetPathWithMeta(e.Path)), new CheckoutOptions() { CheckoutModifiers = CheckoutModifiers.Force, OnCheckoutProgress = OnRevertProgress }); EditorUtility.ClearProgressBar(); }
private void DoDiffStatusContex(FileStatus fileStatus, GenericMenu menu) { menu.AddItem(new GUIContent("Select All"), false, SelectFilteredCallback, fileStatus); if (GitManager.CanStage(fileStatus)) { menu.AddItem(new GUIContent("Add All"), false, () => { GitManager.Repository.Stage(statusList.Where(s => s.State.IsFlagSet(fileStatus)).SelectMany(s => GitManager.GetPathWithMeta(s.Path))); GitManager.Update(); }); } else { menu.AddDisabledItem(new GUIContent("Add All")); } if (GitManager.CanUnstage(fileStatus)) { menu.AddItem(new GUIContent("Remove All"), false, () => { GitManager.Repository.Unstage(statusList.Where(s => s.State.IsFlagSet(fileStatus)).SelectMany(s => GitManager.GetPathWithMeta(s.Path))); GitManager.Update(); }); } else { menu.AddDisabledItem(new GUIContent("Remove All")); } }
private static void Revet() { var paths = Selection.assetGUIDs.Select(e => AssetDatabase.GUIDToAssetPath(e)).SelectMany(e => GitManager.GetPathWithMeta(e)).ToArray(); if (GitExternalManager.TakeRevert(paths)) { AssetDatabase.Refresh(); GitManager.MarkDirty(paths); return; } GitManager.Repository.CheckoutPaths("HEAD", paths, new CheckoutOptions() { CheckoutModifiers = CheckoutModifiers.Force, OnCheckoutProgress = OnRevertProgress }); EditorUtility.ClearProgressBar(); AssetDatabase.Refresh(); GitManager.MarkDirty(paths); }
private static bool RemoveSelectedValidate() { string[] paths = Selection.assetGUIDs.Select(g => string.IsNullOrEmpty(Path.GetExtension(AssetDatabase.GUIDToAssetPath(g))) ? AssetDatabase.GUIDToAssetPath(g) + ".meta" : AssetDatabase.GUIDToAssetPath(g)).SelectMany(g => GitManager.GetPathWithMeta(g)).ToArray(); return(paths.Any(g => GitManager.CanUnstage(GitManager.Repository.RetrieveStatus(g)))); }
private static void RemoveSelected() { string[] paths = Selection.assetGUIDs.Select(g => AssetDatabase.GUIDToAssetPath(g)).SelectMany(g => GitManager.GetPathWithMeta(g)).ToArray(); GitManager.Repository.Unstage(paths); GitManager.MarkDirty(paths); }
private static bool RevetValidate() { return(Selection.assetGUIDs.Select(e => AssetDatabase.GUIDToAssetPath(e)).SelectMany(e => GitManager.GetPathWithMeta(e)).Where(e => File.Exists(e)).Select(e => GitManager.Repository.RetrieveStatus(e)).Any(e => GitManager.CanStage(e) | GitManager.CanUnstage(e))); }
internal void Build(FileStatus fileStatus, GenericMenu menu, GitDiffWindow window) { menu.AddItem(new GUIContent("Select All"), false, () => SelectFilteredCallback(fileStatus, window)); if (GitManager.CanStage(fileStatus)) { menu.AddItem(new GUIContent("Add All"), false, () => { string[] paths = window.GetStatusList().Where(s => s.State.IsFlagSet(fileStatus)).SelectMany(s => gitManager.GetPathWithMeta(s.LocalPath)).ToArray(); if (gitManager.Threading.IsFlagSet(GitSettingsJson.ThreadingType.Stage)) { gitManager.AsyncStage(paths).onComplete += (o) => { window.Repaint(); }; } else { GitCommands.Stage(gitManager.Repository, paths); gitManager.MarkDirtyAuto(paths); } window.Repaint(); }); } else { menu.AddDisabledItem(new GUIContent("Add All")); } if (GitManager.CanUnstage(fileStatus)) { menu.AddItem(new GUIContent("Remove All"), false, () => { string[] paths = window.GetStatusList().Where(s => s.State.IsFlagSet(fileStatus)).SelectMany(s => gitManager.GetPathWithMeta(s.LocalPath)).ToArray(); if (gitManager.Threading.IsFlagSet(GitSettingsJson.ThreadingType.Unstage)) { gitManager.AsyncUnstage(paths).onComplete += (o) => { window.Repaint(); }; } else { GitCommands.Unstage(gitManager.Repository, paths); gitManager.MarkDirtyAuto(paths); } window.Repaint(); }); } else { menu.AddDisabledItem(new GUIContent("Remove All")); } }
public int Compare(StatusListEntry x, StatusListEntry y) { int stateCompare = window.IsGrouping() ? GetPriority(x.State).CompareTo(GetPriority(y.State)) : 0; if (stateCompare == 0) { var settings = window.GitDiffSettings; if (settings.sortDir == GitDiffWindow.SortDir.Descending) { var oldLeft = x; x = y; y = oldLeft; } if (settings.unstagedChangesPriority) { bool canStageX = GitManager.CanStage(x.State); bool canUnstageX = GitManager.CanUnstage(x.State); bool canStageY = GitManager.CanStage(y.State); bool canUnstageY = GitManager.CanUnstage(y.State); //prioritize upsaged changes that are pending if ((canStageX && canUnstageX) && !(canStageY && canUnstageY)) { return(-1); } if (!(canStageX && canUnstageX) && (canStageY && canUnstageY)) { return(1); } } switch (settings.sortType) { case GitDiffWindow.SortType.Name: stateCompare = string.Compare(x.Name, y.Name, StringComparison.InvariantCultureIgnoreCase); break; case GitDiffWindow.SortType.Path: stateCompare = string.Compare(x.LocalPath, y.LocalPath, StringComparison.InvariantCultureIgnoreCase); break; case GitDiffWindow.SortType.ModificationDate: //todo cache modification dates DateTime modifedTimeLeft = GetClosest(gitManager.GetPathWithMeta(x.LocalPath).Select(p => File.GetLastWriteTime(UniGitPathHelper.Combine(gitManager.GetCurrentRepoPath(), p)))); DateTime modifedRightTime = GetClosest(gitManager.GetPathWithMeta(x.LocalPath).Select(p => File.GetLastWriteTime(UniGitPathHelper.Combine(gitManager.GetCurrentRepoPath(), p)))); stateCompare = DateTime.Compare(modifedRightTime, modifedTimeLeft); break; case GitDiffWindow.SortType.CreationDate: //todo cache creation dates DateTime createdTimeLeft = GetClosest(gitManager.GetPathWithMeta(x.LocalPath).Select(p => File.GetCreationTime(UniGitPathHelper.Combine(gitManager.GetCurrentRepoPath(), p)))); DateTime createdRightTime = GetClosest(gitManager.GetPathWithMeta(y.LocalPath).Select(p => File.GetCreationTime(UniGitPathHelper.Combine(gitManager.GetCurrentRepoPath(), p)))); stateCompare = DateTime.Compare(createdRightTime, createdTimeLeft); break; default: throw new ArgumentOutOfRangeException(); } } if (stateCompare == 0) { stateCompare = String.Compare(x.LocalPath, y.LocalPath, StringComparison.Ordinal); } return(stateCompare); }
private static void Revet() { GitManager.Repository.CheckoutPaths("HEAD", Selection.assetGUIDs.Select(e => AssetDatabase.GUIDToAssetPath(e)).SelectMany(e => GitManager.GetPathWithMeta(e)), new CheckoutOptions() { CheckoutModifiers = CheckoutModifiers.Force, OnCheckoutProgress = OnRevertProgress }); EditorUtility.ClearProgressBar(); GitManager.Update(); AssetDatabase.Refresh(); }
private static void RemoveSelected() { GitManager.Repository.Unstage(Selection.assetGUIDs.Select(g => AssetDatabase.GUIDToAssetPath(g)).SelectMany(g => GitManager.GetPathWithMeta(g))); GitManager.Update(); }