public void push() {
   final Git git = new Git(getRepository());
   try {
     for (final PushResult result : git.push().setPushAll().call()) {
       LOGGER.info(result.getMessages());
     }
   } catch (final Exception e) {
     throw new IllegalStateException("Unable to perform push operation ", e);
   }
 }
 private static Collection<RemoteRefUpdate> getFailedUpdates(PushResult pushResult) {
   List<RemoteRefUpdate> failedRefUpdates = new ArrayList<RemoteRefUpdate>();
   if (pushResult == null || pushResult.getRemoteUpdates() == null) {
     return failedRefUpdates;
   }
   for (RemoteRefUpdate update : pushResult.getRemoteUpdates()) {
     if (org.eclipse.jgit.transport.RemoteRefUpdate.Status.OK != update.getStatus()) {
       failedRefUpdates.add(update);
     }
   }
   return failedRefUpdates;
 }
  @Test
  public void testUpdateTrackingBranchIfSpecifiedInRemoteRefUpdate() throws Exception {
    // Commit on repository 2
    //		RevCommit commit = repository2.addAndCommit(project, new File(workdir2, "test.txt"), "Commit
    // in repository 2");
    System.out.println(repository2.getBranch());
    new Git(repository2).checkout().setName("refs/heads/test").call();
    System.out.println(repository2.getBranch());
    ArrayList<String> files = new ArrayList<String>();
    File file = new File(workdir2, "test.txt");
    FileUtils.createNewFile(file);
    repositoryUtil.appendFileContent(file, "create file of test.txt in repository 2");
    files.add(repositoryUtil.getRepoRelativePath(file.getAbsolutePath()));

    AddToIndexOperation trop = new AddToIndexOperation(files, repository2);
    trop.execute();

    CommitOperation cop =
        new CommitOperation(repository2, files, files, AUTHOR, COMMITTER, "Commit in repository 2");
    cop.execute();
    // We want to push from repository 2 to 1 (because repository 2 already
    // has tracking set up)
    //		URIish remote = repository1.getUri();
    URIish remote = new URIish("file:///" + repository1.getDirectory().toString());

    String trackingRef = "refs/remotes/origin/master";
    RemoteRefUpdate update =
        new RemoteRefUpdate(repository2, "HEAD", "refs/heads/master", false, trackingRef, null);
    PushOperationSpecification spec = new PushOperationSpecification();
    spec.addURIRefUpdates(remote, Arrays.asList(update));

    PushOperation push = new PushOperation(repository2, spec, false, 0);
    push.execute();

    PushOperationResult result = push.getOperationResult();
    PushResult pushResult = result.getPushResult(remote);
    TrackingRefUpdate trf = pushResult.getTrackingRefUpdate(trackingRef);
    System.out.println(trf.getLocalName());
    System.out.println(trf.getRemoteName());
    assertNotNull(
        "Expected result to have tracking ref update",
        pushResult.getTrackingRefUpdate(trackingRef));

    ObjectId trackingId = repository2.resolve(trackingRef);
    assertEquals("Expected tracking branch to be updated", cop.getCommit().getId(), trackingId);
    new Git(repository1).checkout().setName("refs/heads/master").call();
    File testFile = new File(workdir2, repositoryUtil.getRepoRelativePath(file.getAbsolutePath()));
    assertTrue(testFile.exists());
  }
Example #4
0
 protected RevCommit commitThenPush(Git git, String branch, CommitCommand commit)
     throws Exception {
   RevCommit answer = commit.call();
   if (LOG.isDebugEnabled()) {
     LOG.debug("Committed " + answer.getId() + " " + answer.getFullMessage());
   }
   if (isPushOnCommit()) {
     Iterable<PushResult> results = doPush(git);
     for (PushResult result : results) {
       if (LOG.isDebugEnabled()) {
         LOG.debug(
             "Pushed "
                 + result.getMessages()
                 + " "
                 + result.getURI()
                 + " branch: "
                 + branch
                 + " updates: "
                 + toString(result.getRemoteUpdates()));
       }
     }
   }
   return answer;
 }