List of usage examples for org.eclipse.jgit.lib PersonIdent PersonIdent
public PersonIdent(PersonIdent pi, Date aWhen)
From source file:at.bitandart.zoubek.mervin.gerrit.GerritReviewRepositoryService.java
License:Open Source License
@Override public void saveReview(URI uri, ModelReview modelReview, User currentReviewer, IProgressMonitor monitor) throws InvalidReviewRepositoryException, InvalidReviewException, RepositoryIOException { monitor.beginTask("Connecting to repository", IProgressMonitor.UNKNOWN); String repoFileURI = COMMENTS_FILE_URI; try {/*from w w w . ja va 2 s .com*/ Git git = Git.open(new File(uri)); Repository repository = git.getRepository(); ObjectInserter objectInserter = repository.newObjectInserter(); String commentRefName = getCommentRefName(modelReview); Ref commentRef = repository.exactRef(commentRefName); DirCache index = DirCache.newInCore(); DirCacheBuilder dirCacheBuilder = index.builder(); monitor.beginTask("Preparing commit...", IProgressMonitor.UNKNOWN); if (commentRef != null) { /* * The ref already exists so we have to copy the previous * RevTree to keep all already attached files */ RevWalk revWalk = new RevWalk(repository); RevCommit prevCommit = revWalk.parseCommit(commentRef.getObjectId()); RevTree tree = prevCommit.getTree(); List<String> ignoredFiles = new ArrayList<>(); /* * add file path of the new file to the ignored file paths, as * we don't want any already existing old file in our new tree */ ignoredFiles.add(repoFileURI); buildDirCacheFromTree(tree, repository, dirCacheBuilder, ignoredFiles); revWalk.close(); } monitor.beginTask("Writing comments file...", IProgressMonitor.UNKNOWN); ResourceSet resourceSet = new ResourceSetImpl(); Resource resource = resourceSet.createResource(org.eclipse.emf.common.util.URI.createURI(repoFileURI)); addCommentsToResource(modelReview, resource); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); resource.save(outputStream, null); // insert file as object byte[] content = outputStream.toByteArray(); long length = content.length; InputStream inputStream = new ByteArrayInputStream(content); ObjectId objectId = objectInserter.insert(Constants.OBJ_BLOB, length, inputStream); inputStream.close(); // create tree entry DirCacheEntry entry = new DirCacheEntry(repoFileURI); entry.setFileMode(FileMode.REGULAR_FILE); entry.setLastModified(System.currentTimeMillis()); entry.setLength(length); entry.setObjectId(objectId); dirCacheBuilder.add(entry); dirCacheBuilder.finish(); // write new tree in database ObjectId indexTreeId = index.writeTree(objectInserter); monitor.beginTask("Commiting comments...", IProgressMonitor.UNKNOWN); // create commit CommitBuilder commitBuilder = new CommitBuilder(); PersonIdent personIdent = new PersonIdent("Mervin", "mervin@mervin.modelreview"); commitBuilder.setCommitter(personIdent); commitBuilder.setAuthor(personIdent); commitBuilder.setMessage( MessageFormat.format("Updated comments by user \"{0}\"", currentReviewer.getName())); if (commentRef != null) { commitBuilder.setParentId(commentRef.getObjectId()); } commitBuilder.setTreeId(indexTreeId); // commit ObjectId commitId = objectInserter.insert(commitBuilder); objectInserter.flush(); RefUpdate refUpdate = repository.updateRef(commentRefName); refUpdate.setNewObjectId(commitId); if (commentRef != null) refUpdate.setExpectedOldObjectId(commentRef.getObjectId()); else refUpdate.setExpectedOldObjectId(ObjectId.zeroId()); /* * TODO the result handling below is copied from the CommitCommand * class, I don't know if this is really necessary in our case */ Result result = refUpdate.forceUpdate(); switch (result) { case NEW: case FORCED: case FAST_FORWARD: { if (repository.getRepositoryState() == RepositoryState.MERGING_RESOLVED) { /* * Commit was successful. Now delete the files used for * merge commits */ repository.writeMergeCommitMsg(null); repository.writeMergeHeads(null); } else if (repository.getRepositoryState() == RepositoryState.CHERRY_PICKING_RESOLVED) { repository.writeMergeCommitMsg(null); repository.writeCherryPickHead(null); } else if (repository.getRepositoryState() == RepositoryState.REVERTING_RESOLVED) { repository.writeMergeCommitMsg(null); repository.writeRevertHead(null); } break; } case REJECTED: case LOCK_FAILURE: throw new RepositoryIOException("Error occured during writing to the git repository", new ConcurrentRefUpdateException("Could not lock ref " + refUpdate.getRef().getName(), refUpdate.getRef(), result)); default: throw new RepositoryIOException("Error occured during writing to the git repository", new JGitInternalException(MessageFormat.format(JGitText.get().updatingRefFailed, refUpdate.getRef().getName(), commitId.toString(), result))); } } catch (IOException e) { throw new InvalidReviewRepositoryException("Could not open local git repository", e); } finally { monitor.done(); } }
From source file:br.com.riselabs.cotonet.test.helpers.ConflictBasedRepositoryTestCase.java
License:Open Source License
private Map<String, PersonIdent> getDevs() { Map<String, PersonIdent> devs = new HashMap<String, PersonIdent>(); devs.put("devY", new PersonIdent("Dev Y", "devy@project.com")); devs.put("devX", new PersonIdent("Dev X", "devx@project.com")); devs.put("devA", new PersonIdent("Dev A", "deva@project.com")); devs.put("devB", new PersonIdent("Dev B", "devb@project.com")); devs.put("devC", new PersonIdent("Dev C", "devc@project.com")); devs.put("devD", new PersonIdent("Dev D", "devd@project.com")); devs.put("devE", new PersonIdent("Dev E", "deve@project.com")); return devs;/*from w w w . jav a2 s.c o m*/ }
From source file:com.amd.gerrit.plugins.manifestsubscription.VersionedManifests.java
License:Open Source License
@Override protected boolean onSave(CommitBuilder commit) throws IOException { StringBuilder commitMsg = new StringBuilder(); commitMsg.append("Snapshot manifest from " + srcManifestRepo + " updated\n\n"); if (extraCommitMsg != null && extraCommitMsg.length() > 0) { commitMsg.append(extraCommitMsg); }/*from w w w. j a va 2 s . co m*/ String path; Manifest manifest; for (Map.Entry<String, Manifest> entry : manifests.entrySet()) { path = entry.getKey(); manifest = entry.getValue(); try { saveManifest(path, manifest); } catch (JAXBException e) { throw new IOException(e); } } // For some reason the default author and committer date is // invalid (always the same date and time) Date date = new Date(); commit.setAuthor(new PersonIdent(commit.getAuthor(), date)); commit.setCommitter(new PersonIdent(commit.getCommitter(), date)); if (commit.getMessage() == null || "".equals(commit.getMessage())) { commit.setMessage(commitMsg.toString()); } return true; }
From source file:com.barchart.jenkins.cascade.PluginScm.java
License:BSD License
/** * Convert identity from jenkins to jgit. */// w ww .j ava 2 s . c o m public static PersonIdent person(final GitSCM gitScm) { final String name = gitScm.getGitConfigNameToUse(); if (name == null) { return null; } final String mail = gitScm.getGitConfigEmailToUse(); if (mail == null) { return null; } final PersonIdent person = new PersonIdent(name, mail); return person; }
From source file:com.cisco.step.jenkins.plugins.jenkow.JenkowWorkflowRepository.java
License:Open Source License
/** * Requires the admin access to be able to push *//*from w w w . j a va 2 s. c o m*/ @Override public ReceivePack createReceivePack(HttpServletRequest context, Repository db) throws ServiceNotEnabledException, ServiceNotAuthorizedException { Authentication a = Jenkins.getAuthentication(); ReceivePack rp = createReceivePack(db); rp.setRefLogIdent(new PersonIdent(a.getName(), a.getName() + "@" + context.getRemoteAddr())); return rp; }
From source file:com.gitblit.build.BuildGhPages.java
License:Apache License
public static void main(String[] args) { Params params = new Params(); JCommander jc = new JCommander(params); try {//from w w w. j ava2 s .c o m jc.parse(args); } catch (ParameterException t) { System.err.println(t.getMessage()); jc.usage(); } File source = new File(params.sourceFolder); String ghpages = "refs/heads/gh-pages"; try { File gitDir = FileKey.resolve(new File(params.repositoryFolder), FS.DETECTED); Repository repository = new FileRepository(gitDir); RefModel issuesBranch = JGitUtils.getPagesBranch(repository); if (issuesBranch == null) { JGitUtils.createOrphanBranch(repository, "gh-pages", null); } System.out.println("Updating gh-pages branch..."); ObjectId headId = repository.resolve(ghpages + "^{commit}"); ObjectInserter odi = repository.newObjectInserter(); try { // Create the in-memory index of the new/updated issue. DirCache index = createIndex(repository, headId, source, params.obliterate); ObjectId indexTreeId = index.writeTree(odi); // Create a commit object PersonIdent author = new PersonIdent("Gitblit", "gitblit@localhost"); CommitBuilder commit = new CommitBuilder(); commit.setAuthor(author); commit.setCommitter(author); commit.setEncoding(Constants.CHARACTER_ENCODING); commit.setMessage("updated pages"); commit.setParentId(headId); commit.setTreeId(indexTreeId); // Insert the commit into the repository ObjectId commitId = odi.insert(commit); odi.flush(); RevWalk revWalk = new RevWalk(repository); try { RevCommit revCommit = revWalk.parseCommit(commitId); RefUpdate ru = repository.updateRef(ghpages); ru.setNewObjectId(commitId); ru.setExpectedOldObjectId(headId); ru.setRefLogMessage("commit: " + revCommit.getShortMessage(), false); Result rc = ru.forceUpdate(); switch (rc) { case NEW: case FORCED: case FAST_FORWARD: break; case REJECTED: case LOCK_FAILURE: throw new ConcurrentRefUpdateException(JGitText.get().couldNotLockHEAD, ru.getRef(), rc); default: throw new JGitInternalException(MessageFormat.format(JGitText.get().updatingRefFailed, ghpages, commitId.toString(), rc)); } } finally { revWalk.release(); } } finally { odi.release(); } System.out.println("gh-pages updated."); } catch (Throwable t) { t.printStackTrace(); } }
From source file:com.gitblit.git.GitblitReceivePack.java
License:Apache License
/** * Optionally update the incremental push tags. * * @param commands//w w w . j a v a 2s . c o m */ protected void updateIncrementalPushTags(Collection<ReceiveCommand> commands) { if (!repository.useIncrementalPushTags) { return; } // tag each pushed branch tip String emailAddress = user.emailAddress == null ? getRefLogIdent().getEmailAddress() : user.emailAddress; PersonIdent userIdent = new PersonIdent(user.getDisplayName(), emailAddress); for (ReceiveCommand cmd : commands) { if (!cmd.getRefName().startsWith(Constants.R_HEADS)) { // only tag branch ref changes continue; } if (!ReceiveCommand.Type.DELETE.equals(cmd.getType()) && ReceiveCommand.Result.OK.equals(cmd.getResult())) { String objectId = cmd.getNewId().getName(); String branch = cmd.getRefName().substring(Constants.R_HEADS.length()); // get translation based on the server's locale setting String template = Translation.get("gb.incrementalPushTagMessage"); String msg = MessageFormat.format(template, branch); String prefix; if (StringUtils.isEmpty(repository.incrementalPushTagPrefix)) { prefix = settings.getString(Keys.git.defaultIncrementalPushTagPrefix, "r"); } else { prefix = repository.incrementalPushTagPrefix; } JGitUtils.createIncrementalRevisionTag(getRepository(), objectId, userIdent, prefix, "0", msg); } } }
From source file:com.gitblit.git.GitblitReceivePackFactory.java
License:Apache License
@Override public ReceivePack create(X req, Repository db) throws ServiceNotEnabledException, ServiceNotAuthorizedException { UserModel user = UserModel.ANONYMOUS; String repositoryName = ""; String origin = ""; String gitblitUrl = ""; int timeout = 0; Transport transport = null;/*from w w w.j a va 2 s . c om*/ if (req instanceof HttpServletRequest) { // http/https request may or may not be authenticated HttpServletRequest client = (HttpServletRequest) req; repositoryName = client.getAttribute("gitblitRepositoryName").toString(); origin = client.getRemoteHost(); gitblitUrl = HttpUtils.getGitblitURL(client); // determine pushing user String username = client.getRemoteUser(); if (!StringUtils.isEmpty(username)) { UserModel u = gitblit.getUserModel(username); if (u != null) { user = u; } } // determine the transport if ("http".equals(client.getScheme())) { transport = Transport.HTTP; } else if ("https".equals(client.getScheme())) { transport = Transport.HTTPS; } } else if (req instanceof GitDaemonClient) { // git daemon request is always anonymous GitDaemonClient client = (GitDaemonClient) req; repositoryName = client.getRepositoryName(); origin = client.getRemoteAddress().getHostAddress(); // set timeout from Git daemon timeout = client.getDaemon().getTimeout(); transport = Transport.GIT; } else if (req instanceof SshDaemonClient) { // SSH request is always authenticated SshDaemonClient client = (SshDaemonClient) req; repositoryName = client.getRepositoryName(); origin = client.getRemoteAddress().toString(); user = client.getUser(); transport = Transport.SSH; } if (!acceptPush(transport)) { throw new ServiceNotAuthorizedException(); } boolean allowAnonymousPushes = settings.getBoolean(Keys.git.allowAnonymousPushes, false); if (!allowAnonymousPushes && UserModel.ANONYMOUS.equals(user)) { // prohibit anonymous pushes throw new ServiceNotEnabledException(); } String url = settings.getString(Keys.web.canonicalUrl, null); if (StringUtils.isEmpty(url)) { url = gitblitUrl; } final RepositoryModel repository = gitblit.getRepositoryModel(repositoryName); // Determine which receive pack to use for pushes final GitblitReceivePack rp; if (gitblit.getTicketService().isAcceptingNewPatchsets(repository)) { rp = new PatchsetReceivePack(gitblit, db, repository, user); } else { rp = new GitblitReceivePack(gitblit, db, repository, user); } rp.setGitblitUrl(url); rp.setRefLogIdent(new PersonIdent(user.username, user.username + "@" + origin)); rp.setTimeout(timeout); return rp; }
From source file:com.gitblit.git.PatchsetReceivePack.java
License:Apache License
/** * Merge the specified patchset to the integration branch. * * @param ticket//from w w w .ja v a 2 s . c o m * @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.git.ReceiveHook.java
License:Apache License
/** * Instrumentation point where the incoming push has been applied to the * repository. This is the point where we would trigger a Jenkins build * or send an email./*from w ww .j a v a 2 s. co m*/ */ @Override public void onPostReceive(ReceivePack rp, Collection<ReceiveCommand> commands) { if (commands.size() == 0) { logger.debug("skipping post-receive hooks, no refs created, updated, or removed"); return; } // log ref changes for (ReceiveCommand cmd : commands) { if (Result.OK.equals(cmd.getResult())) { // add some logging for important ref changes switch (cmd.getType()) { case DELETE: logger.info(MessageFormat.format("{0} DELETED {1} in {2} ({3})", user.username, cmd.getRefName(), repository.name, cmd.getOldId().name())); break; case CREATE: logger.info(MessageFormat.format("{0} CREATED {1} in {2}", user.username, cmd.getRefName(), repository.name)); break; case UPDATE: logger.info(MessageFormat.format("{0} UPDATED {1} in {2} (from {3} to {4})", user.username, cmd.getRefName(), repository.name, cmd.getOldId().name(), cmd.getNewId().name())); break; case UPDATE_NONFASTFORWARD: logger.info(MessageFormat.format("{0} UPDATED NON-FAST-FORWARD {1} in {2} (from {3} to {4})", user.username, cmd.getRefName(), repository.name, cmd.getOldId().name(), cmd.getNewId().name())); break; default: break; } } } if (repository.useIncrementalPushTags) { // tag each pushed branch tip String emailAddress = user.emailAddress == null ? rp.getRefLogIdent().getEmailAddress() : user.emailAddress; PersonIdent userIdent = new PersonIdent(user.getDisplayName(), emailAddress); for (ReceiveCommand cmd : commands) { if (!cmd.getRefName().startsWith("refs/heads/")) { // only tag branch ref changes continue; } if (!ReceiveCommand.Type.DELETE.equals(cmd.getType()) && ReceiveCommand.Result.OK.equals(cmd.getResult())) { String objectId = cmd.getNewId().getName(); String branch = cmd.getRefName().substring("refs/heads/".length()); // get translation based on the server's locale setting String template = Translation.get("gb.incrementalPushTagMessage"); String msg = MessageFormat.format(template, branch); String prefix; if (StringUtils.isEmpty(repository.incrementalPushTagPrefix)) { prefix = GitBlit.getString(Keys.git.defaultIncrementalPushTagPrefix, "r"); } else { prefix = repository.incrementalPushTagPrefix; } JGitUtils.createIncrementalRevisionTag(rp.getRepository(), objectId, userIdent, prefix, "0", msg); } } } // update push log try { 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)); if (!ArrayUtils.isEmpty(repository.postReceiveScripts)) { scripts.addAll(repository.postReceiveScripts); } runGroovy(repository, user, commands, rp, scripts); }