Search in sources :

Example 6 with Commit

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

the class GitCommitsModelCacheTest method shouldListAllTypeOfChangesInsideFolderInOneCommit.

@Test
public void shouldListAllTypeOfChangesInsideFolderInOneCommit() throws Exception {
    // given
    Git git = new Git(db);
    writeTrashFile(db, "folder/a.txt", "a content");
    writeTrashFile(db, "folder/c.txt", "c content");
    git.add().addFilepattern("folder/a.txt").call();
    git.add().addFilepattern("folder/c.txt").call();
    RevCommit c1 = commit(git, "first commit");
    deleteTrashFile(db, "folder/a.txt");
    writeTrashFile(db, "folder/b.txt", "b content");
    writeTrashFile(db, "folder/c.txt", "new c content");
    git.add().addFilepattern("folder/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());
    assertCommit(leftResult.get(0), c2, 3);
    assertFileDeletion(c2, c1, leftResult.get(0).getChildren().get("folder/a.txt"), "a.txt", LEFT);
    assertFileAddition(c2, c1, leftResult.get(0).getChildren().get("folder/b.txt"), "b.txt", LEFT);
    assertFileChange(c2, c1, leftResult.get(0).getChildren().get("folder/c.txt"), "c.txt", LEFT);
    // right asserts
    assertThat(rightResult, notNullValue());
    assertCommit(rightResult.get(0), c2, 3);
    assertFileDeletion(c2, c1, rightResult.get(0).getChildren().get("folder/a.txt"), "a.txt", RIGHT);
    assertFileAddition(c2, c1, rightResult.get(0).getChildren().get("folder/b.txt"), "b.txt", RIGHT);
    assertFileChange(c2, c1, rightResult.get(0).getChildren().get("folder/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 7 with Commit

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

the class GitCommitsModelCacheTest method shouldListAllTypeOfChangesInOneCommit.

@Test
public void shouldListAllTypeOfChangesInOneCommit() throws Exception {
    // given
    Git git = new Git(db);
    writeTrashFile(db, "a.txt", "a content");
    writeTrashFile(db, "c.txt", "c content");
    git.add().addFilepattern("a.txt").call();
    git.add().addFilepattern("c.txt").call();
    RevCommit c1 = commit(git, "first commit");
    deleteTrashFile(db, "a.txt");
    writeTrashFile(db, "b.txt", "b content");
    writeTrashFile(db, "c.txt", "new c content");
    git.add().addFilepattern("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 asserts
    assertThat(leftResult, notNullValue());
    assertCommit(leftResult.get(0), c2, 3);
    assertFileDeletion(c2, c1, leftResult.get(0).getChildren().get("a.txt"), "a.txt", LEFT);
    assertFileAddition(c2, c1, leftResult.get(0).getChildren().get("b.txt"), "b.txt", LEFT);
    assertFileChange(c2, c1, leftResult.get(0).getChildren().get("c.txt"), "c.txt", LEFT);
    // right asserts
    assertThat(rightResult, notNullValue());
    assertCommit(rightResult.get(0), c2, 3);
    assertFileDeletion(c2, c1, rightResult.get(0).getChildren().get("a.txt"), "a.txt", RIGHT);
    assertFileAddition(c2, c1, rightResult.get(0).getChildren().get("b.txt"), "b.txt", RIGHT);
    assertFileChange(c2, c1, rightResult.get(0).getChildren().get("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 8 with Commit

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

the class GitCommitsModelCacheTest method shouldReturnEmptyListForSameSrcAndDstCommit.

@Test
public void shouldReturnEmptyListForSameSrcAndDstCommit() throws Exception {
    // given
    Git git = new Git(db);
    RevCommit c = commit(git, "second commit");
    // when
    List<Commit> result = GitCommitsModelCache.build(db, c, 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 9 with Commit

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

the class GitCommitsModelCacheTest method shouldListChangesInsideSeparateFoldersInCommit.

@Test
public void shouldListChangesInsideSeparateFoldersInCommit() 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 c1 = commit(git, "first commit");
    writeTrashFile(db, "folder/a.txt", "new content");
    writeTrashFile(db, "folder2/b.txt", "new b 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());
    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(2));
    assertFileChange(c2, c1, leftResult.get(0).getChildren().get("folder/a.txt"), "a.txt", LEFT);
    assertFileChange(c2, c1, leftResult.get(0).getChildren().get("folder2/b.txt"), "b.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().size(), is(2));
    assertFileChange(c2, c1, rightResult.get(0).getChildren().get("folder/a.txt"), "a.txt", RIGHT);
    assertFileChange(c2, c1, rightResult.get(0).getChildren().get("folder2/b.txt"), "b.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 10 with Commit

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

the class GitCommitsModelCacheTest method shouldListAdditionOrDeletionInsideFolderInCommit.

@Test
public void shouldListAdditionOrDeletionInsideFolderInCommit() throws Exception {
    // given
    Git git = new Git(db);
    writeTrashFile(db, "folder/a.txt", "content");
    git.add().addFilepattern("folder/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);
    assertThat(leftResult.get(0).getChildren().size(), is(1));
    assertFileAddition(c, leftResult.get(0).getChildren().get("folder/a.txt"), "a.txt", LEFT);
    // right asserts, after changing sides addition becomes deletion
    assertThat(rightResult, notNullValue());
    assertCommit(rightResult.get(0), c, 1);
    assertThat(rightResult.get(0).getChildren().size(), is(1));
    assertFileAddition(c, 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)

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