Search in sources :

Example 11 with Commit

use of org.eclipse.egit.core.synchronize.GitCommitsModelCache.Commit in project egit by eclipse.

the class GitCommitsModelCacheTest method shouldNotListEmptyCommits.

@Test
public void shouldNotListEmptyCommits() throws Exception {
    // given
    Git git = new Git(db);
    RevCommit c = commit(git, "second commit");
    // when
    List<Commit> result = GitCommitsModelCache.build(db, initialTagId(), c, null);
    // then
    assertThat(result, notNullValue());
    assertThat(result.size(), is(0));
}
Also used : Git(org.eclipse.jgit.api.Git) RevCommit(org.eclipse.jgit.revwalk.RevCommit) Commit(org.eclipse.egit.core.synchronize.GitCommitsModelCache.Commit) RevCommit(org.eclipse.jgit.revwalk.RevCommit) Test(org.junit.Test)

Example 12 with Commit

use of org.eclipse.egit.core.synchronize.GitCommitsModelCache.Commit in project egit by eclipse.

the class GitCommitsModelCacheTest method shouldListAllTypeOfChangesInsideSeparateFoldersInOneCommit.

@Test
public void shouldListAllTypeOfChangesInsideSeparateFoldersInOneCommit() throws Exception {
    // given
    Git git = new Git(db);
    writeTrashFile(db, "folder/a.txt", "a content");
    writeTrashFile(db, "folder2/c.txt", "c content");
    git.add().addFilepattern("folder/a.txt").call();
    git.add().addFilepattern("folder2/c.txt").call();
    RevCommit c1 = commit(git, "first commit");
    deleteTrashFile(db, "folder/a.txt");
    writeTrashFile(db, "folder1/b.txt", "b content");
    writeTrashFile(db, "folder2/c.txt", "new c content");
    git.add().addFilepattern("folder1/b.txt").call();
    RevCommit c2 = commit(git, "second commit");
    // when
    List<Commit> leftResult = GitCommitsModelCache.build(db, c1, c2, null);
    List<Commit> rightResult = GitCommitsModelCache.build(db, c2, c1, null);
    // then
    // left assertions
    assertThat(leftResult, notNullValue());
    assertThat(Integer.valueOf(leftResult.size()), is(Integer.valueOf(1)));
    assertThat(leftResult.get(0).getShortMessage(), is("second commit"));
    assertThat(leftResult.get(0).getChildren(), notNullValue());
    assertThat(leftResult.get(0).getChildren().size(), is(3));
    assertFileDeletion(c2, c1, leftResult.get(0).getChildren().get("folder/a.txt"), "a.txt", LEFT);
    assertFileAddition(c2, c1, leftResult.get(0).getChildren().get("folder1/b.txt"), "b.txt", LEFT);
    assertFileChange(c2, c1, leftResult.get(0).getChildren().get("folder2/c.txt"), "c.txt", LEFT);
    // right asserts
    assertThat(rightResult, notNullValue());
    assertThat(Integer.valueOf(rightResult.size()), is(Integer.valueOf(1)));
    assertThat(rightResult.get(0).getShortMessage(), is("second commit"));
    assertThat(rightResult.get(0).getChildren(), notNullValue());
    assertThat(rightResult.get(0).getChildren().size(), is(3));
    assertFileDeletion(c2, c1, rightResult.get(0).getChildren().get("folder/a.txt"), "a.txt", RIGHT);
    assertFileAddition(c2, c1, rightResult.get(0).getChildren().get("folder1/b.txt"), "b.txt", RIGHT);
    assertFileChange(c2, c1, rightResult.get(0).getChildren().get("folder2/c.txt"), "c.txt", RIGHT);
}
Also used : Git(org.eclipse.jgit.api.Git) RevCommit(org.eclipse.jgit.revwalk.RevCommit) Commit(org.eclipse.egit.core.synchronize.GitCommitsModelCache.Commit) RevCommit(org.eclipse.jgit.revwalk.RevCommit) Test(org.junit.Test)

Example 13 with Commit

use of org.eclipse.egit.core.synchronize.GitCommitsModelCache.Commit in project egit by eclipse.

the class GitCommitsModelCacheTest method shouldListChangeInsideFolderInCommit.

@Test
public void shouldListChangeInsideFolderInCommit() throws Exception {
    // given
    Git git = new Git(db);
    writeTrashFile(db, "folder/a.txt", "content");
    git.add().addFilepattern("folder/a.txt").call();
    RevCommit c1 = commit(git, "first commit");
    writeTrashFile(db, "folder/a.txt", "new content");
    RevCommit c2 = commit(git, "second commit");
    // when
    List<Commit> leftResult = GitCommitsModelCache.build(db, c1, c2, null);
    List<Commit> rightResult = GitCommitsModelCache.build(db, c2, c1, null);
    // then
    // left assertions
    assertThat(leftResult, notNullValue());
    assertCommit(leftResult.get(0), c2, 1);
    assertFileChange(c2, c1, leftResult.get(0).getChildren().get("folder/a.txt"), "a.txt", LEFT);
    // right asserts
    assertThat(rightResult, notNullValue());
    assertCommit(rightResult.get(0), c2, 1);
    assertFileChange(c2, c1, rightResult.get(0).getChildren().get("folder/a.txt"), "a.txt", RIGHT);
}
Also used : Git(org.eclipse.jgit.api.Git) RevCommit(org.eclipse.jgit.revwalk.RevCommit) Commit(org.eclipse.egit.core.synchronize.GitCommitsModelCache.Commit) RevCommit(org.eclipse.jgit.revwalk.RevCommit) Test(org.junit.Test)

Example 14 with Commit

use of org.eclipse.egit.core.synchronize.GitCommitsModelCache.Commit in project egit by eclipse.

the class GitCommitsModelCacheTest method shouldApplyPathFilter.

@Test
public void shouldApplyPathFilter() throws Exception {
    // given
    Git git = new Git(db);
    writeTrashFile(db, "folder/a.txt", "content");
    writeTrashFile(db, "folder2/b.txt", "b content");
    git.add().addFilepattern("folder/a.txt").call();
    git.add().addFilepattern("folder2/b.txt").call();
    RevCommit c = commit(git, "first commit");
    // when
    PathFilter pathFilter = PathFilter.create("folder");
    List<Commit> leftResult = GitCommitsModelCache.build(db, initialTagId(), c, pathFilter);
    // then
    assertThat(leftResult, notNullValue());
    assertThat(Integer.valueOf(leftResult.size()), is(Integer.valueOf(1)));
    assertThat(leftResult.get(0).getShortMessage(), is("first commit"));
    assertThat(leftResult.get(0).getChildren(), notNullValue());
    assertThat(leftResult.get(0).getChildren().size(), is(1));
    assertFileAddition(c, leftResult.get(0).getChildren().get("folder/a.txt"), "a.txt", LEFT);
}
Also used : PathFilter(org.eclipse.jgit.treewalk.filter.PathFilter) Git(org.eclipse.jgit.api.Git) RevCommit(org.eclipse.jgit.revwalk.RevCommit) Commit(org.eclipse.egit.core.synchronize.GitCommitsModelCache.Commit) RevCommit(org.eclipse.jgit.revwalk.RevCommit) Test(org.junit.Test)

Example 15 with Commit

use of org.eclipse.egit.core.synchronize.GitCommitsModelCache.Commit in project egit by eclipse.

the class GitCommitsModelCacheTest method shouldListAdditionOrDeletionInCommit.

@Test
public void shouldListAdditionOrDeletionInCommit() throws Exception {
    // given
    Git git = new Git(db);
    writeTrashFile(db, "a.txt", "content");
    git.add().addFilepattern("a.txt").call();
    RevCommit c = commit(git, "first commit");
    // when
    List<Commit> leftResult = GitCommitsModelCache.build(db, initialTagId(), c, null);
    List<Commit> rightResult = GitCommitsModelCache.build(db, c, initialTagId(), null);
    // then
    // left assertions
    assertThat(leftResult, notNullValue());
    assertCommit(leftResult.get(0), c, 1);
    assertFileAddition(c, leftResult.get(0).getChildren().get("a.txt"), "a.txt", LEFT);
    // right asserts, after changing sides addition becomes deletion
    assertThat(rightResult, notNullValue());
    assertCommit(rightResult.get(0), c, 1);
    assertFileAddition(c, rightResult.get(0).getChildren().get("a.txt"), "a.txt", RIGHT);
}
Also used : Git(org.eclipse.jgit.api.Git) RevCommit(org.eclipse.jgit.revwalk.RevCommit) Commit(org.eclipse.egit.core.synchronize.GitCommitsModelCache.Commit) RevCommit(org.eclipse.jgit.revwalk.RevCommit) Test(org.junit.Test)

Aggregations

Commit (org.eclipse.egit.core.synchronize.GitCommitsModelCache.Commit)20 RevCommit (org.eclipse.jgit.revwalk.RevCommit)16 Test (org.junit.Test)15 Git (org.eclipse.jgit.api.Git)14 GitModelCommit (org.eclipse.egit.ui.internal.synchronize.model.GitModelCommit)3 Repository (org.eclipse.jgit.lib.Repository)3 ArrayList (java.util.ArrayList)2 IOException (java.io.IOException)1 Date (java.util.Date)1 HashMap (java.util.HashMap)1 IProject (org.eclipse.core.resources.IProject)1 GitModelBlob (org.eclipse.egit.ui.internal.synchronize.model.GitModelBlob)1 GitModelCache (org.eclipse.egit.ui.internal.synchronize.model.GitModelCache)1 GitModelTree (org.eclipse.egit.ui.internal.synchronize.model.GitModelTree)1 GitModelWorkingTree (org.eclipse.egit.ui.internal.synchronize.model.GitModelWorkingTree)1 StyledString (org.eclipse.jface.viewers.StyledString)1 Viewer (org.eclipse.jface.viewers.Viewer)1 AbbreviatedObjectId (org.eclipse.jgit.lib.AbbreviatedObjectId)1 ObjectId (org.eclipse.jgit.lib.ObjectId)1 PathFilter (org.eclipse.jgit.treewalk.filter.PathFilter)1