List of usage examples for org.eclipse.jgit.lib StoredConfig save
public abstract void save() throws IOException;
From source file:com.gitblit.tickets.ITicketService.java
License:Apache License
/** * Creates a milestone.//w w w.j av a2 s. c o m * * @param repository * @param milestone * @param createdBy * @return the milestone * @since 1.4.0 */ public synchronized TicketMilestone createMilestone(RepositoryModel repository, String milestone, String createdBy) { TicketMilestone ms = new TicketMilestone(milestone); Repository db = null; try { db = repositoryManager.getRepository(repository.name); StoredConfig config = db.getConfig(); config.setString(MILESTONE, milestone, STATUS, ms.status.name()); config.setString(MILESTONE, milestone, COLOR, ms.color); config.save(); milestonesCache.remove(repository.name); } catch (IOException e) { log.error("failed to create milestone " + milestone + " in " + repository, e); } finally { if (db != null) { db.close(); } } return ms; }
From source file:com.gitblit.tickets.ITicketService.java
License:Apache License
/** * Updates a milestone.//from w w w . j a v a 2 s. c o m * * @param repository * @param milestone * @param createdBy * @return true if successful * @since 1.4.0 */ public synchronized boolean updateMilestone(RepositoryModel repository, TicketMilestone milestone, String createdBy) { Repository db = null; try { db = repositoryManager.getRepository(repository.name); StoredConfig config = db.getConfig(); config.setString(MILESTONE, milestone.name, STATUS, milestone.status.name()); config.setString(MILESTONE, milestone.name, COLOR, milestone.color); if (milestone.due != null) { config.setString(MILESTONE, milestone.name, DUE, new SimpleDateFormat(DUE_DATE_PATTERN).format(milestone.due)); } config.save(); milestonesCache.remove(repository.name); return true; } catch (IOException e) { log.error("failed to update milestone " + milestone + " in " + repository, e); } finally { if (db != null) { db.close(); } } return false; }
From source file:com.gitblit.tickets.ITicketService.java
License:Apache License
/** * Renames a milestone.// ww w .j av a 2s . c o m * * @param repository * @param oldName * @param newName * @param createdBy * @param notifyOpenTickets * @return true if successful * @since 1.6.0 */ public synchronized boolean renameMilestone(RepositoryModel repository, String oldName, String newName, String createdBy, boolean notifyOpenTickets) { if (StringUtils.isEmpty(newName)) { throw new IllegalArgumentException("new milestone can not be empty!"); } Repository db = null; try { db = repositoryManager.getRepository(repository.name); TicketMilestone tm = getMilestone(repository, oldName); if (tm == null) { return false; } StoredConfig config = db.getConfig(); config.unsetSection(MILESTONE, oldName); config.setString(MILESTONE, newName, STATUS, tm.status.name()); config.setString(MILESTONE, newName, COLOR, tm.color); if (tm.due != null) { config.setString(MILESTONE, newName, DUE, new SimpleDateFormat(DUE_DATE_PATTERN).format(tm.due)); } config.save(); milestonesCache.remove(repository.name); TicketNotifier notifier = createNotifier(); for (QueryResult qr : tm.tickets) { Change change = new Change(createdBy); change.setField(Field.milestone, newName); TicketModel ticket = updateTicket(repository, qr.number, change); if (notifyOpenTickets && ticket.isOpen()) { notifier.queueMailing(ticket); } } if (notifyOpenTickets) { notifier.sendAll(); } return true; } catch (IOException e) { log.error("failed to rename milestone " + oldName + " in " + repository, e); } finally { if (db != null) { db.close(); } } return false; }
From source file:com.gitblit.tickets.ITicketService.java
License:Apache License
/** * Deletes a milestone./*from ww w . jav a 2 s . co m*/ * * @param repository * @param milestone * @param createdBy * @param notifyOpenTickets * @return true if successful * @since 1.6.0 */ public synchronized boolean deleteMilestone(RepositoryModel repository, String milestone, String createdBy, boolean notifyOpenTickets) { if (StringUtils.isEmpty(milestone)) { throw new IllegalArgumentException("milestone can not be empty!"); } Repository db = null; try { TicketMilestone tm = getMilestone(repository, milestone); if (tm == null) { return false; } db = repositoryManager.getRepository(repository.name); StoredConfig config = db.getConfig(); config.unsetSection(MILESTONE, milestone); config.save(); milestonesCache.remove(repository.name); TicketNotifier notifier = createNotifier(); for (QueryResult qr : tm.tickets) { Change change = new Change(createdBy); change.setField(Field.milestone, ""); TicketModel ticket = updateTicket(repository, qr.number, change); if (notifyOpenTickets && ticket.isOpen()) { notifier.queueMailing(ticket); } } if (notifyOpenTickets) { notifier.sendAll(); } return true; } catch (IOException e) { log.error("failed to delete milestone " + milestone + " in " + repository, e); } finally { if (db != null) { db.close(); } } return false; }
From source file:com.gitblit.utils.JGitUtils.java
License:Apache License
/** * Creates a bare, shared repository.// ww w. j a v a 2s . c o m * * @param repositoriesFolder * @param name * @param shared * the setting for the --shared option of "git init". * @return Repository */ public static Repository createRepository(File repositoriesFolder, String name, String shared) { try { Repository repo = null; try { Git git = Git.init().setDirectory(new File(repositoriesFolder, name)).setBare(true).call(); repo = git.getRepository(); } catch (GitAPIException e) { throw new RuntimeException(e); } GitConfigSharedRepository sharedRepository = new GitConfigSharedRepository(shared); if (sharedRepository.isShared()) { StoredConfig config = repo.getConfig(); config.setString("core", null, "sharedRepository", sharedRepository.getValue()); config.setBoolean("receive", null, "denyNonFastforwards", true); config.save(); if (!JnaUtils.isWindows()) { Iterator<File> iter = org.apache.commons.io.FileUtils.iterateFilesAndDirs(repo.getDirectory(), TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE); // Adjust permissions on file/directory while (iter.hasNext()) { adjustSharedPerm(iter.next(), sharedRepository); } } } return repo; } catch (IOException e) { throw new RuntimeException(e); } }
From source file:com.gitblit.utils.JGitUtils.java
License:Apache License
/** * Automatic repair of (some) invalid refspecs. These are the result of a * bug in JGit cloning where a double forward-slash was injected. :( * * @param repository/* w w w. j a va 2 s.co m*/ * @return true, if the refspecs were repaired */ public static boolean repairFetchSpecs(Repository repository) { StoredConfig rc = repository.getConfig(); // auto-repair broken fetch ref specs for (String name : rc.getSubsections("remote")) { int invalidSpecs = 0; int repairedSpecs = 0; List<String> specs = new ArrayList<String>(); for (String spec : rc.getStringList("remote", name, "fetch")) { try { RefSpec rs = new RefSpec(spec); // valid spec specs.add(spec); } catch (IllegalArgumentException e) { // invalid spec invalidSpecs++; if (spec.contains("//")) { // auto-repair this known spec bug spec = spec.replace("//", "/"); specs.add(spec); repairedSpecs++; } } } if (invalidSpecs == repairedSpecs && repairedSpecs > 0) { // the fetch specs were automatically repaired rc.setStringList("remote", name, "fetch", specs); try { rc.save(); rc.load(); LOGGER.debug("repaired {} invalid fetch refspecs for {}", repairedSpecs, repository.getDirectory()); return true; } catch (Exception e) { LOGGER.error(null, e); } } else if (invalidSpecs > 0) { LOGGER.error("mirror executor found {} invalid fetch refspecs for {}", invalidSpecs, repository.getDirectory()); } } return false; }
From source file:com.google.gct.idea.appengine.synchronization.SampleSyncTaskTest.java
License:Apache License
@Override public void setUp() throws Exception { super.setUp(); mockAndroidRepoPath = System.getProperty("java.io.tmpdir") + "/android/mockAndroidRepo"; String mockGitHubRepoGitPath = db.getDirectory().getPath(); mockGitHubRepoPath = mockGitHubRepoGitPath.substring(0, mockGitHubRepoGitPath.lastIndexOf('/')); // Configure the mock github repo StoredConfig targetConfig = db.getConfig(); targetConfig.setString("branch", "master", "remote", "origin"); targetConfig.setString("branch", "master", "merge", "refs/heads/master"); RemoteConfig config = new RemoteConfig(targetConfig, "origin"); config.addURI(new URIish(mockGitHubRepoGitPath)); config.addFetchRefSpec(new RefSpec("+refs/heads/*:refs/remotes/origin/*")); config.update(targetConfig);//ww w . j a v a 2 s.co m targetConfig.save(); mockGitHubRepo = new Git(db); // commit something writeTrashFile("Test.txt", "Hello world"); mockGitHubRepo.add().addFilepattern("Test.txt").call(); mockGitHubRepo.commit().setMessage("Initial commit").call(); mockGitHubRepo.tag().setName("tag-initial").setMessage("Tag initial").call(); }
From source file:com.google.gerrit.server.git.LocalDiskRepositoryManager.java
License:Apache License
private Repository createRepository(Path path, Project.NameKey name) throws RepositoryNotFoundException, RepositoryCaseMismatchException { if (isUnreasonableName(name)) { throw new RepositoryNotFoundException("Invalid name: " + name); }/*from ww w . j a v a 2 s .c om*/ File dir = FileKey.resolve(path.resolve(name.get()).toFile(), FS.DETECTED); FileKey loc; if (dir != null) { // Already exists on disk, use the repository we found. // loc = FileKey.exact(dir, FS.DETECTED); if (!names.contains(name)) { throw new RepositoryCaseMismatchException(name); } } else { // It doesn't exist under any of the standard permutations // of the repository name, so prefer the standard bare name. // String n = name.get() + Constants.DOT_GIT_EXT; loc = FileKey.exact(path.resolve(n).toFile(), FS.DETECTED); } try { Repository db = RepositoryCache.open(loc, false); db.create(true /* bare */); StoredConfig config = db.getConfig(); config.setBoolean(ConfigConstants.CONFIG_CORE_SECTION, null, ConfigConstants.CONFIG_KEY_LOGALLREFUPDATES, true); config.save(); // JGit only writes to the reflog for refs/meta/config if the log file // already exists. // File metaConfigLog = new File(db.getDirectory(), "logs/" + RefNames.REFS_CONFIG); if (!metaConfigLog.getParentFile().mkdirs() || !metaConfigLog.createNewFile()) { log.error(String.format("Failed to create ref log for %s in repository %s", RefNames.REFS_CONFIG, name)); } onCreateProject(name); return db; } catch (IOException e1) { final RepositoryNotFoundException e2; e2 = new RepositoryNotFoundException("Cannot create repository " + name); e2.initCause(e1); throw e2; } }
From source file:com.google.gerrit.server.update.RepoViewTest.java
License:Apache License
@Test public void getConfigIsDefensiveCopy() throws Exception { StoredConfig orig = repo.getConfig(); orig.setString("a", "config", "option", "yes"); orig.save(); Config copy = view.getConfig();/*from w w w . j a v a 2 s . c o m*/ copy.setString("a", "config", "option", "no"); assertThat(orig.getString("a", "config", "option")).isEqualTo("yes"); assertThat(repo.getConfig().getString("a", "config", "option")).isEqualTo("yes"); }
From source file:com.hazelcast.simulator.utils.jars.GitSupport.java
License:Open Source License
private void syncRemoteRepositories(Git git) throws IOException { StoredConfig config = git.getRepository().getConfig(); Set<GitRepository> customRepositoriesCopy = new HashSet<GitRepository>(customRepositories); Set<String> existingRemoteRepoNames = config.getSubsections(CONFIG_REMOTE); for (String remoteName : existingRemoteRepoNames) { String url = config.getString(CONFIG_REMOTE, remoteName, CONFIG_URL); boolean isConfigured = customRepositoriesCopy.remove(new GitRepository(remoteName, url)); if (!isConfigured && isCustomRepository(remoteName)) { removeRepository(config, remoteName); }//from w ww . j av a 2 s . co m } for (GitRepository repository : customRepositoriesCopy) { addRepository(config, repository); } config.save(); }