Package com.gitblit.models

Examples of com.gitblit.models.RepositoryModel


  public List<RepositoryModel> getRepositoryModels(UserModel user) {
    long methodStart = System.currentTimeMillis();
    List<String> list = getRepositoryList();
    List<RepositoryModel> repositories = new ArrayList<RepositoryModel>();
    for (String repo : list) {
      RepositoryModel model = getRepositoryModel(user, repo);
      if (model != null) {
        if (!model.hasCommits) {
          // only add empty repositories that user can push to
          if (UserModel.ANONYMOUS.canPush(model)
              || user != null && user.canPush(model)) {
View Full Code Here


   * @param repositoryName
   * @return repository model or null
   */
  @Override
  public RepositoryModel getRepositoryModel(UserModel user, String repositoryName) {
    RepositoryModel model = getRepositoryModel(repositoryName);
    if (model == null) {
      return null;
    }
    if (user == null) {
      user = UserModel.ANONYMOUS;
View Full Code Here

    // Decode url-encoded repository name (issue-278)
    // http://stackoverflow.com/questions/17183110
    repositoryName = repositoryName.replace("%7E", "~").replace("%7e", "~");

    if (!repositoryListCache.containsKey(repositoryName)) {
      RepositoryModel model = loadRepositoryModel(repositoryName);
      if (model == null) {
        return null;
      }
      addToCachedRepositoryList(model);
      return DeepCopier.copy(model);
    }

    // cached model
    RepositoryModel model = repositoryListCache.get(repositoryName.toLowerCase());

    if (gcExecutor.isCollectingGarbage(model.name)) {
      // Gitblit is busy collecting garbage, use our cached model
      RepositoryModel rm = DeepCopier.copy(model);
      rm.isCollectingGarbage = true;
      return rm;
    }

    // check for updates
View Full Code Here

  private RepositoryModel loadRepositoryModel(String repositoryName) {
    Repository r = getRepository(repositoryName);
    if (r == null) {
      return null;
    }
    RepositoryModel model = new RepositoryModel();
    model.isBare = r.isBare();
    File basePath = getRepositoriesFolder();
    if (model.isBare) {
      model.name = com.gitblit.utils.FileUtils.getRelativePath(basePath, r.getDirectory());
    } else {
      model.name = com.gitblit.utils.FileUtils.getRelativePath(basePath, r.getDirectory().getParentFile());
    }
    if (StringUtils.isEmpty(model.name)) {
      // Repository is NOT located relative to the base folder because it
      // is symlinked.  Use the provided repository name.
      model.name = repositoryName;
    }
    model.projectPath = StringUtils.getFirstPathElement(repositoryName);

    StoredConfig config = r.getConfig();
    boolean hasOrigin = false;

    if (config != null) {
      // Initialize description from description file
      hasOrigin = !StringUtils.isEmpty(config.getString("remote", "origin", "url"));
      if (getConfig(config,"description", null) == null) {
        File descFile = new File(r.getDirectory(), "description");
        if (descFile.exists()) {
          String desc = com.gitblit.utils.FileUtils.readContent(descFile, System.getProperty("line.separator"));
          if (!desc.toLowerCase().startsWith("unnamed repository")) {
            config.setString(Constants.CONFIG_GITBLIT, null, "description", desc);
          }
        }
      }
      model.description = getConfig(config, "description", "");
      model.originRepository = getConfig(config, "originRepository", null);
      model.addOwners(ArrayUtils.fromString(getConfig(config, "owner", "")));
      model.acceptNewPatchsets = getConfig(config, "acceptNewPatchsets", true);
      model.acceptNewTickets = getConfig(config, "acceptNewTickets", true);
      model.requireApproval = getConfig(config, "requireApproval", settings.getBoolean(Keys.tickets.requireApproval, false));
      model.mergeTo = getConfig(config, "mergeTo", null);
      model.useIncrementalPushTags = getConfig(config, "useIncrementalPushTags", false);
View Full Code Here

      String userPath = userProject + "/";

      // collect all origin nodes in fork network
      Set<String> roots = new HashSet<String>();
      roots.add(originKey);
      RepositoryModel originModel = repositoryListCache.get(originKey);
      while (originModel != null) {
        if (!ArrayUtils.isEmpty(originModel.forks)) {
          for (String fork : originModel.forks) {
            if (!fork.startsWith(userPath)) {
              roots.add(fork.toLowerCase());
            }
          }
        }

        if (originModel.originRepository != null) {
          String ooKey = originModel.originRepository.toLowerCase();
          roots.add(ooKey);
          originModel = repositoryListCache.get(ooKey);
        } else {
          // break
          originModel = null;
        }
      }

      for (String repository : repositoryListCache.keySet()) {
        if (repository.startsWith(userPath)) {
          RepositoryModel model = repositoryListCache.get(repository);
          if (!StringUtils.isEmpty(model.originRepository)) {
            if (roots.contains(model.originRepository.toLowerCase())) {
              // user has a fork in this graph
              return model.name;
            }
          }
        }
      }
    } else {
      // not caching
      File subfolder = new File(getRepositoriesFolder(), userProject);
      List<String> repositories = JGitUtils.getRepositoryList(subfolder,
          settings.getBoolean(Keys.git.onlyAccessBareRepositories, false),
          settings.getBoolean(Keys.git.searchRepositoriesSubfolders, true),
          settings.getInteger(Keys.git.searchRecursionDepth, -1),
          settings.getStrings(Keys.git.searchExclusions));
      for (String repository : repositories) {
        RepositoryModel model = getRepositoryModel(userProject + "/" + repository);
        if (model.originRepository != null && model.originRepository.equalsIgnoreCase(origin)) {
          // user has a fork
          return model.name;
        }
      }
View Full Code Here

   */
  @Override
  public ForkModel getForkNetwork(String repository) {
    if (settings.getBoolean(Keys.git.cacheRepositoryList, true)) {
      // find the root, cached
      RepositoryModel model = repositoryListCache.get(repository.toLowerCase());
      while (model.originRepository != null) {
        model = repositoryListCache.get(model.originRepository.toLowerCase());
      }
      ForkModel root = getForkModelFromCache(model.name);
      return root;
    } else {
      // find the root, non-cached
      RepositoryModel model = getRepositoryModel(repository.toLowerCase());
      while (model.originRepository != null) {
        model = getRepositoryModel(model.originRepository);
      }
      ForkModel root = getForkModel(model.name);
      return root;
View Full Code Here

      return root;
    }
  }

  private ForkModel getForkModelFromCache(String repository) {
    RepositoryModel model = repositoryListCache.get(repository.toLowerCase());
    if (model == null) {
      return null;
    }
    ForkModel fork = new ForkModel(model);
    if (!ArrayUtils.isEmpty(model.forks)) {
View Full Code Here

    }
    return fork;
  }

  private ForkModel getForkModel(String repository) {
    RepositoryModel model = getRepositoryModel(repository.toLowerCase());
    if (model == null) {
      return null;
    }
    ForkModel fork = new ForkModel(model);
    if (!ArrayUtils.isEmpty(model.forks)) {
View Full Code Here

          }
        }

        // update this repository's origin's fork list
        if (!StringUtils.isEmpty(repository.originRepository)) {
          RepositoryModel origin = repositoryListCache.get(repository.originRepository.toLowerCase());
          if (origin != null && !ArrayUtils.isEmpty(origin.forks)) {
            origin.forks.remove(repositoryName);
            origin.forks.add(repository.name);
          }
        }
View Full Code Here

    try {
      close(repositoryName);
      // clear the repository cache
      clearRepositoryMetadataCache(repositoryName);

      RepositoryModel model = removeFromCachedRepositoryList(repositoryName);
      if (model != null && !ArrayUtils.isEmpty(model.forks)) {
        resetRepositoryListCache();
      }

      File folder = new File(repositoriesFolder, repositoryName);
View Full Code Here

TOP

Related Classes of com.gitblit.models.RepositoryModel

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.