/** * Push from repository1 "master" into "test" of repository2. * * @throws Exception */ @Test public void testPush() throws Exception { // push from repository1 to repository2 System.out.println(repository2.getBranch()); PushOperation pop = createPushOperation(); pop.execute(); assertEquals( org.eclipse.jgit.transport.RemoteRefUpdate.Status.UP_TO_DATE, getStatus(pop.getOperationResult())); System.out.println(pop.toString()); ArrayList<String> files = new ArrayList<String>(); File file = new File(workdir, "file2.txt"); FileUtils.createNewFile(file); repositoryUtil.appendFileContent(file, "new file"); files.add(repositoryUtil.getRepoRelativePath(file.getAbsolutePath())); AddToIndexOperation trop = new AddToIndexOperation(files, repository1); trop.execute(); CommitOperation cop = new CommitOperation(repository1, files, files, AUTHOR, COMMITTER, "added files"); cop.execute(); pop = createPushOperation(); pop.execute(); assertEquals( org.eclipse.jgit.transport.RemoteRefUpdate.Status.OK, getStatus(pop.getOperationResult())); System.out.println(pop.toString()); try { // assert that we cannot run this again pop.execute(); fail("Expected Exception not thrown"); } catch (IllegalStateException e) { // expected } pop = createPushOperation(); pop.execute(); assertEquals( org.eclipse.jgit.transport.RemoteRefUpdate.Status.UP_TO_DATE, getStatus(pop.getOperationResult())); System.out.println(pop.toString()); File testFile = new File(workdir2, repositoryUtil.getRepoRelativePath(file.getAbsolutePath())); assertFalse(testFile.exists()); testFile = new File(workdir, repositoryUtil.getRepoRelativePath(file.getAbsolutePath())); assertTrue(testFile.exists()); // check out test and verify the file is there new Git(repository2).checkout().setName("refs/heads/test").call(); testFile = new File(workdir2, repositoryUtil.getRepoRelativePath(file.getAbsolutePath())); assertTrue(testFile.exists()); }
@Test public void testIllegalStateExceptionOnGetResultWithoutRun() throws Exception { // push from repository1 to repository2 PushOperation pop = createPushOperation(); try { pop.getOperationResult(); fail("Expected Exception not thrown"); } catch (IllegalStateException e) { // expected } }
@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()); }