Пример #1
0
        public async void OnAmendClickedCommand(object parameter)
        {
            if (_gitRepository.TryGetTarget(out IGitRepository gitRepository) == false)
            {
                return;
            }
            if (IsAmendCommit == false)
            {
                return;
            }
            string        cmd   = GitCommandCreator.GetLastCommitMessage();
            List <string> lines = await gitRepository.CreateGitRunner().RunAsync(cmd);

            if (lines.Count < 2)
            {
                UIService.ShowMessage("Invalid HEAD commit message");
                return;
            }
            // remove empty last line
            if (string.IsNullOrEmpty(lines[lines.Count - 1]))
            {
                lines.RemoveAt(lines.Count - 1);
            }
            string lastCommitMessage = string.Join(Environment.NewLine, lines);
            string showMessage       = $"{lastCommitMessage}{Environment.NewLine}{Environment.NewLine}Use above HEAD message as amend commit message?";

            if (UIService.ShowMessageWithYesNo(showMessage) == System.Windows.MessageBoxResult.Yes)
            {
                CommitMessage = lastCommitMessage;
                NotifyPropertyChanged("CommitMessage");
            }
        }
        public void CreateBranch(string teamName, string tfsWorkItemID, string branchName, string selectedMainBranch, string versionNumber)
        {
            if (string.IsNullOrWhiteSpace(versionNumber))
            {
                SendInformationToLogger("Version number is null", false);
                return;
            }

            string selectedTeam       = StringHandler.StringInputChecker(teamName);
            string selectedTaskID     = StringHandler.StringInputChecker(tfsWorkItemID);
            string selectedBranchName = StringHandler.StringInputChecker(branchName);

            (string InputLog, bool validatorOutcome) = InputValidator.InputIsValid(selectedTeam, selectedTaskID, selectedBranchName);
            SendInformationToLogger(InputLog, validatorOutcome);

            if (!validatorOutcome)
            {
                return;
            }

            (WorkItem tfsWorkItem, string logMessage, bool tfsWorkItemState) = ItemHandler.VerifyAndReceiveWorkItem(selectedTaskID);
            SendInformationToLogger(logMessage, tfsWorkItemState);

            if (!tfsWorkItemState)
            {
                return;
            }

            if (!string.IsNullOrWhiteSpace(selectedBranchName))
            {
                selectedBranchName = $"-{selectedBranchName}";
            }
            (string path, string command) = GitCommandCreator.CreateCommand(selectedTeam, tfsWorkItem, selectedBranchName, versionNumber);
            commandHandler.GitCreateBranch(path, command, selectedMainBranch);
        }
Пример #3
0
        public async Task <int> RefreshAndGetStashCount()
        {
            StashItems.Clear();
            if (_gitRepository.TryGetTarget(out IGitRepository gitRepository) == false)
            {
                return(0);
            }
            string        cmd     = GitCommandCreator.StashList();
            List <string> outputs = await gitRepository.CreateGitRunner().RunAsync(cmd);

            foreach (string line in outputs)
            {
                if (string.IsNullOrEmpty(line.Trim()))
                {
                    continue;
                }
                var       parsedResult = GitStashListParser.Parse(line);
                StashItem stashItem    = new StashItem();
                stashItem.Name        = parsedResult.Name;
                stashItem.Base        = parsedResult.Marker;
                stashItem.Description = parsedResult.Description;

                StashItems.Add(stashItem);
            }
            NotifyPropertyChanged("StashItems");

            return(StashItems.Count);
        }
Пример #4
0
        public void OnDiffStashedFileAgainstWorkingFileCommand(object sender)
        {
            if (_gitRepository.TryGetTarget(out IGitRepository gitRepository) == false)
            {
                return;
            }
            if (SelectedStashItem == null)
            {
                return;
            }
            if (SelectedStashedFileInfo == null)
            {
                return;
            }
            switch (SelectedStashedFileInfo.FileType)
            {
            case StashedFileInfo.StashedFileType.kModified:
            {
                string cmd = GitCommandCreator.StashDiffToolAgainstWorkingFileModified(SelectedStashItem.Name, SelectedStashedFileInfo.Filename);
                gitRepository.CreateGitRunner().RunWithoutWaiting(cmd);
                return;
            }

            case StashedFileInfo.StashedFileType.kUntracked:
            {
                string cmd = GitCommandCreator.StashDiffToolAgainstWorkingFileUntracked(SelectedStashItem.Name, SelectedStashedFileInfo.Filename);
                gitRepository.CreateGitRunner().RunWithoutWaiting(cmd);
                return;
            }
            }
            System.Diagnostics.Debug.Assert(false, "Not implemented");
        }
Пример #5
0
        public void OnPopLastCommand(object sender)
        {
            if (_gitRepository.TryGetTarget(out IGitRepository gitRepository) == false)
            {
                return;
            }
            string cmd = GitCommandCreator.StashPopLast();

            gitRepository.CreateGitRunner().RunInConsoleProgressWindow(cmd);

            gitRepository.Refresh();
        }
Пример #6
0
        public void OnResetMixedCommand(object parameter)
        {
            if (_gitRepository.TryGetTarget(out IGitRepository gitRepository) == false)
            {
                return;
            }
            if (SelectedHistoryStatus == null)
            {
                return;
            }
            string gitCommand = GitCommandCreator.ResetMixed(SelectedHistoryStatus.CommitId);

            gitRepository.CreateGitRunner().RunInConsoleProgressWindow(gitCommand);
            gitRepository.Refresh();
        }
Пример #7
0
        public void OnDeleteStashCommand(object sender)
        {
            if (_gitRepository.TryGetTarget(out IGitRepository gitRepository) == false)
            {
                return;
            }
            if (SelectedStashItem == null)
            {
                return;
            }
            string cmd = GitCommandCreator.DeleteStash(SelectedStashItem.Name);

            gitRepository.CreateGitRunner().RunInConsoleProgressWindow(cmd);
            gitRepository.Refresh();
        }
Пример #8
0
        public async Task Refresh()
        {
            if (_gitRepository.TryGetTarget(out var gitRepository) == false)
            {
                System.Diagnostics.Debug.Assert(false);
                return;
            }

            TagInfos.Clear();
            string cmd = GitCommandCreator.ListTag();

            foreach (var tagInfo in TagParser.Parse(await gitRepository.CreateGitRunner().RunAsync(cmd)))
            {
                TagInfos.Add(tagInfo);
            }
            NotifyPropertyChanged("TagInfos");
        }
Пример #9
0
        public void OnPushAllCommand(object sender)
        {
            if (_gitRepository.TryGetTarget(out IGitRepository gitRepository) == false)
            {
                return;
            }
            string stashMessage = UIService.AskAndGetString("Enter stash message", "");

            if (string.IsNullOrEmpty(stashMessage))
            {
                return;
            }
            string cmd = GitCommandCreator.StashPushAll(stashMessage);

            gitRepository.CreateGitRunner().RunInConsoleProgressWindow(cmd);
            gitRepository.Refresh();
        }
Пример #10
0
        public void OnDeleteTagCommand(object sender)
        {
            if (_gitRepository.TryGetTarget(out var gitRepository) == false)
            {
                System.Diagnostics.Debug.Assert(false);
                return;
            }
            if (SelectedTag == null)
            {
                return;
            }
            string tagName = SelectedTag.Name;
            string cmd     = GitCommandCreator.DeleteTag(tagName);

            gitRepository.CreateGitRunner().RunInConsoleProgressWindow(cmd);

            gitRepository.Refresh();
        }
        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
        {
            if (values == null)
            {
                return("");
            }
            RemoteTabViewModel remoteTabViewModel = (RemoteTabViewModel)values[0];
            RemoteInfo         selectedRemoteInfo = (RemoteInfo)values[1];

            if (selectedRemoteInfo == null)
            {
                return("");
            }
            string        cmd   = GitCommandCreator.GetRemoteDetail(selectedRemoteInfo.Name);
            List <string> lines = remoteTabViewModel.GitRepo.CreateGitRunner().Run(cmd);

            return(string.Join(Environment.NewLine, lines));
        }
Пример #12
0
        public void OnSwitchBranchCommand(object sender)
        {
            if (_gitRepository.TryGetTarget(out IGitRepository gitRepository) == false)
            {
                System.Diagnostics.Debug.Assert(false);
                return;
            }
            if (SelectedBranch == null)
            {
                return;
            }
            string branchName = SelectedBranch.Name;
            string cmd        = GitCommandCreator.SwitchBranch(branchName);

            gitRepository.CreateGitRunner().RunInConsoleProgressWindow(cmd);

            gitRepository.Refresh();
        }
Пример #13
0
        public async Task Refresh()
        {
            if (_gitRepository.TryGetTarget(out IGitRepository gitRepository) == false)
            {
                return;
            }
            RemoteInfos.Clear();

            string        cmd   = GitCommandCreator.ListRemote();
            List <string> lines = await gitRepository.CreateGitRunner().RunAsync(cmd);

            List <RemoteInfo> remoteInfos = RemoteParser.Parse(lines);

            foreach (RemoteInfo remoteInfo in remoteInfos)
            {
                RemoteInfos.Add(remoteInfo);
            }
            NotifyPropertyChanged("RemoteInfos");
        }
Пример #14
0
        public void OnResetHardCommand(object parameter)
        {
            if (_gitRepository.TryGetTarget(out IGitRepository gitRepository) == false)
            {
                return;
            }
            if (SelectedHistoryStatus == null)
            {
                return;
            }
            var result = UIService.ShowMessageWithOKCancel("Reset hard can affect on working directory. Continue?");

            if (result != MessageBoxResult.OK)
            {
                return;
            }
            string gitCommand = GitCommandCreator.ResetHard(SelectedHistoryStatus.CommitId);

            gitRepository.CreateGitRunner().RunInConsoleProgressWindow(gitCommand);
            gitRepository.Refresh();
        }