List of usage examples for org.eclipse.jgit.lib StoredConfig getSubsections
public Set<String> getSubsections(String section)
From source file:com.gitblit.client.GitblitManager.java
License:Apache License
private void loadRegistrations() { try {//from www . j av a 2 s. c o m StoredConfig config = getConfig(); Set<String> servers = config.getSubsections(SERVER); for (String server : servers) { Date lastLogin = new Date(0); String date = config.getString(SERVER, server, "lastLogin"); if (!StringUtils.isEmpty(date)) { lastLogin = dateFormat.parse(date); } String url = config.getString(SERVER, server, "url"); String account = config.getString(SERVER, server, "account"); char[] password; String pw = config.getString(SERVER, server, "password"); if (StringUtils.isEmpty(pw)) { password = new char[0]; } else { password = new String(Base64.decode(pw)).toCharArray(); } GitblitRegistration reg = new GitblitRegistration(server, url, account, password) { private static final long serialVersionUID = 1L; @Override protected void cacheFeeds() { writeFeedCache(this); } }; String[] feeds = config.getStringList(SERVER, server, FEED); if (feeds != null) { // deserialize the field definitions for (String definition : feeds) { FeedModel feed = new FeedModel(definition); reg.feeds.add(feed); } } reg.lastLogin = lastLogin; loadFeedCache(reg); registrations.put(reg.name, reg); } } catch (Throwable t) { Utils.showException(GitblitManager.this, t); } }
From source file:com.gitblit.ConfigUserService.java
License:Apache License
/** * Reads the realm file and rebuilds the in-memory lookup tables. *//*from w w w .j a v a 2 s .c o m*/ protected synchronized void read() { if (realmFile.exists() && (forceReload || (realmFile.lastModified() != lastModified))) { forceReload = false; lastModified = realmFile.lastModified(); users.clear(); cookies.clear(); teams.clear(); try { StoredConfig config = new FileBasedConfig(realmFile, FS.detect()); config.load(); Set<String> usernames = config.getSubsections(USER); for (String username : usernames) { UserModel user = new UserModel(username.toLowerCase()); user.password = config.getString(USER, username, PASSWORD); user.displayName = config.getString(USER, username, DISPLAYNAME); user.emailAddress = config.getString(USER, username, EMAILADDRESS); user.accountType = AccountType.fromString(config.getString(USER, username, ACCOUNTTYPE)); user.disabled = config.getBoolean(USER, username, DISABLED, false); user.organizationalUnit = config.getString(USER, username, ORGANIZATIONALUNIT); user.organization = config.getString(USER, username, ORGANIZATION); user.locality = config.getString(USER, username, LOCALITY); user.stateProvince = config.getString(USER, username, STATEPROVINCE); user.countryCode = config.getString(USER, username, COUNTRYCODE); user.cookie = config.getString(USER, username, COOKIE); if (StringUtils.isEmpty(user.cookie) && !StringUtils.isEmpty(user.password)) { user.cookie = user.createCookie(); } // preferences user.getPreferences().setLocale(config.getString(USER, username, LOCALE)); user.getPreferences().setEmailMeOnMyTicketChanges( config.getBoolean(USER, username, EMAILONMYTICKETCHANGES, true)); user.getPreferences() .setTransport(Transport.fromString(config.getString(USER, username, TRANSPORT))); // user roles Set<String> roles = new HashSet<String>( Arrays.asList(config.getStringList(USER, username, ROLE))); user.canAdmin = roles.contains(Role.ADMIN.getRole()); user.canFork = roles.contains(Role.FORK.getRole()); user.canCreate = roles.contains(Role.CREATE.getRole()); user.excludeFromFederation = roles.contains(Role.NOT_FEDERATED.getRole()); // repository memberships if (!user.canAdmin) { // non-admin, read permissions Set<String> repositories = new HashSet<String>( Arrays.asList(config.getStringList(USER, username, REPOSITORY))); for (String repository : repositories) { user.addRepositoryPermission(repository); } } // starred repositories Set<String> starred = new HashSet<String>( Arrays.asList(config.getStringList(USER, username, STARRED))); for (String repository : starred) { UserRepositoryPreferences prefs = user.getPreferences() .getRepositoryPreferences(repository); prefs.starred = true; } // update cache users.put(user.username, user); if (!StringUtils.isEmpty(user.cookie)) { cookies.put(user.cookie, user); } } // load the teams Set<String> teamnames = config.getSubsections(TEAM); for (String teamname : teamnames) { TeamModel team = new TeamModel(teamname); Set<String> roles = new HashSet<String>( Arrays.asList(config.getStringList(TEAM, teamname, ROLE))); team.canAdmin = roles.contains(Role.ADMIN.getRole()); team.canFork = roles.contains(Role.FORK.getRole()); team.canCreate = roles.contains(Role.CREATE.getRole()); team.accountType = AccountType.fromString(config.getString(TEAM, teamname, ACCOUNTTYPE)); if (!team.canAdmin) { // non-admin team, read permissions team.addRepositoryPermissions( Arrays.asList(config.getStringList(TEAM, teamname, REPOSITORY))); } team.addUsers(Arrays.asList(config.getStringList(TEAM, teamname, USER))); team.addMailingLists(Arrays.asList(config.getStringList(TEAM, teamname, MAILINGLIST))); team.preReceiveScripts.addAll(Arrays.asList(config.getStringList(TEAM, teamname, PRERECEIVE))); team.postReceiveScripts .addAll(Arrays.asList(config.getStringList(TEAM, teamname, POSTRECEIVE))); teams.put(team.name.toLowerCase(), team); // set the teams on the users for (String user : team.users) { UserModel model = users.get(user); if (model != null) { model.teams.add(team); } } } } catch (Exception e) { logger.error(MessageFormat.format("Failed to read {0}", realmFile), e); } } }
From source file:com.gitblit.tickets.ITicketService.java
License:Apache License
/** * Returns the list of labels for the repository. * * @param repository//www . j a v a 2 s . c o m * @return the list of labels * @since 1.4.0 */ public List<TicketLabel> getLabels(RepositoryModel repository) { String key = repository.name; if (labelsCache.containsKey(key)) { return labelsCache.get(key); } List<TicketLabel> list = new ArrayList<TicketLabel>(); Repository db = repositoryManager.getRepository(repository.name); try { StoredConfig config = db.getConfig(); Set<String> names = config.getSubsections(LABEL); for (String name : names) { TicketLabel label = new TicketLabel(name); label.color = config.getString(LABEL, name, COLOR); list.add(label); } labelsCache.put(key, Collections.unmodifiableList(list)); } catch (Exception e) { log.error("invalid tickets settings for " + repository, e); } finally { db.close(); } return list; }
From source file:com.gitblit.tickets.ITicketService.java
License:Apache License
/** * Returns the list of milestones for the repository. * * @param repository/*from w w w. j a v a2 s.co m*/ * @return the list of milestones * @since 1.4.0 */ public List<TicketMilestone> getMilestones(RepositoryModel repository) { String key = repository.name; if (milestonesCache.containsKey(key)) { return milestonesCache.get(key); } List<TicketMilestone> list = new ArrayList<TicketMilestone>(); Repository db = repositoryManager.getRepository(repository.name); try { StoredConfig config = db.getConfig(); Set<String> names = config.getSubsections(MILESTONE); for (String name : names) { TicketMilestone milestone = new TicketMilestone(name); milestone.status = Status.fromObject(config.getString(MILESTONE, name, STATUS), milestone.status); milestone.color = config.getString(MILESTONE, name, COLOR); String due = config.getString(MILESTONE, name, DUE); if (!StringUtils.isEmpty(due)) { try { milestone.due = new SimpleDateFormat(DUE_DATE_PATTERN).parse(due); } catch (ParseException e) { log.error("failed to parse {} milestone {} due date \"{}\"", new Object[] { repository, name, due }); } } list.add(milestone); } milestonesCache.put(key, Collections.unmodifiableList(list)); } catch (Exception e) { log.error("invalid tickets settings for " + repository, e); } finally { db.close(); } return list; }
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/*from w ww . ja v a 2 s . c om*/ * @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.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 www .java 2 s. c o m*/ } for (GitRepository repository : customRepositoriesCopy) { addRepository(config, repository); } config.save(); }
From source file:com.microsoft.tfs.client.common.ui.teambuild.egit.repositories.GitRepositoriesMap.java
License:Open Source License
private Map<String, String> getMappedBranches(final TfsGitRepositoryJson serverRepository, final Repository localRepository) { Map<String, String> mappedBranches = null; String upstreamURL = serverRepository.getRemoteUrl(); try {/* ww w . j a v a2s . c om*/ upstreamURL = URIUtil.encodePath(serverRepository.getRemoteUrl()); } catch (final URIException e) { log.error("Error encoding repository URL " + upstreamURL, e); //$NON-NLS-1$ } final StoredConfig repositoryConfig = localRepository.getConfig(); final Set<String> remotes = repositoryConfig.getSubsections(REMOTES_SECTION_NAME); for (final String remoteName : remotes) { final String remoteURL = repositoryConfig.getString(REMOTES_SECTION_NAME, remoteName, URL_VALUE_NAME); if (remoteURL != null && remoteURL.equalsIgnoreCase(upstreamURL)) { if (mappedBranches == null) { mappedBranches = new HashMap<String, String>(); } final Set<String> branches = repositoryConfig.getSubsections(BRANCHES_SECTION_NAME); for (final String branch : branches) { final String fullBranchName = Constants.R_HEADS + branch; final String[] remoteNames = repositoryConfig.getStringList(BRANCHES_SECTION_NAME, branch, REMOTE_VALUE_NAME); final String[] mappedBrancheNames = repositoryConfig.getStringList(BRANCHES_SECTION_NAME, branch, MERGE_VALUE_NAME); for (int k = 0; k < remoteNames.length; k++) { if (remoteNames[k].equals(remoteName)) { final String remoteBranchName = mappedBrancheNames[k]; if (!mappedBranches.containsKey(remoteBranchName)) { mappedBranches.put(remoteBranchName, fullBranchName); } break; } } } break; } } return mappedBranches; }
From source file:com.microsoft.tfs.client.eclipse.ui.egit.teamexplorer.TeamExplorerGitRepositoriesSection.java
License:Open Source License
private void loadRegisteredRepositories() { repositoryMap = new TreeMap<String, Repository>(); final List<String> repositoryFolders = Activator.getDefault().getRepositoryUtil() .getConfiguredRepositories(); for (final String repositoryFolder : repositoryFolders) { final File folder = new File(repositoryFolder); if (!folder.exists() || !folder.isDirectory()) { continue; }/* w ww .j a va 2s . c o m*/ if (!folder.getName().equals(Constants.DOT_GIT) || !FileKey.isGitRepository(folder, FS.DETECTED)) { continue; } final RepositoryBuilder rb = new RepositoryBuilder().setGitDir(folder).setMustExist(true); try { final Repository repo = rb.build(); final StoredConfig repositoryConfig = repo.getConfig(); final Set<String> remotes = repositoryConfig.getSubsections(REMOTES_SECTION_NAME); for (final String remoteName : remotes) { final String remoteURL = repositoryConfig.getString(REMOTES_SECTION_NAME, remoteName, URL_VALUE_NAME); repositoryMap.put(remoteURL, repo); } } catch (final Exception e) { log.error("Error loading local Git repository " + repositoryFolder, e); //$NON-NLS-1$ continue; } } }
From source file:com.surevine.gateway.scm.git.jgit.JGitGitFacade.java
License:Open Source License
@Override public Map<String, String> getRemotes(final LocalRepoBean repoBean) throws GitException { Map<String, String> remotes = new HashMap<String, String>(); try {// w w w . j a v a 2 s .c o m FileRepositoryBuilder builder = new FileRepositoryBuilder(); Repository repository = builder.setGitDir(repoBean.getGitConfigDirectory().toFile()).findGitDir() .build(); Git git = new org.eclipse.jgit.api.Git(repository); StoredConfig config = git.getRepository().getConfig(); Set<String> remoteNames = config.getSubsections("remote"); for (String remoteName : remoteNames) { remotes.put(remoteName, config.getString("remote", remoteName, "url")); } } catch (IOException e) { LOGGER.error(e); throw new GitException(e); } return remotes; }
From source file:edu.wustl.lookingglass.community.CommunityRepository.java
License:Open Source License
private void addRemote(String newName, URL newURL) throws IOException, URISyntaxException { assert this.remoteName != null; assert this.remoteURL != null; boolean remoteExists = false; StoredConfig config = this.git.getRepository().getConfig(); Set<String> remotes = config.getSubsections("remote"); for (String oldName : remotes) { String oldURL = config.getString("remote", oldName, "url"); if (newName.equals(oldName)) { remoteExists = true;//from w w w .j ava 2s . c o m if (newURL.toExternalForm().equals(oldURL)) { break; } else { Logger.warning("inconsistent remote url " + oldName + " : " + oldURL); config.setString("remote", oldName, "url", newURL.toExternalForm()); config.save(); break; } } } if (!remoteExists) { RemoteConfig remoteConfig = new RemoteConfig(config, this.remoteName); remoteConfig.addURI(new URIish(this.remoteURL)); remoteConfig.addFetchRefSpec(new RefSpec("+refs/heads/*:refs/remotes/" + this.remoteName + "/*")); remoteConfig.update(config); config.save(); } }