| | |
| | | import com.gitblit.client.Translation;
|
| | | import com.gitblit.models.RepositoryModel;
|
| | | import com.gitblit.models.UserModel;
|
| | | import com.gitblit.utils.ArrayUtils;
|
| | | import com.gitblit.utils.ClientLogger;
|
| | | import com.gitblit.utils.JGitUtils;
|
| | | import com.gitblit.utils.PushLogUtils;
|
| | | import com.gitblit.utils.RefLogUtils;
|
| | | import com.gitblit.utils.StringUtils;
|
| | |
|
| | | /**
|
| | |
| | | // identity of the merging user.
|
| | | boolean allRejected = false;
|
| | | for (ReceiveCommand cmd : commands) {
|
| | | String linearParent = null;
|
| | | try {
|
| | | List<RevCommit> commits = JGitUtils.getRevLog(rp.getRepository(), cmd.getOldId().name(), cmd.getNewId().name());
|
| | | for (RevCommit commit : commits) {
|
| | | |
| | | if (linearParent != null) {
|
| | | if (!commit.getName().equals(linearParent)) {
|
| | | // ignore: commit is right-descendant of a merge
|
| | | continue;
|
| | | }
|
| | | }
|
| | | |
| | | // update expected next commit id
|
| | | if (commit.getParentCount() == 0) {
|
| | | linearParent = null;
|
| | | } else {
|
| | | linearParent = commit.getParents()[0].getId().getName();
|
| | | }
|
| | | |
| | | PersonIdent committer = commit.getCommitterIdent();
|
| | | if (!user.is(committer.getName(), committer.getEmailAddress())) {
|
| | | String reason;
|
| | | if (StringUtils.isEmpty(user.emailAddress)) {
|
| | | // account does not have en email address
|
| | | reason = MessageFormat.format("{0} by {1} <{2}> was not committed by {3} ({4})", commit.getId().name(), committer.getName(), StringUtils.isEmpty(committer.getEmailAddress()) ? "?":committer.getEmailAddress(), user.getDisplayName(), user.username);
|
| | | // account does not have an email address
|
| | | reason = MessageFormat.format("{0} by {1} <{2}> was not committed by {3} ({4})", |
| | | commit.getId().name(), committer.getName(), StringUtils.isEmpty(committer.getEmailAddress()) ? "?":committer.getEmailAddress(), user.getDisplayName(), user.username);
|
| | | } else {
|
| | | // account has an email address
|
| | | reason = MessageFormat.format("{0} by {1} <{2}> was not committed by {3} ({4}) <{5}>", commit.getId().name(), committer.getName(), StringUtils.isEmpty(committer.getEmailAddress()) ? "?":committer.getEmailAddress(), user.getDisplayName(), user.username, user.emailAddress);
|
| | | reason = MessageFormat.format("{0} by {1} <{2}> was not committed by {3} ({4}) <{5}>", |
| | | commit.getId().name(), committer.getName(), StringUtils.isEmpty(committer.getEmailAddress()) ? "?":committer.getEmailAddress(), user.getDisplayName(), user.username, user.emailAddress);
|
| | | }
|
| | | logger.warn(reason);
|
| | | cmd.setResult(Result.REJECTED_OTHER_REASON, reason);
|
| | |
| | |
|
| | | Set<String> scripts = new LinkedHashSet<String>();
|
| | | scripts.addAll(GitBlit.self().getPreReceiveScriptsInherited(repository));
|
| | | scripts.addAll(repository.preReceiveScripts);
|
| | | if (!ArrayUtils.isEmpty(repository.preReceiveScripts)) {
|
| | | scripts.addAll(repository.preReceiveScripts);
|
| | | }
|
| | | runGroovy(repository, user, commands, rp, scripts);
|
| | | for (ReceiveCommand cmd : commands) {
|
| | | if (!Result.NOT_ATTEMPTED.equals(cmd.getResult())) {
|
| | |
| | |
|
| | | // update push log
|
| | | try {
|
| | | PushLogUtils.updatePushLog(user, rp.getRepository(), commands);
|
| | | RefLogUtils.updateRefLog(user, rp.getRepository(), commands);
|
| | | logger.debug(MessageFormat.format("{0} push log updated", repository.name));
|
| | | } catch (Exception e) {
|
| | | logger.error(MessageFormat.format("Failed to update {0} pushlog", repository.name), e);
|
| | |
| | | // run Groovy hook scripts
|
| | | Set<String> scripts = new LinkedHashSet<String>();
|
| | | scripts.addAll(GitBlit.self().getPostReceiveScriptsInherited(repository));
|
| | | scripts.addAll(repository.postReceiveScripts);
|
| | | if (!ArrayUtils.isEmpty(repository.postReceiveScripts)) {
|
| | | scripts.addAll(repository.postReceiveScripts);
|
| | | }
|
| | | runGroovy(repository, user, commands, rp, scripts);
|
| | | }
|
| | |
|