Example #1
0
        public void GetGitChange_MoreChanges_Successful()
        {
            // Arrange
            IGitEngine gitEngine = new GitEngine();

            gitRepoHelpers.AddUntrackedFileToRepoWithNumLines("fake.cs", 2);
            gitRepoHelpers.AddUntrackedFileToRepoWithNumLines("fake2.cs", 4);
            gitRepoHelpers.CommitFilesToRepo();
            gitRepoHelpers.AddUntrackedFileToRepoWithNumLines("fake3.cs", 5);
            gitRepoHelpers.AddUntrackedFileToRepoWithNumLines("fake4.cs", 2);
            var commit = gitRepoHelpers.CommitFilesToRepo();

            gitRepoHelpers.AddUntrackedFileToRepoWithNumLines("fake6.cs", 5);
            gitRepoHelpers.AddUntrackedFileToRepoWithNumLines("fake5.cs", 2);
            gitRepoHelpers.CommitFilesToRepo();

            // Act
            var changes = gitEngine.GetGitChange(
                gitRepoHelpers.RepoPath,
                commit.Sha).ToArray();

            // Assert
            Assert.NotEmpty(changes);
            Assert.Equal(2, changes.Length);
            Assert.Contains(changes, c => c.FilePath.Equals("fake3.cs", StringComparison.InvariantCultureIgnoreCase));
            Assert.Contains(changes, c => c.FilePath.Equals("fake4.cs", StringComparison.InvariantCultureIgnoreCase));
        }
Example #2
0
        private void MyContextMenu_ContextMenuOpening(object sender, System.ComponentModel.CancelEventArgs e)
        {
            CMMoveToChangelist.IsEnabled = MyDataGrid.SelectedItems.Count > 0;

            List <MenuItem>   subMenu     = new List <MenuItem>();
            List <Changelist> changelists = GitEngine.Get().ModelTransient.Changelists;

            for (int i = 0; i < GitEngine.Get().ModelTransient.Changelists.Count; i++)
            {
                MenuItem mi = new MenuItem()
                {
                    Header = $"{i} ({changelists[i].Files.Count} file[s]) {changelists[i].Description}", Tag = i
                };
                mi.Click += CmSubMenuMoveToChangelist_Click;
                subMenu.Add(mi);
            }

            MenuItem mi2 = new MenuItem()
            {
                Header = $"<New changelist...>", Tag = -1
            };

            mi2.Click += CmSubMenuMoveToChangelist_Click;
            subMenu.Add(mi2);

            CMMoveToChangelist.Items = subMenu;
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="QuantifyClient"/> class.
        /// </summary>
        /// <param name="contextFilePath">The path of the context file.</param>
        public QuantifyClient(
            string contextFilePath)
        {
            var context = LoadContext(contextFilePath);

            prQuantifier = new PullRequestQuantifier(context);
            gitEngine    = new GitEngine();
        }
Example #4
0
        private void CmFindInFileTree_Click(object sender, RoutedEventArgs e)
        {
            FileAndStatus selectedFile = GetFirstSelectedFile();

            if (selectedFile != null)
            {
                GitEngine.Get().SelectFileInFileTree(selectedFile.FileName);
            }
        }
Example #5
0
        private void CmFindInExplorer_Click(object sender, RoutedEventArgs e)
        {
            FileAndStatus selectedFile = GetFirstSelectedFile();

            if (selectedFile != null)
            {
                // TODO: this doesn't work on windows, not sure why, it almost does though.
                Process.Start("explorer.exe", "/select, " + Path.Combine(GitEngine.Get().Repo.Info.WorkingDirectory, selectedFile.FileName));
            }
        }
Example #6
0
        private void MyDataGrid_LoadingRow(object sender, DataGridRowEventArgs e)
        {
            FileAndStatus fileAndStatus = e.Row.DataContext as FileAndStatus;

            if (fileAndStatus != null)
            {
                int changelistIndex = GitEngine.Get().ModelTransient.GetChangelistForFile(fileAndStatus.FileName);
                ViewUtils.ColorRowByChangelist(e.Row, changelistIndex);
            }
        }
Example #7
0
        public void GetGitChanges_NoChangesNoExceptions()
        {
            // Setup
            IGitEngine gitEngine = new GitEngine();

            // Act, Assert
            var exception = Record.Exception(() => gitEngine.GetGitChanges(Environment.CurrentDirectory));

            Assert.Null(exception);
        }
Example #8
0
        private void CmDeleteChangelist_Click(object sender, RoutedEventArgs e)
        {
            List <CommitWrapper> cws = new List <CommitWrapper>();
            IList selectedItems      = DataGridCommitList.SelectedItems;

            for (int i = 0; i < selectedItems.Count; i++)
            {
                cws.Add(selectedItems[i] as CommitWrapper);
            }

            GitEngine.Get().DeleteChangelists(cws);
        }
Example #9
0
        public void GetGitChanges_ChangedModifiedRenamedFiles()
        {
            // Arrange
            IGitEngine gitEngine = new GitEngine();

            gitRepoHelpers.AddUntrackedFileToRepoWithNumLines("fakeRename.cs", 2);
            gitRepoHelpers.CommitFilesToRepo();
            gitRepoHelpers.RenameFile("fakeRename.cs", "fakeRename1.cs");

            // Act
            var gitChanges = gitEngine.GetGitChanges(gitRepoHelpers.RepoPath).ToArray();

            // Assert
            Assert.Single(gitChanges);
            Assert.Equal(2, gitChanges[0].AbsoluteLinesDeleted);
            Assert.Equal(GitChangeType.Renamed, gitChanges[0].ChangeType);
        }
Example #10
0
        private static async Task Quantify(
            IEnumerable <Organization> organizations,
            string clonePath)
        {
            var repositories = organizations.Select(o =>
                                                    o.Projects.Select(p =>
                                                                      p.Repositories.Select(r => new
            {
                Organization = o.Name,
                Project      = p.Name,
                Repository   = r.Name
            })))
                               .SelectMany(a => a)
                               .SelectMany(a => a);

            var gitEngine      = new GitEngine();
            var quantifyClient = new QuantifyClient(string.Empty);

            foreach (var repository in repositories)
            {
                var saveResultsToDatabase = new Dictionary <string, QuantifierResult>();

                var repoPath    = Path.Combine(clonePath, repository.Repository);
                var commitsSha1 = gitEngine.GetAllCommits(repoPath).Select(c => c.Sha).ToArray();
                Console.WriteLine($"Total commits to evaluate : {commitsSha1.Length}. Repo name {repository.Repository}.");

                foreach (var commitSha1 in commitsSha1)
                {
                    try
                    {
                        var quantifierResult = await quantifyClient.Compute(repoPath, commitSha1);

                        saveResultsToDatabase[commitSha1] = quantifierResult;
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e);
                    }
                }

                await SaveToCsv(
                    saveResultsToDatabase,
                    Path.Combine(clonePath, $"{repository.Repository}_QuantifierResults.csv"));
            }
        }
Example #11
0
        public void GetGitChange_OneChange_Successful()
        {
            // Arrange
            IGitEngine gitEngine = new GitEngine();

            gitRepoHelpers.AddUntrackedFileToRepoWithNumLines("fake.cs", 2);
            gitRepoHelpers.AddUntrackedFileToRepoWithNumLines("fake2.cs", 4);
            var commit = gitRepoHelpers.CommitFilesToRepo();

            // Act
            var changes = gitEngine.GetGitChange(
                gitRepoHelpers.RepoPath,
                commit.Sha).ToArray();

            // Assert
            Assert.NotEmpty(changes);
            Assert.Equal(2, changes.Length);
        }
Example #12
0
        public void GetGitHistoricalChangesToParent_Successful()
        {
            // Arrange
            IGitEngine gitEngine = new GitEngine();

            gitRepoHelpers.AddUntrackedFileToRepoWithNumLines("fake.cs", 2);
            gitRepoHelpers.AddUntrackedFileToRepoWithNumLines("fake2.cs", 4);
            gitRepoHelpers.CommitFilesToRepo();
            gitRepoHelpers.AddUntrackedFileToRepoWithNumLines("fake.cs", 5);
            gitRepoHelpers.AddUntrackedFileToRepoWithNumLines("fake2.cs", 2);

            // Act
            var commits = gitEngine.GetGitHistoricalChangesToParent(gitRepoHelpers.RepoPath).ToArray();

            // Assert
            Assert.NotEmpty(commits);
            Assert.Equal(2, commits.Length);
        }
Example #13
0
        public void GetGitChanges_ChangedTrackedFiles()
        {
            // Arrange
            IGitEngine gitEngine = new GitEngine();

            gitRepoHelpers.AddUntrackedFileToRepoWithNumLines("fake.cs", 2);
            gitRepoHelpers.AddUntrackedFileToRepoWithNumLines("fake2.cs", 4);
            gitRepoHelpers.CommitFilesToRepo();
            gitRepoHelpers.AddUntrackedFileToRepoWithNumLines("fake.cs", 5);
            gitRepoHelpers.AddUntrackedFileToRepoWithNumLines("fake2.cs", 2);

            // Act
            var gitChanges = gitEngine.GetGitChanges(gitRepoHelpers.RepoPath).ToArray();

            // Assert
            Assert.NotEmpty(gitChanges);
            Assert.Equal(2, gitChanges.Length);
            Assert.Equal(3, gitChanges[0].AbsoluteLinesAdded);
            Assert.Equal(2, gitChanges[1].AbsoluteLinesDeleted);
        }
Example #14
0
        private void CmSubMenuMoveToChangelist_Click(object sender, RoutedEventArgs e)
        {
            int    changelistId          = (int)(sender as MenuItem).Tag;
            string changelistDescription = null;

            if (changelistId == -1)
            {
                changelistId          = -1;
                changelistDescription = "new changelist";
                MessageBoxManager.GetMessageBoxStandardWindow("", "TODO: need an input box to specify this").Show();
                return;

                /*
                 * if (InputBox.Show("New changelist", "Enter a description for the new changelist", ref changelistDescription) != DialogResult.OK)
                 * {
                 *  return;
                 * }
                 */
            }

            GitEngine.Get().MoveFilesToChangelist(GetSelectedFiles(), changelistId, changelistDescription);
        }
Example #15
0
 public ViewModel_RepoInfo()
 {
     _SelectedRepoOrOption = Settings.Default.LastSelectedLocalRepo;
     Initialized           = true;
     GitEngine.Get().StartTraversingNewRepo(_SelectedRepoOrOption);
 }
Example #16
0
 private void SpawnExternalDiff()
 {
     GitEngine.Get().SpawnExternalDiff(GetSelectedFiles());
 }
 public FileScanner(GitEngine gitEngine)
 {
     _gitEngine = gitEngine;
 }