@After
 public void clearGitResources() throws Exception {
   testRepo.disconnect(iProject);
   testRepo.dispose();
   repo = null;
   super.tearDown();
 }
  @Test
  public void squash() throws Exception {
    InteractiveHandler messageHandler =
        new InteractiveHandler() {
          public void prepareSteps(List<RebaseTodoLine> steps) {
            // not used
          }

          public String modifyCommitMessage(String commit) {
            return "squashed";
          }
        };

    List<RevCommit> commits = Arrays.asList(commit1, commit2, commit3);
    SquashCommitsOperation op =
        new SquashCommitsOperation(testRepository.getRepository(), commits, messageHandler);
    op.execute(new NullProgressMonitor());

    assertEquals(2, countCommitsInHead());

    LogCommand log = new Git(testRepository.getRepository()).log();
    Iterable<RevCommit> logCommits = log.call();
    RevCommit latestCommit = logCommits.iterator().next();
    assertEquals("squashed", latestCommit.getFullMessage());
  }
 @Before
 public void setUp() throws Exception {
   super.setUp();
   gitDir = new File(project.getProject().getLocationURI().getPath(), Constants.DOT_GIT);
   testRepository = new TestRepository(gitDir);
   repository = testRepository.getRepository();
   testRepository.connect(project.getProject());
   testRepository.commit("initial commit");
 }
  @Before
  public void setUp() throws Exception {
    super.setUp();

    TestRepository testRepo = new TestRepository(gitDir);
    testRepo.connect(project.project);
    repo = RepositoryMapping.getMapping(project.project).getRepository();

    // make initial commit
    new Git(repo).commit().setAuthor("JUnit", "*****@*****.**").setMessage("Initall commit").call();
  }
 private int countCommitsInHead() throws GitAPIException {
   LogCommand log = new Git(testRepository.getRepository()).log();
   Iterable<RevCommit> commits = log.call();
   int result = 0;
   for (Iterator i = commits.iterator(); i.hasNext(); ) {
     i.next();
     result++;
   }
   return result;
 }
  @Before
  public void setUp() throws Exception {
    super.setUp();
    gitDir = new File(project.getProject().getLocationURI().getPath(), Constants.DOT_GIT);
    testRepository = new TestRepository(gitDir);
    testRepository.connect(project.getProject());
    testRepository.createInitialCommit("initial");

    File file = testRepository.createFile(project.getProject(), "file-1");
    commit1 = testRepository.addAndCommit(project.getProject(), file, "commit 1");
    testRepository.appendFileContent(file, "file-2");
    commit2 = testRepository.addAndCommit(project.getProject(), file, "commit 2");
    testRepository.appendFileContent(file, "file-3");
    commit3 = testRepository.addAndCommit(project.getProject(), file, "commit 3");
  }
  @Test
  public void markAsMerged() throws Exception {
    GitSynchronizeData gsd = new GitSynchronizeData(repo, HEAD, HEAD, false);
    GitSynchronizeDataSet gsds = new GitSynchronizeDataSet(gsd);
    GitResourceVariantTreeSubscriber subscriber = new GitResourceVariantTreeSubscriber(gsds);

    String fileName = "src/Main.java";
    File file = testRepo.createFile(iProject, fileName);
    testRepo.appendContentAndCommit(iProject, file, "class Main {}", "some file");
    testRepo.addToIndex(iProject.getFile(".classpath"));
    testRepo.addToIndex(iProject.getFile(".project"));
    testRepo.commit("project files");

    IFile workspaceFile = testRepo.getIFile(iProject, file);

    ResourceMapping mapping = AdapterUtils.adapt(workspaceFile, ResourceMapping.class);
    ResourceMapping[] inputMappings = new ResourceMapping[] {mapping};
    SubscriberScopeManager manager =
        new SubscriberScopeManager("Scope", inputMappings, subscriber, true);

    testRepo.appendFileContent(file, "some changes");
    Status status = new Git(repo).status().call();
    assertEquals(0, status.getAdded().size());
    assertEquals(1, status.getModified().size());
    String repoRelativePath =
        testRepo.getRepoRelativePath(workspaceFile.getLocation().toPortableString());
    assertTrue(status.getModified().contains(repoRelativePath));

    GitSubscriberMergeContext mergeContext =
        new GitSubscriberMergeContext(subscriber, manager, gsds);
    IDiff node = new ResourceDiff(iProject.getFolder("src"), IDiff.CHANGE);
    mergeContext.markAsMerged(node, true, null);

    status = new Git(repo).status().call();
    assertEquals(1, status.getChanged().size());
    assertEquals(0, status.getModified().size());
    assertTrue(status.getChanged().contains(repoRelativePath));
  }
 @After
 public void tearDown() throws Exception {
   testRepository.dispose();
   super.tearDown();
 }