コード例 #1
0
  @Test
  public void testConflictsFromOtherPush() throws Exception {
    // now Repository 2 update the file and push
    File file1 = new File(workdir2, "file.txt");
    repositoryUtil.appendFileContent(file1, "-->from Repository 2");
    Git git = new Git(repository2);
    git.add().addFilepattern("file.txt").call();
    git.commit().setMessage("Second Commit").call();

    URIish remote = new URIish("file:///" + repository1.getDirectory().toString());
    // now push the Repository 2 into the Repository 1
    RefSpec rs = new RefSpec();
    rs = rs.setSourceDestination("refs/heads/master", "refs/heads/master");
    PushOperation po =
        new PushOperation(repository2, remote.toString(), Arrays.asList(rs), false, 0);
    po.execute();
    System.out.println(po.toString());

    // Now Repository 3 update the file and push
    File file2 = new File(workdir3, "file.txt");
    repositoryUtil.appendFileContent(file2, "-->from Repository 3");
    git = new Git(repository3);
    git.add().addFilepattern("file.txt").call();
    git.commit().setMessage("Third Commit").call();

    // now push the Repository 3 into the Repository 1
    rs = new RefSpec();
    rs = rs.setSourceDestination("refs/heads/master", "refs/heads/master");
    //		rs=rs.setForceUpdate(true);
    po = new PushOperation(repository3, remote.toString(), Arrays.asList(rs), false, 0);
    po.execute();
    System.out.println(po.toString());
  }
コード例 #2
0
 @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
   }
 }
コード例 #3
0
  @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());
  }
コード例 #4
0
  /**
   * 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());
  }