List of usage examples for org.eclipse.jgit.lib RefUpdate link
public Result link(String target) throws IOException
From source file:com.gitblit.utils.JGitUtils.java
License:Apache License
/** * Sets the symbolic ref HEAD to the specified target ref. The * HEAD will be detached if the target ref is not a branch. * * @param repository/*from w w w . j av a 2 s .co m*/ * @param targetRef * @return true if successful */ public static boolean setHEADtoRef(Repository repository, String targetRef) { try { // detach HEAD if target ref is not a branch boolean detach = !targetRef.startsWith(Constants.R_HEADS); RefUpdate.Result result; RefUpdate head = repository.updateRef(Constants.HEAD, detach); if (detach) { // Tag RevCommit commit = getCommit(repository, targetRef); head.setNewObjectId(commit.getId()); result = head.forceUpdate(); } else { result = head.link(targetRef); } switch (result) { case NEW: case FORCED: case NO_CHANGE: case FAST_FORWARD: return true; default: LOGGER.error(MessageFormat.format("{0} HEAD update to {1} returned result {2}", repository.getDirectory().getAbsolutePath(), targetRef, result)); } } catch (Throwable t) { error(t, repository, "{0} failed to set HEAD to {1}", targetRef); } return false; }
From source file:com.google.gerrit.server.project.CreateProject.java
License:Apache License
public Project createProject(CreateProjectArgs args) throws BadRequestException, ResourceConflictException, IOException, ConfigInvalidException { final Project.NameKey nameKey = args.getProject(); try {//www . java2 s . c om final String head = args.permissionsOnly ? RefNames.REFS_CONFIG : args.branch.get(0); try (Repository repo = repoManager.openRepository(nameKey)) { if (repo.getObjectDatabase().exists()) { throw new ResourceConflictException("project \"" + nameKey + "\" exists"); } } catch (RepositoryNotFoundException e) { // It does not exist, safe to ignore. } try (Repository repo = repoManager.createRepository(nameKey)) { RefUpdate u = repo.updateRef(Constants.HEAD); u.disableRefLog(); u.link(head); createProjectConfig(args); if (!args.permissionsOnly && args.createEmptyCommit) { createEmptyCommits(repo, nameKey, args.branch); } NewProjectCreatedListener.Event event = new NewProjectCreatedListener.Event() { @Override public String getProjectName() { return nameKey.get(); } @Override public String getHeadName() { return head; } }; for (NewProjectCreatedListener l : createdListener) { try { l.onNewProjectCreated(event); } catch (RuntimeException e) { log.warn("Failure in NewProjectCreatedListener", e); } } return projectCache.get(nameKey).getProject(); } } catch (RepositoryCaseMismatchException e) { throw new ResourceConflictException( "Cannot create " + nameKey.get() + " because the name is already occupied by another project." + " The other project has the same name, only spelled in a" + " different case."); } catch (RepositoryNotFoundException badName) { throw new BadRequestException("invalid project name: " + nameKey); } catch (ConfigInvalidException e) { String msg = "Cannot create " + nameKey; log.error(msg, e); throw e; } }
From source file:com.google.gerrit.server.project.PerformCreateProject.java
License:Apache License
public Project createProject() throws ProjectCreationFailedException { validateParameters();/*ww w .j a v a 2 s. c o m*/ final Project.NameKey nameKey = createProjectArgs.getProject(); try { final String head = createProjectArgs.permissionsOnly ? RefNames.REFS_CONFIG : createProjectArgs.branch.get(0); final Repository repo = repoManager.createRepository(nameKey); try { NewProjectCreatedListener.Event event = new NewProjectCreatedListener.Event() { @Override public String getProjectName() { return nameKey.get(); } @Override public String getHeadName() { return head; } }; for (NewProjectCreatedListener l : createdListener) { try { l.onNewProjectCreated(event); } catch (RuntimeException e) { log.warn("Failure in NewProjectCreatedListener", e); } } final RefUpdate u = repo.updateRef(Constants.HEAD); u.disableRefLog(); u.link(head); createProjectConfig(); if (!createProjectArgs.permissionsOnly && createProjectArgs.createEmptyCommit) { createEmptyCommits(repo, nameKey, createProjectArgs.branch); } return projectCache.get(nameKey).getProject(); } finally { repo.close(); } } catch (RepositoryCaseMismatchException e) { throw new ProjectCreationFailedException( "Cannot create " + nameKey.get() + " because the name is already occupied by another project." + " The other project has the same name, only spelled in a" + " different case.", e); } catch (RepositoryNotFoundException badName) { throw new ProjectCreationFailedException("Cannot create " + nameKey, badName); } catch (IllegalStateException err) { try { final Repository repo = repoManager.openRepository(nameKey); try { if (repo.getObjectDatabase().exists()) { throw new ProjectCreationFailedException("project \"" + nameKey + "\" exists"); } throw err; } finally { repo.close(); } } catch (IOException ioErr) { final String msg = "Cannot create " + nameKey; log.error(msg, err); throw new ProjectCreationFailedException(msg, ioErr); } } catch (Exception e) { final String msg = "Cannot create " + nameKey; log.error(msg, e); throw new ProjectCreationFailedException(msg, e); } }
From source file:com.google.gerrit.server.project.SetHead.java
License:Apache License
@Override public String apply(final ProjectResource rsrc, Input input) throws AuthException, ResourceNotFoundException, BadRequestException, UnprocessableEntityException, IOException { if (!rsrc.getControl().isOwner()) { throw new AuthException("restricted to project owner"); }/*from w w w.j a va 2 s.c o m*/ if (input == null || Strings.isNullOrEmpty(input.ref)) { throw new BadRequestException("ref required"); } String ref = RefNames.fullName(input.ref); try (Repository repo = repoManager.openRepository(rsrc.getNameKey())) { Map<String, Ref> cur = repo.getRefDatabase().exactRef(Constants.HEAD, ref); if (!cur.containsKey(ref)) { throw new UnprocessableEntityException(String.format("Ref Not Found: %s", ref)); } final String oldHead = cur.get(Constants.HEAD).getTarget().getName(); final String newHead = ref; if (!oldHead.equals(newHead)) { final RefUpdate u = repo.updateRef(Constants.HEAD, true); u.setRefLogIdent(identifiedUser.get().newRefLogIdent()); RefUpdate.Result res = u.link(newHead); switch (res) { case NO_CHANGE: case RENAMED: case FORCED: case NEW: break; default: throw new IOException("Setting HEAD failed with " + res); } HeadUpdatedListener.Event event = new HeadUpdatedListener.Event() { @Override public String getProjectName() { return rsrc.getNameKey().get(); } @Override public String getOldHeadName() { return oldHead; } @Override public String getNewHeadName() { return newHead; } }; for (HeadUpdatedListener l : headUpdatedListener) { try { l.onHeadUpdated(event); } catch (RuntimeException e) { log.warn("Failure in HeadUpdatedListener", e); } } } return ref; } catch (RepositoryNotFoundException e) { throw new ResourceNotFoundException(rsrc.getName()); } }
From source file:com.google.gerrit.server.schema.AllProjectsCreator.java
License:Apache License
public void create() throws IOException, ConfigInvalidException { try (Repository git = mgr.openRepository(allProjectsName)) { initAllProjects(git);/* ww w. j a va 2s.c om*/ } catch (RepositoryNotFoundException notFound) { // A repository may be missing if this project existed only to store // inheritable permissions. For example 'All-Projects'. try (Repository git = mgr.createRepository(allProjectsName)) { initAllProjects(git); RefUpdate u = git.updateRef(Constants.HEAD); u.link(RefNames.REFS_CONFIG); } catch (RepositoryNotFoundException err) { String name = allProjectsName.get(); throw new IOException("Cannot create repository " + name, err); } } }
From source file:com.google.gerrit.server.schema.Schema_56.java
License:Apache License
@Override protected void migrateData(ReviewDb db, UpdateUI ui) { for (Project.NameKey name : mgr.list()) { Repository git;/* w w w . j a v a 2 s . c o m*/ try { git = mgr.openRepository(name); } catch (RepositoryNotFoundException e) { ui.message("warning: Cannot open " + name.get()); continue; } try { Map<String, Ref> all = git.getAllRefs(); if (all.keySet().equals(keysOne) || all.keySet().equals(keysTwo)) { try { RefUpdate update = git.updateRef(Constants.HEAD); update.disableRefLog(); update.link(GitRepositoryManager.REF_CONFIG); } catch (IOException err) { ui.message("warning: " + name.get() + ": Cannot update HEAD to " + GitRepositoryManager.REF_CONFIG + ": " + err.getMessage()); } } } finally { git.close(); } } }
From source file:com.google.gerrit.sshd.commands.CreateProject.java
License:Apache License
@Override public void start(final Environment env) { startThread(new CommandRunnable() { @Override/*from w ww.j av a 2 s . c om*/ public void run() throws Exception { PrintWriter p = toPrintWriter(out); parseCommandLine(); try { validateParameters(); nameKey = new Project.NameKey(projectName); final Repository repo = repoManager.createRepository(nameKey); try { RefUpdate u = repo.updateRef(Constants.HEAD); u.disableRefLog(); u.link(branch); createProject(); repoManager.setProjectDescription(nameKey, projectDescription); if (createEmptyCommit) { createEmptyCommit(repo, nameKey, branch); } rq.replicateNewProject(nameKey, branch); } finally { repo.close(); } } catch (Exception e) { p.print("Error when trying to create project: " + e.getMessage() + "\n"); p.flush(); } } }); }
From source file:com.googlesource.gerrit.plugins.replication.ReplicationQueue.java
License:Apache License
private static void createLocally(URIish uri, String head) { try (Repository repo = new FileRepository(uri.getPath())) { repo.create(true /* bare */); if (head != null) { RefUpdate u = repo.updateRef(Constants.HEAD); u.disableRefLog();// w w w.j a v a 2 s.c o m u.link(head); } } catch (IOException e) { repLog.error(String.format("Error creating local repository %s:\n", uri.getPath()), e); } }
From source file:com.googlesource.gerrit.plugins.replication.ReplicationQueue.java
License:Apache License
private static void updateHeadLocally(URIish uri, String newHead) { try (Repository repo = new FileRepository(uri.getPath())) { if (newHead != null) { RefUpdate u = repo.updateRef(Constants.HEAD); u.link(newHead); }/*w w w .j a va2s.c o m*/ } catch (IOException e) { repLog.error(String.format("Failed to update HEAD of repository %s to %s", uri.getPath(), newHead), e); } }
From source file:com.peergreen.configuration.git.GitRepository.java
License:Apache License
@Override public void setProductionVersion(Version version) throws RepositoryException { // Check version exists if (!gitManager.existRef(version.getName())) { throw new RepositoryException( "Want to set new version to '" + version.getName() + "' but it doesn't exists."); }// w w w.j av a 2 s .c o m // Now, add the symbolic-ref for the current-version RefUpdate newHead = null; try { newHead = gitManager.repository().updateRef(Constants.R_TAGS + "current-version"); } catch (IOException e) { throw new RepositoryException("Unable to set the production version", e); } newHead.disableRefLog(); try { newHead.link(Constants.R_TAGS + version.getName()); } catch (IOException e) { throw new RepositoryException("Unable to set the production version", e); } }