Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/main/src
diff options
context:
space:
mode:
authorUngureanu Marius <teromario@yahoo.com>2013-08-21 20:23:09 +0400
committerUngureanu Marius <teromario@yahoo.com>2013-08-21 20:23:09 +0400
commit41d6f980cf53430df035314ca63fe8aa814b80be (patch)
treeae32626922d0d8a179c8122cdee854bfc1a61e24 /main/src
parentef2bcb46586b16d17c57d5356b7072d4ef1e5d0a (diff)
parent658a65aea6d79d0dd9b30ceec5a711bb8bba01d1 (diff)
Merge pull request #381 from mono/mergecsproj
[Version Control] Resolve Conflicts command for broken projects/solutions.
Diffstat (limited to 'main/src')
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/MonoDevelop.VersionControl.Subversion/SubversionNodeExtension.cs19
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/EditorCompareWidgetBase.cs4
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/SubviewAttachmentHandler.cs20
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.csproj1
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/Commands.cs3
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/ResolveConflictsCommand.cs52
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlCommandHandler.cs5
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlNodeExtension.cs20
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/VersionControl.addin.xml4
9 files changed, 115 insertions, 13 deletions
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/MonoDevelop.VersionControl.Subversion/SubversionNodeExtension.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/MonoDevelop.VersionControl.Subversion/SubversionNodeExtension.cs
index 2fe6ae665c..b31938e789 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/MonoDevelop.VersionControl.Subversion/SubversionNodeExtension.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/MonoDevelop.VersionControl.Subversion/SubversionNodeExtension.cs
@@ -72,20 +72,23 @@ namespace MonoDevelop.VersionControl.Subversion
[CommandUpdateHandler (Commands.Resolve)]
protected void UpdateResolve (CommandInfo item)
{
- foreach (VersionControlItem vit in GetItems ()) {
+ foreach (VersionControlItem vit in GetItems (false)) {
if (!(vit.Repository is SubversionRepository)) {
item.Visible = false;
return;
}
- if (!vit.IsDirectory) {
- VersionInfo vi = vit.Repository.GetVersionInfo (vit.Path);
- if (vi != null && (vi.Status & VersionStatus.Conflicted) == 0) {
- item.Visible = false;
- return;
- }
+ if (vit.IsDirectory) {
+ item.Visible = false;
+ return;
}
- }
+
+ VersionInfo vi = vit.Repository.GetVersionInfo (vit.Path);
+ if (vi != null && (vi.Status & VersionStatus.Conflicted) == 0) {
+ item.Visible = false;
+ return;
+ }
+ }
}
}
}
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/EditorCompareWidgetBase.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/EditorCompareWidgetBase.cs
index 42e827a26b..a3acb31b22 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/EditorCompareWidgetBase.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/EditorCompareWidgetBase.cs
@@ -446,7 +446,9 @@ namespace MonoDevelop.VersionControl.Views
hscrollbar.Destroy ();
}
- children.ForEach (child => child.Child.Destroy ());
+ foreach (var child in children.ToArray ()) {
+ child.Child.Destroy ();
+ }
base.OnDestroyed ();
}
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/SubviewAttachmentHandler.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/SubviewAttachmentHandler.cs
index b311c05a05..917c7e8a34 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/SubviewAttachmentHandler.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/SubviewAttachmentHandler.cs
@@ -30,6 +30,7 @@ using Mono.Addins;
using MonoDevelop.VersionControl;
using MonoDevelop.Ide.Gui;
using MonoDevelop.Core.LogReporting;
+using MonoDevelop.Projects;
namespace MonoDevelop.VersionControl.Views
{
@@ -44,10 +45,23 @@ namespace MonoDevelop.VersionControl.Views
{
var document = Ide.IdeApp.Workbench.ActiveDocument;
try {
- if (document == null || !document.IsFile || document.Project == null || document.Window.FindView<IDiffView> () >= 0)
+ if (document == null || !document.IsFile || document.Window.FindView<IDiffView> () >= 0)
return;
+
+ IWorkspaceObject project = document.Project;
+ if (project == null) {
+ // Fix for broken .csproj and .sln files not being seen as having a project.
+ foreach (var projItem in Ide.IdeApp.Workspace.GetAllSolutionItems<UnknownSolutionItem> ()) {
+ if (projItem.FileName == document.FileName) {
+ project = projItem;
+ }
+ }
+
+ if (project == null)
+ return;
+ }
- var repo = VersionControlService.GetRepository (document.Project);
+ var repo = VersionControlService.GetRepository (project);
if (repo == null)
return;
@@ -55,7 +69,7 @@ namespace MonoDevelop.VersionControl.Views
if (!versionInfo.IsVersioned)
return;
- var item = new VersionControlItem (repo, document.Project, document.FileName, false, null);
+ var item = new VersionControlItem (repo, project, document.FileName, false, null);
var vcInfo = new VersionControlDocumentInfo (document.PrimaryView, item, item.Repository);
TryAttachView <IDiffView> (document, vcInfo, DiffCommand.DiffViewHandlers);
TryAttachView <IBlameView> (document, vcInfo, BlameCommand.BlameViewHandlers);
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.csproj b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.csproj
index 5919e2a283..c4058cc3f7 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.csproj
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.csproj
@@ -236,6 +236,7 @@
<Compile Include="MonoDevelop.VersionControl\BlameCommand.cs" />
<Compile Include="MonoDevelop.VersionControl\VersionInfoCache.cs" />
<Compile Include="MonoDevelop.VersionControl\IgnoreCommand.cs" />
+ <Compile Include="MonoDevelop.VersionControl\ResolveConflictsCommand.cs" />
</ItemGroup>
<ItemGroup>
<None Include="Makefile.am" />
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/Commands.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/Commands.cs
index a6f81f02a8..80aa37a43a 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/Commands.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/Commands.cs
@@ -26,7 +26,8 @@ namespace MonoDevelop.VersionControl
HideAnnotations,
CreatePatch,
Ignore,
- Unignore
+ Unignore,
+ ResolveConflicts
}
class SolutionVersionControlCommandHandler: CommandHandler
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/ResolveConflictsCommand.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/ResolveConflictsCommand.cs
new file mode 100644
index 0000000000..c288504686
--- /dev/null
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/ResolveConflictsCommand.cs
@@ -0,0 +1,52 @@
+//
+// ResolveConflictsCommands.cs
+//
+// Author:
+// Therzok <teromario@yahoo.com>
+//
+// Copyright (c) 2013 Therzok
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+using MonoDevelop.Ide;
+using MonoDevelop.VersionControl.Views;
+using MonoDevelop.Ide.Gui;
+
+namespace MonoDevelop.VersionControl
+{
+ public class ResolveConflictsCommand
+ {
+ public static bool ResolveConflicts (VersionControlItemList list, bool test)
+ {
+ VersionStatus status = list [0].VersionInfo.Status;
+ bool conflicted = (status & VersionStatus.Conflicted) == VersionStatus.Conflicted;
+ if (test)
+ return conflicted;
+
+ foreach (var item in list) {
+ Document doc = IdeApp.Workbench.OpenDocument (item.Path, true);
+ foreach (var view in doc.Views) {
+ if (view.GetContent <MergeView> () != null)
+ view.Select ();
+ }
+ }
+ return true;
+ }
+ }
+}
+
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlCommandHandler.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlCommandHandler.cs
index ebf2a95537..90a1a020a5 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlCommandHandler.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlCommandHandler.cs
@@ -99,6 +99,11 @@ namespace MonoDevelop.VersionControl
path = proj.FileName;
isDir = false;
pentry = proj;
+ } else if (!projRecurse && obj is UnknownSolutionItem) {
+ UnknownSolutionItem item = (UnknownSolutionItem)obj;
+ path = item.FileName;
+ isDir = false;
+ pentry = item;
} else if (obj is IWorkspaceObject) {
pentry = ((IWorkspaceObject)obj);
path = pentry.BaseDirectory;
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlNodeExtension.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlNodeExtension.cs
index 1c2bd2a11e..53bff837a2 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlNodeExtension.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlNodeExtension.cs
@@ -411,6 +411,23 @@ namespace MonoDevelop.VersionControl
TestCommand(Commands.Unignore, item);
}
+ [CommandHandler (Commands.ResolveConflicts)]
+ protected void OnResolveConflicts ()
+ {
+ RunCommand (Commands.ResolveConflicts, false, false);
+ }
+
+ [CommandUpdateHandler (Commands.ResolveConflicts)]
+ protected void UpdateResolveConflicts (CommandInfo item)
+ {
+ if (!(CurrentNode.DataItem is UnknownSolutionItem)) {
+ item.Visible = false;
+ return;
+ }
+
+ TestCommand (Commands.ResolveConflicts, item, false);
+ }
+
private void TestCommand(Commands cmd, CommandInfo item, bool projRecurse = true)
{
TestResult res = RunCommand(cmd, true, projRecurse);
@@ -484,6 +501,9 @@ namespace MonoDevelop.VersionControl
case Commands.Unignore:
res = UnignoreCommand.Unignore (items, test);
break;
+ case Commands.ResolveConflicts:
+ res = ResolveConflictsCommand.ResolveConflicts (items, test);
+ break;
}
}
catch (Exception ex) {
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/VersionControl.addin.xml b/main/src/addins/VersionControl/MonoDevelop.VersionControl/VersionControl.addin.xml
index 7cd5d5b5f5..d0d84d596a 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/VersionControl.addin.xml
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/VersionControl.addin.xml
@@ -194,6 +194,9 @@
<Command id = "MonoDevelop.VersionControl.Commands.Unignore"
_label = "Remove from ignore list"
description = "Add items to version control ignore list"/>
+ <Command id = "MonoDevelop.VersionControl.Commands.ResolveConflicts"
+ _label = "Resolve Conflicts"
+ description = "Resolve conflicts on the project file."/>
<Command id = "MonoDevelop.VersionControl.Views.BlameCommands.CopyRevision"
_label = "_Copy revision"/>
@@ -246,6 +249,7 @@
<Extension path = "/MonoDevelop/Ide/ContextMenu/ProjectPad">
<Condition id="ItemType" value="IFileItem|IFolderItem">
<ItemSet id = "VersionControl" _label = "_Version Control" insertafter = "Tools">
+ <CommandItem id = "MonoDevelop.VersionControl.Commands.ResolveConflicts"/>
<Condition id="ItemType" value="Project|WorkspaceItem">
<CommandItem id = "MonoDevelop.VersionControl.Commands.Publish"/>
</Condition>