Example usage for org.eclipse.jgit.transport ReceiveCommand ReceiveCommand

List of usage examples for org.eclipse.jgit.transport ReceiveCommand ReceiveCommand

Introduction

In this page you can find the example usage for org.eclipse.jgit.transport ReceiveCommand ReceiveCommand.

Prototype

private ReceiveCommand(@Nullable String oldTarget, String newTarget, String name) 

Source Link

Document

Create a command to switch a symbolic reference's target.

Usage

From source file:com.gitblit.git.PatchsetReceivePack.java

License:Apache License

/**
 * Creates or updates an ticket with the specified patchset.
 *
 * @param cmd/*from www. j  a v a  2s. c  om*/
 * @return a ticket if the creation or update was successful
 */
private TicketModel processPatchset(PatchsetCommand cmd) {
    Change change = cmd.getChange();

    if (cmd.isNewTicket()) {
        // create the ticket object
        TicketModel ticket = ticketService.createTicket(repository, cmd.getTicketId(), change);
        if (ticket != null) {
            sendInfo("");
            sendHeader("#{0,number,0}: {1}", ticket.number,
                    StringUtils.trimString(ticket.title, Constants.LEN_SHORTLOG));
            sendInfo("created proposal ticket from patchset");
            sendInfo(ticketService.getTicketUrl(ticket));
            sendInfo("");

            // log the new patch ref
            RefLogUtils.updateRefLog(user, getRepository(),
                    Arrays.asList(new ReceiveCommand(cmd.getOldId(), cmd.getNewId(), cmd.getRefName())));

            // call any patchset hooks
            for (PatchsetHook hook : gitblit.getExtensions(PatchsetHook.class)) {
                try {
                    hook.onNewPatchset(ticket);
                } catch (Exception e) {
                    LOGGER.error("Failed to execute extension", e);
                }
            }

            return ticket;
        } else {
            sendError("FAILED to create ticket");
        }
    } else {
        // update an existing ticket
        TicketModel ticket = ticketService.updateTicket(repository, cmd.getTicketId(), change);
        if (ticket != null) {
            sendInfo("");
            sendHeader("#{0,number,0}: {1}", ticket.number,
                    StringUtils.trimString(ticket.title, Constants.LEN_SHORTLOG));
            if (change.patchset.rev == 1) {
                // new patchset
                sendInfo("uploaded patchset {0} ({1})", change.patchset.number,
                        change.patchset.type.toString());
            } else {
                // updated patchset
                sendInfo("added {0} {1} to patchset {2}", change.patchset.added,
                        change.patchset.added == 1 ? "commit" : "commits", change.patchset.number);
            }
            sendInfo(ticketService.getTicketUrl(ticket));
            sendInfo("");

            // log the new patchset ref
            RefLogUtils.updateRefLog(user, getRepository(),
                    Arrays.asList(new ReceiveCommand(cmd.getOldId(), cmd.getNewId(), cmd.getRefName())));

            // call any patchset hooks
            final boolean isNewPatchset = change.patchset.rev == 1;
            for (PatchsetHook hook : gitblit.getExtensions(PatchsetHook.class)) {
                try {
                    if (isNewPatchset) {
                        hook.onNewPatchset(ticket);
                    } else {
                        hook.onUpdatePatchset(ticket);
                    }
                } catch (Exception e) {
                    LOGGER.error("Failed to execute extension", e);
                }
            }

            // return the updated ticket
            return ticket;
        } else {
            sendError("FAILED to upload {0} for ticket {1,number,0}", change.patchset, cmd.getTicketId());
        }
    }

    return null;
}

From source file:com.gitblit.git.PatchsetReceivePack.java

License:Apache License

/**
 * Merge the specified patchset to the integration branch.
 *
 * @param ticket// w  w  w  .ja v a2s  . c om
 * @param patchset
 * @return true, if successful
 */
public MergeStatus merge(TicketModel ticket) {
    PersonIdent committer = new PersonIdent(user.getDisplayName(),
            StringUtils.isEmpty(user.emailAddress) ? (user.username + "@gitblit") : user.emailAddress);
    Patchset patchset = ticket.getCurrentPatchset();
    String message = MessageFormat.format("Merged #{0,number,0} \"{1}\"", ticket.number, ticket.title);
    Ref oldRef = null;
    try {
        oldRef = getRepository().findRef(ticket.mergeTo);
    } catch (IOException e) {
        LOGGER.error("failed to get ref for " + ticket.mergeTo, e);
    }
    MergeResult mergeResult = JGitUtils.merge(getRepository(), patchset.tip, ticket.mergeTo,
            getRepositoryModel().mergeType, committer, message);

    if (StringUtils.isEmpty(mergeResult.sha)) {
        LOGGER.error("FAILED to merge {} to {} ({})",
                new Object[] { patchset, ticket.mergeTo, mergeResult.status.name() });
        return mergeResult.status;
    }
    Change change = new Change(user.username);
    change.setField(Field.status, Status.Merged);
    change.setField(Field.mergeSha, mergeResult.sha);
    change.setField(Field.mergeTo, ticket.mergeTo);

    if (StringUtils.isEmpty(ticket.responsible)) {
        // unassigned tickets are assigned to the closer
        change.setField(Field.responsible, user.username);
    }

    long ticketId = ticket.number;
    ticket = ticketService.updateTicket(repository, ticket.number, change);
    if (ticket != null) {
        ticketNotifier.queueMailing(ticket);

        if (oldRef != null) {
            ReceiveCommand cmd = new ReceiveCommand(oldRef.getObjectId(), ObjectId.fromString(mergeResult.sha),
                    oldRef.getName());
            cmd.setResult(Result.OK);
            List<ReceiveCommand> commands = Arrays.asList(cmd);

            logRefChange(commands);
            updateIncrementalPushTags(commands);
            updateGitblitRefLog(commands);
        }

        // call patchset hooks
        for (PatchsetHook hook : gitblit.getExtensions(PatchsetHook.class)) {
            try {
                hook.onMergePatchset(ticket);
            } catch (Exception e) {
                LOGGER.error("Failed to execute extension", e);
            }
        }
        return mergeResult.status;
    } else {
        LOGGER.error("FAILED to resolve ticket {} by merge from web ui", ticketId);
    }
    return mergeResult.status;
}

From source file:com.gitblit.plugin.tbacl.Tests.java

License:Apache License

protected void push(User username, Branch branch, boolean expectSuccess) {

    RepositoryModel repo = new RepositoryModel();
    repo.name = "test.git";
    repo.owners = Arrays.asList(User.owner.name());

    IGitblit gitblit = new MockGitblit();
    gitblit.getSettings().overrideSetting(Plugin.SETTING_USE_TEAM_NAMESPACES, branch.useNamespace());

    try {/*from  ww  w  . j  a v a2 s  .c  o  m*/
        gitblit.updateRepositoryModel(repo.name, repo, false);
    } catch (GitBlitException e) {
    }

    UserModel user = gitblit.getUserModel(username.name());
    Repository db = gitblit.getRepository(repo.name);

    GitblitReceivePack rp = new GitblitReceivePack(gitblit, db, repo, user);

    ObjectId sha1 = ObjectId.fromString("2d291de884b4bb3164fda516ebc8510f757495b7");
    ObjectId sha2 = ObjectId.fromString("42972d830611fa4b1aa2c2c49c824a15e1987597");

    List<ReceiveCommand> commands = Arrays
            .asList(new ReceiveCommand(sha1, sha2, "refs/heads/" + branch.toString()));

    TBACLReceiveHook hook = new TBACLReceiveHook();
    hook.onPreReceive(rp, commands);

    for (ReceiveCommand cmd : commands) {
        assertEquals(cmd.getMessage(), expectSuccess, Result.NOT_ATTEMPTED == cmd.getResult());
    }
}

From source file:com.gitblit.tests.GroovyScriptTest.java

License:Apache License

@Test
public void testFogbugz() throws Exception {
    MockGitblit gitblit = new MockGitblit();
    MockLogger logger = new MockLogger();
    MockClientLogger clientLogger = new MockClientLogger();
    List<ReceiveCommand> commands = new ArrayList<ReceiveCommand>();
    commands.add(new ReceiveCommand(ObjectId.fromString("c18877690322dfc6ae3e37bb7f7085a24e94e887"),
            ObjectId.fromString("3fa7c46d11b11d61f1cbadc6888be5d0eae21969"), "refs/heads/master"));
    commands.add(new ReceiveCommand(ObjectId.fromString("c18877690322dfc6ae3e37bb7f7085a24e94e887"),
            ObjectId.fromString("3fa7c46d11b11d61f1cbadc6888be5d0eae21969"), "refs/heads/master2"));

    RepositoryModel repository = repositories().getRepositoryModel("helloworld.git");
    repository.customFields = new HashMap<String, String>();
    repository.customFields.put("fogbugzUrl", "http://bugs.test.com");
    repository.customFields.put("fogbugzRepositoryId", "1");
    repository.customFields.put("fogbugzCommitMessageRegex",
            "\\s*[Bb][Uu][Gg][(Zz)(Ss)]*\\s*[(IDs)]*\\s*[#:; ]+((\\d+[ ,:;#]*)+)");

    test("fogbugz.groovy", gitblit, logger, clientLogger, commands, repository);
}

From source file:com.gitblit.tests.GroovyScriptTest.java

License:Apache License

@Test
public void testSendHtmlMail() throws Exception {
    MockGitblit gitblit = new MockGitblit();
    MockLogger logger = new MockLogger();
    MockClientLogger clientLogger = new MockClientLogger();
    List<ReceiveCommand> commands = new ArrayList<ReceiveCommand>();
    commands.add(new ReceiveCommand(ObjectId.fromString("c18877690322dfc6ae3e37bb7f7085a24e94e887"),
            ObjectId.fromString("3fa7c46d11b11d61f1cbadc6888be5d0eae21969"), "refs/heads/master"));
    commands.add(new ReceiveCommand(ObjectId.fromString("c18877690322dfc6ae3e37bb7f7085a24e94e887"),
            ObjectId.fromString("3fa7c46d11b11d61f1cbadc6888be5d0eae21969"), "refs/heads/master2"));

    RepositoryModel repository = repositories().getRepositoryModel("helloworld.git");
    repository.mailingLists.add("list@helloworld.git");

    test("sendmail-html.groovy", gitblit, logger, clientLogger, commands, repository);
    assertEquals(1, logger.messages.size());
    assertEquals(1, gitblit.messages.size());
    MockMail m = gitblit.messages.get(0);
    assertEquals(5, m.toAddresses.size());
    assertTrue(m.message.contains("BIT"));
    assertTrue(m.message.contains("<html>"));
}

From source file:com.gitblit.tests.GroovyScriptTest.java

License:Apache License

@Test
public void testSendMail() throws Exception {
    MockGitblit gitblit = new MockGitblit();
    MockLogger logger = new MockLogger();
    MockClientLogger clientLogger = new MockClientLogger();
    List<ReceiveCommand> commands = new ArrayList<ReceiveCommand>();
    commands.add(new ReceiveCommand(ObjectId.fromString("c18877690322dfc6ae3e37bb7f7085a24e94e887"),
            ObjectId.fromString("3fa7c46d11b11d61f1cbadc6888be5d0eae21969"), "refs/heads/master"));
    commands.add(new ReceiveCommand(ObjectId.fromString("c18877690322dfc6ae3e37bb7f7085a24e94e887"),
            ObjectId.fromString("3fa7c46d11b11d61f1cbadc6888be5d0eae21969"), "refs/heads/master2"));

    RepositoryModel repository = repositories().getRepositoryModel("helloworld.git");
    repository.mailingLists.add("list@helloworld.git");

    test("sendmail.groovy", gitblit, logger, clientLogger, commands, repository);
    assertEquals(1, logger.messages.size());
    assertEquals(1, gitblit.messages.size());
    MockMail m = gitblit.messages.get(0);
    assertEquals(5, m.toAddresses.size());
    assertTrue(m.message.contains("BIT"));
}

From source file:com.gitblit.tests.GroovyScriptTest.java

License:Apache License

@Test
public void testProtectRefsCreateBranch() throws Exception {
    MockGitblit gitblit = new MockGitblit();
    MockLogger logger = new MockLogger();
    MockClientLogger clientLogger = new MockClientLogger();
    List<ReceiveCommand> commands = new ArrayList<ReceiveCommand>();
    commands.add(new ReceiveCommand(ObjectId.zeroId(),
            ObjectId.fromString("3fa7c46d11b11d61f1cbadc6888be5d0eae21969"), "refs/heads/master"));

    RepositoryModel repository = new RepositoryModel("ex@mple.git", "", "admin", new Date());

    test("protect-refs.groovy", gitblit, logger, clientLogger, commands, repository);
}

From source file:com.gitblit.tests.GroovyScriptTest.java

License:Apache License

@Test
public void testProtectRefsCreateTag() throws Exception {
    MockGitblit gitblit = new MockGitblit();
    MockLogger logger = new MockLogger();
    MockClientLogger clientLogger = new MockClientLogger();
    List<ReceiveCommand> commands = new ArrayList<ReceiveCommand>();
    commands.add(new ReceiveCommand(ObjectId.zeroId(),
            ObjectId.fromString("3fa7c46d11b11d61f1cbadc6888be5d0eae21969"), "refs/tags/v1.0"));

    RepositoryModel repository = new RepositoryModel("ex@mple.git", "", "admin", new Date());

    test("protect-refs.groovy", gitblit, logger, clientLogger, commands, repository);
    assertEquals(0, logger.messages.size());
}

From source file:com.gitblit.tests.GroovyScriptTest.java

License:Apache License

@Test
public void testProtectRefsFastForward() throws Exception {
    MockGitblit gitblit = new MockGitblit();
    MockLogger logger = new MockLogger();
    MockClientLogger clientLogger = new MockClientLogger();
    List<ReceiveCommand> commands = new ArrayList<ReceiveCommand>();
    commands.add(new ReceiveCommand(ObjectId.fromString("c18877690322dfc6ae3e37bb7f7085a24e94e887"),
            ObjectId.fromString("3fa7c46d11b11d61f1cbadc6888be5d0eae21969"), "refs/heads/master"));

    RepositoryModel repository = new RepositoryModel("ex@mple.git", "", "admin", new Date());

    test("protect-refs.groovy", gitblit, logger, clientLogger, commands, repository);
    assertEquals(0, logger.messages.size());
}

From source file:com.gitblit.tests.GroovyScriptTest.java

License:Apache License

@Test
public void testProtectRefsDeleteMasterBranch() throws Exception {
    MockGitblit gitblit = new MockGitblit();
    MockLogger logger = new MockLogger();
    MockClientLogger clientLogger = new MockClientLogger();
    List<ReceiveCommand> commands = new ArrayList<ReceiveCommand>();
    ReceiveCommand command = new ReceiveCommand(ObjectId.fromString("3fa7c46d11b11d61f1cbadc6888be5d0eae21969"),
            ObjectId.zeroId(), "refs/heads/master");
    commands.add(command);/*from  w  w  w . j av  a 2s .c o m*/

    RepositoryModel repository = new RepositoryModel("ex@mple.git", "", "admin", new Date());

    test("protect-refs.groovy", gitblit, logger, clientLogger, commands, repository);
    assertEquals(ReceiveCommand.Result.REJECTED_NODELETE, command.getResult());
    assertEquals(0, logger.messages.size());
}