public override void OnOpen() { base.OnOpen(); stashCollection = gitManager.Repository.Stashes; stashStyle = new GUIStyle("MenuItem") { wordWrap = true, fixedHeight = 0, normal = { background = ((GUIStyle)"ProjectBrowserHeaderBgTop").normal.background } }; }
public StashManagerDialog (GitRepository repo) { this.Build (); stashes = repo.GetStashes (); store = new ListStore (typeof(Stash), typeof(string), typeof(string)); list.Model = store; list.AppendColumn (GettextCatalog.GetString ("Date/Time"), new CellRendererText (), "text", 1); list.AppendColumn (GettextCatalog.GetString ("Comment"), new CellRendererText (), "text", 2); Fill (); TreeIter it; if (store.GetIterFirst (out it)) list.Selection.SelectIter (it); UpdateButtons (); }
public StashManagerDialog (GitRepository repo) { this.Build (); this.UseNativeContextMenus (); repository = repo; stashes = repo.GetStashes (); store = new ListStore (typeof(Stash), typeof(string), typeof(string)); list.Model = store; list.SearchColumn = -1; // disable the interactive search list.AppendColumn (GettextCatalog.GetString ("Date/Time"), new CellRendererText (), "text", 1); list.AppendColumn (GettextCatalog.GetString ("Comment"), new CellRendererText (), "text", 2); Fill (); TreeIter it; if (store.GetIterFirst (out it)) list.Selection.SelectIter (it); UpdateButtons (); list.Selection.Changed += delegate { UpdateButtons (); }; }
Stash GetStashForBranch (StashCollection stashes, string branchName) { string sn = GetStashName (branchName); foreach (Stash ss in stashes) { if (ss.Comment.IndexOf (sn) != -1) return ss; } return null; }
static Stash GetStashForBranch (StashCollection stashes, string branchName) { string sn = GetStashName (branchName); foreach (Stash ss in stashes) { if (ss.Comment.IndexOf (sn, StringComparison.InvariantCulture) != -1) return ss; } return null; }
static int GetStashForBranch (StashCollection stashes, string branchName) { string sn = GetStashName (branchName); int count = stashes.Count (); for (int i = 0; i < count; ++i) { if (stashes[i].Message.IndexOf (sn, StringComparison.InvariantCulture) != -1) return i; } return -1; }
public void Merge (string branch, bool saveLocalChanges, IProgressMonitor monitor) { IEnumerable<Change> statusList = null; Stash stash = null; StashCollection stashes = new StashCollection (repo); monitor.BeginTask (null, 4); try { // Get a list of files that are different in the target branch statusList = GitUtil.GetChangedFiles (repo, branch); monitor.Step (1); if (saveLocalChanges) { monitor.BeginTask (GettextCatalog.GetString ("Merging"), 3); monitor.Log.WriteLine (GettextCatalog.GetString ("Saving local changes")); using (var gm = new GitMonitor (monitor)) stash = stashes.Create (gm, GetStashName ("_tmp_")); monitor.Step (1); } // Apply changes ObjectId branchId = repo.Resolve (branch); NGit.Api.Git git = new NGit.Api.Git (repo); MergeCommandResult mergeResult = git.Merge ().SetStrategy (MergeStrategy.RESOLVE).Include (branchId).Call (); if (mergeResult.GetMergeStatus () == MergeStatus.CONFLICTING || mergeResult.GetMergeStatus () == MergeStatus.FAILED) { var conflicts = mergeResult.GetConflicts (); bool commit = true; if (conflicts != null) { foreach (string conflictFile in conflicts.Keys) { ConflictResult res = ResolveConflict (FromGitPath (conflictFile)); if (res == ConflictResult.Abort) { GitUtil.HardReset (repo, GetHeadCommit ()); commit = false; break; } else if (res == ConflictResult.Skip) { Revert (FromGitPath (conflictFile), false, monitor); break; } } } if (commit) git.Commit ().Call (); } } finally { if (saveLocalChanges) monitor.Step (1); // Restore local changes if (stash != null) { monitor.Log.WriteLine (GettextCatalog.GetString ("Restoring local changes")); using (var gm = new GitMonitor (monitor)) stash.Apply (gm); stashes.Remove (stash); monitor.EndTask (); } } monitor.Step (1); // Notify changes if (statusList != null) NotifyFileChanges (monitor, statusList); monitor.EndTask (); }