private static bool RevertInternal (VersionControlItemList items, bool test)
		{
			try {
				if (test) {
					foreach (VersionControlItem item in items)
						if (!item.Repository.CanRevert (item.Path))
							return false;
					return true;
				}

				if (MessageService.AskQuestion (GettextCatalog.GetString ("Are you sure you want to revert the changes done in the selected files?"), 
				                                GettextCatalog.GetString ("All changes made to the selected files will be permanently lost."),
				                                AlertButton.Cancel, AlertButton.Revert) != AlertButton.Revert)
					return false;

				new RevertWorker (items).Start();
				return true;
			}
			catch (Exception ex) {
				if (test)
					LoggingService.LogError (ex.ToString ());
				else
					MessageService.ShowException (ex, GettextCatalog.GetString ("Version control command failed."));
				return false;
			}
		}
Пример #2
0
		public static void Show (VersionControlItemList items)
		{
			foreach (VersionControlItem item in items) {
				var document = IdeApp.Workbench.OpenDocument (item.Path, OpenDocumentOptions.Default | OpenDocumentOptions.OnlyInternalViewer);
				DiffView.AttachViewContents (document, item);
				document.Window.SwitchView (document.Window.FindView (typeof (MergeView)));
			}
		}
Пример #3
0
		public static void Show (VersionControlItemList items)
		{
			foreach (VersionControlItem item in items) {
				var document = IdeApp.Workbench.OpenDocument (item.Path);
				DiffView.AttachViewContents (document, item);
				document.Window.SwitchView (document.Window.FindView (typeof(BlameView)));
			}
		}
Пример #4
0
		public static void Show (VersionControlItemList items)
		{
			foreach (VersionControlItem item in items) {
				var document = IdeApp.Workbench.OpenDocument (item.Path);
				ComparisonView.AttachViewContents (document, item);
				document.Window.SwitchView (3);
			}
		}
Пример #5
0
		protected VersionControlItemList GetItems ()
		{
			VersionControlItemList list = new VersionControlItemList ();
			VersionControlItem it = GetItem ();
			if (it != null)
				list.Add (it);
			return list;
		}
		public static bool Revert (VersionControlItemList items, bool test)
		{
			if (RevertInternal (items, test)) {
				foreach (var itemPath in items.Paths)
					VersionControlService.SetCommitComment (itemPath, string.Empty, true);
				return true;
			}
			return false;
		}
Пример #7
0
		public static bool Show (VersionControlItemList items, bool test)
		{
			if (!test) {
				Show (items);
				return true;
			}
			else
				return items.Count > 0 && CanShow (items[0].Repository, items[0].Path);
		}
Пример #8
0
		public static bool Show (VersionControlItemList items, bool test)
		{
			if (!test) {
				Show (items);
				return true;
			}
			else
				return items.All (i => i.VersionInfo.CanAnnotate);
		}
Пример #9
0
		public static bool CanShow (VersionControlItemList items, Revision since)
		{
			bool found = false;
			foreach (VersionControlItem item in items) {
				if (item.Repository.IsHistoryAvailable (item.Path)) {
					return true;
				}
			}
			return found;
		}
Пример #10
0
		public static bool Add (VersionControlItemList items, bool test)
		{
			if (!items.All (i => i.VersionInfo.CanAdd))
				return false;
			if (test)
				return true;
			
			new AddWorker (items).Start();
			return true;
		}
		public static bool Unlock (VersionControlItemList items, bool test)
		{
			foreach (VersionControlItem it in items)
				if (!it.Repository.CanUnlock (it.Path))
					return false;
			if (test)
				return true;
			
			new UnlockWorker (items).Start();
			return true;
		}
Пример #12
0
		public static void Show (VersionControlItemList items, Revision since)
		{
			foreach (VersionControlItem item in items) {
				if (!item.IsDirectory) {
					var document = IdeApp.Workbench.OpenDocument (item.Path);
					DiffView.AttachViewContents (document, item);
					document.Window.SwitchView (document.Window.FindView (typeof(LogView)));
				} else if (item.Repository.IsHistoryAvailable (item.Path)) {
					new Worker (item.Repository, item.Path, item.IsDirectory, since).Start ();
				}
			}
		}
Пример #13
0
		public static void Show (VersionControlItemList items, Revision since)
		{
			foreach (VersionControlItem item in items) {
				if (!item.IsDirectory) {
					var document = IdeApp.Workbench.OpenDocument (item.Path, OpenDocumentOptions.Default | OpenDocumentOptions.OnlyInternalViewer);
					DiffView.AttachViewContents (document, item);
					document.Window.SwitchView (document.Window.FindView (typeof(LogView)));
				} else if (item.VersionInfo.CanLog) {
					new Worker (item.Repository, item.Path, item.IsDirectory, since).Start ();
				}
			}
		}
Пример #14
0
		public static bool Commit (VersionControlItemList items, bool test)
		{
			int filesToCommit = 0;
			VersionControlItemList[] itemListsByRepo = items.SplitByRepository ();

			foreach (VersionControlItemList itemList in itemListsByRepo) {
				// Generate base folder path.
				FilePath basePath = itemList.FindMostSpecificParent ();
				Repository repo = itemList.First ().Repository;

				ChangeSet cset = repo.CreateChangeSet (basePath);
				cset.GlobalComment = VersionControlService.GetCommitComment (cset.BaseLocalPath);

				foreach (var item in itemList) {
					if (!item.VersionInfo.CanCommit)
						continue;

					if (item.Path.IsDirectory) {
						// We don't run checks for directories, we throw dialog if there are no changes.
						if (test)
							return true;

						foreach (VersionInfo vi in repo.GetDirectoryVersionInfo (item.Path, false, true))
							if (vi.HasLocalChanges) {
								filesToCommit++;
								cset.AddFile (vi);
							}
					} else {
						VersionInfo vi = repo.GetVersionInfo (item.Path);
						if (vi.HasLocalChanges) {
							if (test)
								return true;

							filesToCommit++;
							cset.AddFile (vi);
						}
					}
				}

				// In case of no local changes.
				if (test)
					return false;

				if (!cset.IsEmpty) {
					Commit (repo, cset, false);
				} else {
					MessageService.ShowMessage (GettextCatalog.GetString ("There are no changes to be committed."));
					continue;
				}
			}
			return filesToCommit != 0;
		}
Пример #15
0
		public static bool Show (VersionControlItemList items, bool test)
		{
			if (test)
				return items.All (CanShow);
			
			foreach (var item in items) {
				var document = IdeApp.Workbench.OpenDocument (item.Path, item.ContainerProject, OpenDocumentOptions.Default | OpenDocumentOptions.OnlyInternalViewer);
				if (document != null)
					document.Window.SwitchView (document.Window.FindView<IMergeView> ());
			}
			
			return true;
		}
		public static bool Show (VersionControlItemList items, Revision since, bool test)
		{
			bool found = false;
			foreach (VersionControlItem item in items) {
				if (item.Repository.IsHistoryAvailable (item.Path)) {
					if (test)
						return true;
					found = true;
					new Worker (item.Repository, item.Path, item.IsDirectory, since).Start ();
				}
			}
			return found;
		}
Пример #17
0
		public static bool Show (VersionControlItemList items, bool test)
		{
			if (items.Count != 1)
				return false;

			VersionControlItem item = items [0];
			if (item.VersionInfo.IsVersioned) {
				if (test) return true;
				StatusView d = new StatusView (item.Path, item.Repository);
				IdeApp.Workbench.OpenDocument (d, true);
				return true;
			}
			return false;
		}
Пример #18
0
		public static async Task<bool> ResolveConflicts (VersionControlItemList list, bool test)
		{
			if (test)
				return list.All (s => (s.VersionInfo.Status & VersionStatus.Conflicted) == VersionStatus.Conflicted);

			foreach (var item in list.Where (s => (s.VersionInfo.Status & VersionStatus.Conflicted) == VersionStatus.Conflicted)) {
				Document doc = await IdeApp.Workbench.OpenDocument (item.Path, item.ContainerProject, true);
				foreach (var view in doc.Views) {
					if (view.GetContent <MergeView> () != null)
						view.Select ();
				}
			}
			return true;
		}
		public VersionControlItemList GetItems ()
		{
			// Cached items are used only in the status view, not in the project pad.
			if (items != null)
				return items;

			// Don't cache node items because they can change
			VersionControlItemList nodeItems = new VersionControlItemList ();
			foreach (ITreeNavigator node in CurrentNodes) {
				VersionControlItem item = CreateItem (node.DataItem);
				if (item != null)
					nodeItems.Add (item);
			}
			return nodeItems;
		}
Пример #20
0
		/// <summary>
		/// Creates a patch from a VersionControlItemList
		/// </summary>
		/// <param name="items">
		/// A <see cref="VersionControlItemList"/> from which to create a patch.
		/// </param>
		/// <param name="test">
		/// A <see cref="System.Boolean"/>: Whether this is a test run.
		/// </param>
		/// <returns>
		/// A <see cref="System.Boolean"/>: Whether the patch creation succeeded.
		/// </returns>
		public static bool CreatePatch (VersionControlItemList items, bool test)
		{
			bool can = CanCreatePatch (items);
			if (test || !can){ return can; }
			
			FilePath basePath = items.FindMostSpecificParent (FilePath.Null);
			if (FilePath.Empty == basePath)
				return false;
			
			ChangeSet cset = new ChangeSet (items[0].Repository, basePath);
			foreach (VersionControlItem item in items) {
				cset.AddFile (item.Path);
			}
			return CreatePatch (cset, test);
		}
		/// <summary>
		/// Creates a patch from a VersionControlItemList
		/// </summary>
		/// <param name="items">
		/// A <see cref="VersionControlItemList"/> from which to create a patch.
		/// </param>
		/// <param name="test">
		/// A <see cref="System.Boolean"/>: Whether this is a test run.
		/// </param>
		/// <returns>
		/// A <see cref="System.Boolean"/>: Whether the patch creation succeeded.
		/// </returns>
		public static bool CreatePatch (VersionControlItemList items, bool test)
		{
			if (items.Count < 1)
				return false;
				
			FilePath basePath = FindMostSpecificParent (items, FilePath.Null);
			if (FilePath.Empty == basePath)
				return false;
			
			ChangeSet cset = new ChangeSet (items[0].Repository, basePath);
			foreach (VersionControlItem item in items) {
				cset.AddFile (item.Path);
			}
			return CreatePatch (cset, test);
		}
		public static bool Show (VersionControlItemList items, bool test)
		{
			bool found = false;
			foreach (VersionControlItem item in items) {
				if (item.Repository.IsModified (item.Path)) {
					if (test) return true;
					found = true;
					DiffView d = new DiffView(
						Path.GetFileName (item.Path),
						item.Repository.GetPathToBaseText (item.Path),
						item.Path);
					IdeApp.Workbench.OpenDocument (d, true);
				}
			}
			return found;
		}
Пример #23
0
		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;
		}
Пример #24
0
		public static bool Show (VersionControlItemList items, bool test)
		{
			if (items.Count != 1)
				return false;

			VersionControlItem item = items [0];
			if (item.VersionInfo.IsVersioned) {
				if (test) return true;
				string path = item.Path;
				if (Services.ProjectService.IsSolutionItemFile (item.Path.FullPath))
					path = IdeApp.Workspace.FindSolutionItem (item.Path.FullPath).BaseDirectory;
				else if (Services.ProjectService.IsWorkspaceItemFile (item.Path.FullPath))
					path = IdeApp.Workspace.GetAllItems <WorkspaceItem> ().First (x => x.FileName.FullPath == item.Path.FullPath).BaseDirectory;
				StatusView d = new StatusView (path, item.Repository);
				IdeApp.Workbench.OpenDocument (d, true);
				return true;
			}
			return false;
		}
Пример #25
0
		public static bool Show (VersionControlItemList items, bool test)
		{
			if (test)
				return items.All (CanShow);
			
			foreach (var item in items) {
				var document = IdeApp.Workbench.OpenDocument (item.Path, OpenDocumentOptions.Default | OpenDocumentOptions.OnlyInternalViewer);
				if (document != null) {
					document.Window.SwitchView (document.Window.FindView<ILogView> ());
				} else {
					VersionControlDocumentInfo info = new VersionControlDocumentInfo (null, item, item.Repository);
					LogView logView = new LogView (info);
					info.Document = IdeApp.Workbench.OpenDocument (logView, true).PrimaryView;
					logView.Selected ();	
				}
			}
			
			return true;
		}
Пример #26
0
		public static void Show (VersionControlItemList items, Revision since)
		{
			foreach (VersionControlItem item in items) {
				if (!item.IsDirectory) {
					var document = IdeApp.Workbench.OpenDocument (item.Path, OpenDocumentOptions.Default | OpenDocumentOptions.OnlyInternalViewer);
					if (document != null) {
						DiffView.AttachViewContents (document, item);
						document.Window.SwitchView (document.Window.FindView (typeof(LogView)));
					} else {
						VersionControlDocumentInfo info = new VersionControlDocumentInfo (null, item, item.Repository);
						LogView logView = new LogView (info);
						info.Document = IdeApp.Workbench.OpenDocument (logView, true);
						logView.Selected ();
					}
				} else if (item.VersionInfo.CanLog) {
					new Worker (item.Repository, item.Path, item.IsDirectory, since).Start ();
				}
			}
		}
Пример #27
0
		VersionControlItemList GetItems ()
		{
			VersionControlItemList list = new VersionControlItemList ();
			
			IWorkspaceObject wob;
			Repository repo = null;
			wob = IdeApp.ProjectOperations.CurrentSelectedWorkspaceItem;
			if (wob != null)
				repo = VersionControlService.GetRepository (wob);
			if (repo == null) {
				wob = IdeApp.ProjectOperations.CurrentSelectedSolutionItem;
				if (wob != null)
					repo = VersionControlService.GetRepository (wob);
			}
			if (repo == null || repo.VersionControlSystem == null || !repo.VersionControlSystem.IsInstalled)
				return list;
			
			list.Add (new VersionControlItem (repo, wob, wob.BaseDirectory, true));
			return list;
		}
		public static bool Commit (VersionControlItemList items, bool test)
		{
			if (items.Count != 1)
				return false;

			VersionControlItem item = items [0];
			if (item.Repository.CanCommit (item.Path)) {
				if (test) return true;
				ChangeSet cset = item.Repository.CreateChangeSet (item.Path);
				foreach (VersionInfo vi in item.Repository.GetDirectoryVersionInfo (item.Path, false, true))
					if (vi.HasLocalChanges)
						cset.AddFile (vi);
				if (!cset.IsEmpty) {
					Commit (item.Repository, cset, false);
				} else {
					MessageService.ShowMessage (GettextCatalog.GetString ("There are no changes to be committed."));
					return false;
				}
			}
			return false;
		}
Пример #29
0
		VersionControlItemList GetItems ()
		{
			VersionControlItemList list = new VersionControlItemList ();
			
			WorkspaceItem wob;
			SolutionItem sol;
			Repository repo = null;
			wob = IdeApp.ProjectOperations.CurrentSelectedWorkspaceItem;
			if (wob != null)
				repo = VersionControlService.GetRepository (wob);
			if (repo == null) {
				sol = IdeApp.ProjectOperations.CurrentSelectedSolutionItem;
				if (sol != null)
					repo = VersionControlService.GetRepository (sol);
			}
			if (repo == null || repo.VersionControlSystem == null || !repo.VersionControlSystem.IsInstalled)
				return list;

			list.Add (new VersionControlItem (repo, wob, wob.FileName, true, null));
			return list;
		}
Пример #30
0
		public static bool Show (VersionControlItemList items, bool test)
		{
			bool found = false;
			foreach (VersionControlItem item in items) {
				if (item.Repository.IsModified (item.Path)) {
					if (test) return true;
					found = true;
					string tmpFile = Path.GetTempFileName ();
					File.WriteAllText (tmpFile, item.Repository.GetBaseText (item.Path));
					DiffView d = new DiffView(
						Path.GetFileName (item.Path),
						tmpFile,
						item.Path);
					Document doc = IdeApp.Workbench.OpenDocument (d, true);
					doc.Closed += delegate {
						File.Delete (tmpFile);
					};
				}
			}
			return found;
		}
Пример #31
0
 public static bool CanShow(VersionControlItemList items)
 {
     return(items.Any(i => i.VersionInfo.HasLocalChanges));
 }
Пример #32
0
 public static bool CanShow(VersionControlItemList items, Revision since)
 {
     return(items.All(i => i.VersionInfo.CanLog));
 }