コード例 #1
0
        internal override void OnGUI(Rect rect, Event current)
        {
            GitSettingsJson settings = GitManager.Settings;

            if (settings == null)
            {
                return;
            }

            EditorGUI.BeginChangeCheck();
            settings.ExternalsType = (GitSettings.ExternalsTypeEnum)EditorGUILayout.EnumMaskField(GitGUI.GetTempContent("External Program Uses", "Use an external program for more advanced features like pushing, pulling, merging and so on"), settings.ExternalsType);
            if (EditorGUI.EndChangeCheck())
            {
                settings.MarkDirty();
            }

            EditorGUI.BeginChangeCheck();
            int newSelectedIndex = EditorGUILayout.Popup(GitGUI.GetTempContent("External Program", "The name of the External program to use"), GitExternalManager.SelectedAdapterIndex, GitExternalManager.AdapterNames);

            settings.ExternalProgram = GitExternalManager.AdapterNames[newSelectedIndex].text;
            if (EditorGUI.EndChangeCheck())
            {
                GitExternalManager.SetSelectedAdapter(newSelectedIndex);
                settings.MarkDirty();
            }

            EditorGUILayout.HelpBox("Using external programs is always recommended as UniGit is still in development.", MessageType.Info);
        }
コード例 #2
0
        public bool Revert(IEnumerable <string> paths)
        {
            string path = paths.FirstOrDefault();

            if (path != null)
            {
                return(GitExternalManager.CallProccess("GitExtensions.exe", "revert " + path));
            }
            return(false);
        }
コード例 #3
0
 public GitExternalsSettingsTab(GitManager gitManager,
                                GitSettingsWindow settingsWindow,
                                GitExternalManager externalManager,
                                UniGitData data,
                                GitSettingsJson gitSettings,
                                GitCallbacks gitCallbacks,
                                GitInitializer initializer)
     : base(new GUIContent("Externals", "External Programs Helpers"), gitManager, settingsWindow, data, gitSettings, gitCallbacks, initializer)
 {
     this.externalManager = externalManager;
 }
コード例 #4
0
 public void Conflict(string left, string right, string ansestor, string merge, Type assetType)
 {
     if (assetType == typeof(Texture) || assetType.IsSubclassOf(typeof(Texture)))
     {
         GitExternalManager.CallProccess("TortoiseGitIDiff.exe", "-right:\"{1}\" -left:\"{2}\" -merged:\"{3}\"", ansestor, right, left, merge);
     }
     else
     {
         GitExternalManager.CallProccess("TortoiseGitMerge.exe", "-base:\"{0}\" -mine:\"{1}\" -theirs:\"{2}\" -merged:\"{3}\"", ansestor, right, left, merge);
     }
 }
コード例 #5
0
 public void Diff(string leftTitle, string leftPath, string rightTitle, string rightPath, Type assetType)
 {
     if (assetType == typeof(Texture) || assetType.IsSubclassOf(typeof(Texture)))
     {
         GitExternalManager.CallProccess("TortoiseGitIDiff.exe", "-left:\"{0}\" -lefttitle:\"{1}\" -right:\"{2}\" -righttitle:\"{3}\"", leftPath, leftTitle, rightPath, rightTitle);
     }
     else
     {
         GitExternalManager.CallProccess("TortoiseGitMerge.exe", "-base:\"{0}\" -basename:\"{1}\" -mine:\"{2}\" -minename:\"{3}\" -base", leftPath, leftTitle, rightPath, rightTitle);
     }
 }
コード例 #6
0
 public GitBranchesSettingsTab(GitManager gitManager,
                               GitSettingsWindow settingsWindow,
                               GitExternalManager externalManager,
                               InjectionHelper injectionHelper,
                               UniGitData data,
                               ILogger logger,
                               GitSettingsJson gitSettings,
                               GitCallbacks gitCallbacks,
                               GitInitializer initializer)
     : base(new GUIContent("Branches"), gitManager, settingsWindow, data, gitSettings, gitCallbacks, initializer)
 {
     this.injectionHelper = injectionHelper;
     this.externalManager = externalManager;
     this.logger          = logger;
 }
コード例 #7
0
        public bool CallProccess(string name, string parameters)
        {
            string fullPath = GitExternalManager.GetFullPath(name);

            if (fullPath != null)
            {
                ProcessStartInfo startInfo = new ProcessStartInfo
                {
                    CreateNoWindow         = false,
                    UseShellExecute        = false,
                    FileName               = fullPath,
                    WorkingDirectory       = gitManager.RepoPath,
                    WindowStyle            = ProcessWindowStyle.Hidden,
                    RedirectStandardOutput = true,
                    Arguments              = parameters
                };

                try
                {
                    // Start the process with the info we specified.
                    // Call WaitForExit and then the using statement will close.
                    using (Process exeProcess = Process.Start(startInfo))
                    {
                        if (exeProcess == null)
                        {
                            return(false);
                        }
                        exeProcess.WaitForExit();
                        return(true);
                    }
                }
                catch
                {
                    return(false);
                }
            }
            return(false);
        }
コード例 #8
0
ファイル: TortoiseGitAdapter.cs プロジェクト: bp-bling/UniGit
 public bool Switch()
 {
     GitExternalManager.CallProccess("TortoiseGitProc.exe", "-command:\"{0}\" -path:\"{1}\"", "switch", GitManager.RepoPath);
     return(true);
 }
コード例 #9
0
ファイル: TortoiseGitAdapter.cs プロジェクト: bp-bling/UniGit
 public bool Diff(string path, Commit start, Commit end)
 {
     GitExternalManager.CallProccess("TortoiseGitProc.exe", "-command:\"{0}\" -path:\"{1}\" -startrev:\"{2}\" -endrev:\"{3}\"", "diff", path, start.Sha, end.Sha);
     return(true);
 }
コード例 #10
0
 public GitExternalsSettingsTab(GitManager gitManager, GitSettingsWindow settingsWindow, GitExternalManager externalManager)
     : base(new GUIContent("Externals", "External Programs Helpers"), gitManager, settingsWindow)
 {
     this.externalManager = externalManager;
 }
コード例 #11
0
 public bool Diff(string path, Commit end)
 {
     return(GitExternalManager.CallProccess("GitExtensions.exe", "viewdiff"));
 }
コード例 #12
0
 public bool Conflict(string path)
 {
     return(GitExternalManager.CallProccess("GitExtensions.exe", "mergeconflicts"));
 }
コード例 #13
0
 public bool Commit(string message)
 {
     return(GitExternalManager.CallProccess("GitExtensions.exe", "commit"));
 }
コード例 #14
0
 public bool Merge()
 {
     return(GitExternalManager.CallProccess("GitExtensions.exe", "mergetool"));
 }
コード例 #15
0
 public void Merge()
 {
     GitExternalManager.CallProccess("TortoiseGitProc.exe", "-command:\"{0}\" -path:\"{1}\"", "merge", GitManager.RepoPath);
 }
コード例 #16
0
 public GitBranchesSettingsTab(GitManager gitManager, GitSettingsWindow settingsWindow, GitExternalManager externalManager)
     : base(new GUIContent("Branches"), gitManager, settingsWindow)
 {
     this.externalManager = externalManager;
 }
コード例 #17
0
 public bool Blame(string path)
 {
     GitExternalManager.CallProccess("TortoiseGitProc.exe", "-command:\"{0}\" -path:\"{1}\"", "blame", path);
     return(true);
 }
コード例 #18
0
 public bool Reset(Commit commit)
 {
     return(GitExternalManager.CallProccess("GitExtensions.exe", "reset"));
 }
コード例 #19
0
ファイル: TortoiseGitAdapter.cs プロジェクト: bp-bling/UniGit
 public bool Commit(string message)
 {
     GitExternalManager.CallProccess("TortoiseGitProc.exe", "-command:\"{0}\" -path:\"{1}\" -logmsg:\"{2}\"", "commit", GitManager.RepoPath, message);
     return(true);
 }
コード例 #20
0
 public bool Pull()
 {
     return(GitExternalManager.CallProccess("GitExtensions.exe", "pull"));
 }
コード例 #21
0
ファイル: TortoiseGitAdapter.cs プロジェクト: bp-bling/UniGit
 public bool Fetch(string remote)
 {
     GitExternalManager.CallProccess("TortoiseGitProc.exe", "-command:\"{0}\" -remote:\"{1}\"", "fetch", remote);
     return(true);
 }
コード例 #22
0
 public bool Fetch(string remote)
 {
     return(GitExternalManager.CallProccess("GitExtensions.exe", "pull --fetch"));
 }
コード例 #23
0
ファイル: TortoiseGitAdapter.cs プロジェクト: bp-bling/UniGit
 public bool Revert(IEnumerable <string> paths)
 {
     GitExternalManager.CallProccess("TortoiseGitProc.exe", "-command:\"{0}\" -path:\"{1}\"", "revert", string.Join("*", paths.ToArray()));
     return(true);
 }
コード例 #24
0
 public bool Diff(string path, Commit start, Commit end)
 {
     return(GitExternalManager.CallProccess("GitExtensions.exe", "filehistory " + path));
 }
コード例 #25
0
ファイル: TortoiseGitAdapter.cs プロジェクト: bp-bling/UniGit
 public bool Conflict(string path)
 {
     GitExternalManager.CallProccess("TortoiseGitProc.exe", "-command:\"{0}\" -path:\"{1}\"", "conflicteditor", path);
     return(true);
 }
コード例 #26
0
 public bool Blame(string path)
 {
     return(GitExternalManager.CallProccess("GitExtensions.exe", "blame " + path));
 }
コード例 #27
0
ファイル: TortoiseGitAdapter.cs プロジェクト: bp-bling/UniGit
 public bool Diff(string path, string path2)
 {
     GitExternalManager.CallProccess("TortoiseGitProc.exe", "-command:\"{0}\" -path:\"{1}\" -path2:\"{2}\"", "diff", path, path2);
     return(true);
 }
コード例 #28
0
 public bool Switch()
 {
     return(GitExternalManager.CallProccess("GitExtensions.exe", "checkout"));
 }
コード例 #29
0
        private void DoBranch(Branch branch, BranchCollection branchCollection)
        {
            bool isHead = branch.IsCurrentRepositoryHead;

            GUIContent titleContent = GitGUI.GetTempContent(branch.FriendlyName);

            if (isHead)
            {
                titleContent.text += " (HEAD)";
            }
            if (branch.IsRemote)
            {
                titleContent.image = GitGUI.IconContentTex("ToolHandleGlobal");
            }

            GUILayout.Label(titleContent, isHead ? "IN BigTitle" : "ShurikenModuleTitle", GUILayout.ExpandWidth(true));
            int selectedRemote = Array.IndexOf(remoteCacheList, branch.Remote);

            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.PrefixLabel(GitGUI.GetTempContent("Remote"));
            if (remoteNames != null)
            {
                EditorGUI.BeginChangeCheck();
                int newSelectedRemote = EditorGUILayout.Popup(selectedRemote, remoteNames);
                if (EditorGUI.EndChangeCheck() && selectedRemote != newSelectedRemote)
                {
                    branchCollection.Update(branch, (u) =>
                    {
                        u.Remote         = remoteCacheList[newSelectedRemote].Name;
                        u.UpstreamBranch = branch.CanonicalName;
                    });
                }
            }
            else
            {
                GUILayout.Button(new GUIContent("No Remotes"));
            }
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.TextField(GitGUI.GetTempContent("Upstream Branch"), branch.UpstreamBranchCanonicalName);
            EditorGUILayout.BeginHorizontal();
            GUILayout.FlexibleSpace();
            GUI.enabled = remoteCacheList != null && remoteCacheList.Length < selectedRemote;
            if (GUILayout.Button(GitGUI.GetTempContent("Save", "Send branch changes to selected remote."), "minibuttonleft"))
            {
                branchCollection.Update(branch, (u) =>
                {
                    u.Remote         = remoteCacheList[selectedRemote].Name;
                    u.UpstreamBranch = branch.CanonicalName;
                });
            }
            GUI.enabled = !branch.IsRemote && !isHead;
            Rect switchButtonRect = GUILayoutUtility.GetRect(GitGUI.GetTempContent("Switch"), "minibuttonmid");

            if (GUI.Button(switchButtonRect, GitGUI.GetTempContent("Switch"), "minibuttonmid"))
            {
                if (GitExternalManager.TakeSwitch())
                {
                    AssetDatabase.Refresh();
                    GitManager.MarkDirty();
                }
                else
                {
                    PopupWindow.Show(switchButtonRect, new GitCheckoutWindowPopup(branch));
                }
            }
            GUI.enabled = !isHead;
            if (GUILayout.Button(GitGUI.GetTempContent("Delete", branch.IsCurrentRepositoryHead ? "Can not delete head branch" : ""), "minibuttonmid"))
            {
                if (EditorUtility.DisplayDialog("Delete Branch", "Are you sure you want do delete a branch? This action can not be undone.", "Delete", "Cancel"))
                {
                    try
                    {
                        GitManager.Repository.Branches.Remove(branch);
                        GitManager.MarkDirty(true);
                    }
                    catch (Exception e)
                    {
                        Debug.Log("Could not delete branch: " + branch.CanonicalName);
                        Debug.LogException(e);
                    }
                }
            }
            GUI.enabled = !branch.IsRemote;
            if (GUILayout.Button(GitGUI.GetTempContent("Reset", "Reset branch properties."), "minibuttonright"))
            {
                branchCollection.Update(branch, (u) =>
                {
                    u.Remote         = "";
                    u.UpstreamBranch = "";
                });
            }
            GUI.enabled = true;
            GUILayout.FlexibleSpace();
            EditorGUILayout.EndHorizontal();
        }