| | |
| | |
|
| | | import com.gitblit.Constants;
|
| | | import com.gitblit.Keys;
|
| | | import com.gitblit.extensions.PatchsetHook;
|
| | | import com.gitblit.manager.IGitblit;
|
| | | import com.gitblit.models.RepositoryModel;
|
| | | import com.gitblit.models.TicketModel;
|
| | |
| | | }
|
| | |
|
| | | if (isPatchsetRef(cmd.getRefName()) && processPatchsets) {
|
| | |
|
| | | if (ticketService == null) {
|
| | | sendRejection(cmd, "Sorry, the ticket service is unavailable and can not accept patchsets at this time.");
|
| | | continue;
|
| | |
| | | LOGGER.error("{} already has refs in the {} namespace",
|
| | | repository.name, Constants.R_FOR);
|
| | | sendRejection(cmd, "Sorry, a repository administrator will have to remove the {} namespace", Constants.R_FOR);
|
| | | continue;
|
| | | }
|
| | |
|
| | | if (cmd.getNewId().equals(ObjectId.zeroId())) {
|
| | | // ref deletion request
|
| | | if (cmd.getRefName().startsWith(Constants.R_TICKET)) {
|
| | | if (user.canDeleteRef(repository)) {
|
| | | batch.addCommand(cmd);
|
| | | } else {
|
| | | sendRejection(cmd, "Sorry, you do not have permission to delete {}", cmd.getRefName());
|
| | | }
|
| | | } else {
|
| | | sendRejection(cmd, "Sorry, you can not delete {}", cmd.getRefName());
|
| | | }
|
| | | continue;
|
| | | }
|
| | |
|
| | |
| | | break;
|
| | | }
|
| | | }
|
| | | sendError("Sorry, {0} already merged {1} from ticket {2,number,0} to {3}!",
|
| | | if (mergeChange != null) {
|
| | | sendError("Sorry, {0} already merged {1} from ticket {2,number,0} to {3}!",
|
| | | mergeChange.author, mergeChange.patchset, number, ticket.mergeTo);
|
| | | }
|
| | | sendRejection(cmd, "Ticket {0,number,0} already resolved", number);
|
| | | return null;
|
| | | } else if (!StringUtils.isEmpty(ticket.mergeTo)) {
|
| | |
| | | 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");
|
| | |
| | | // 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;
|
| | |
| | | ObjectId.fromString(mergeResult.sha), oldRef.getName());
|
| | | RefLogUtils.updateRefLog(user, getRepository(), Arrays.asList(cmd));
|
| | | }
|
| | |
|
| | | // 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);
|