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()); }
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; }