From 5746f2f7a5b70715cb492d655fb46c693fd982c3 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Sun, 29 Aug 2010 14:34:53 +0200 Subject: [PATCH] GitAddin: Fixed removing files with status 'Added' --- src/AddIns/VersionControl/GitAddIn/Src/Git.cs | 11 +++++++++++ .../GitAddIn/Src/RegisterEventsCommand.cs | 10 ++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/AddIns/VersionControl/GitAddIn/Src/Git.cs b/src/AddIns/VersionControl/GitAddIn/Src/Git.cs index 7d0d321760..eb1d9073ff 100644 --- a/src/AddIns/VersionControl/GitAddIn/Src/Git.cs +++ b/src/AddIns/VersionControl/GitAddIn/Src/Git.cs @@ -61,6 +61,17 @@ namespace ICSharpCode.GitAddIn RunGit(wcRoot, "add " + AdaptFileName(wcRoot, fileName), callback); } + public static void Remove(string fileName, bool indexOnly, Action callback) + { + string wcRoot = FindWorkingCopyRoot(fileName); + if (wcRoot == null) + return; + if (indexOnly) + RunGit(wcRoot, "rm --cached " + AdaptFileName(wcRoot, fileName), callback); + else + RunGit(wcRoot, "rm " + AdaptFileName(wcRoot, fileName), callback); + } + public static string AdaptFileName(string wcRoot, string fileName) { return '"' + AdaptFileNameNoQuotes(wcRoot, fileName) + '"'; diff --git a/src/AddIns/VersionControl/GitAddIn/Src/RegisterEventsCommand.cs b/src/AddIns/VersionControl/GitAddIn/Src/RegisterEventsCommand.cs index 63326499fa..9b3a20fab0 100644 --- a/src/AddIns/VersionControl/GitAddIn/Src/RegisterEventsCommand.cs +++ b/src/AddIns/VersionControl/GitAddIn/Src/RegisterEventsCommand.cs @@ -30,10 +30,16 @@ namespace ICSharpCode.GitAddIn public override void Run() { FileService.FileCreated += (sender, args) => { - Git.Add(args.FileName, + Git.Add(args.FileName, exitcode => WorkbenchSingleton.SafeThreadAsyncCall(ClearStatusCacheAndEnqueueFile, args.FileName) ); }; + FileService.FileRemoved += (sender, args) => { + if (GitStatusCache.GetFileStatus(args.FileName) == GitStatus.Added) { + Git.Remove(args.FileName, true, + exitcode => WorkbenchSingleton.SafeThreadAsyncCall(ClearStatusCacheAndEnqueueFile, args.FileName)); + } + }; FileUtility.FileSaved += (sender, e) => { ClearStatusCacheAndEnqueueFile(e.FileName); }; @@ -67,7 +73,7 @@ namespace ICSharpCode.GitAddIn if (pad == null) return; FileNode node = pad.ProjectBrowserControl.FindFileNode(fileName); if (node == null) return; - OverlayIconManager.EnqueueParents(node); + OverlayIconManager.EnqueueParents(node); } } }