James Moger
2013-01-02 9910e56056d2f2639d2783257ae9f1bf46aaee58
Fixed fork origin determination if !git.cacheRepositoryList (issue-182)
1 files modified
25 ■■■■ changed files
src/com/gitblit/GitBlit.java 25 ●●●● patch | view | raw | blame | history
src/com/gitblit/GitBlit.java
@@ -1760,19 +1760,38 @@
     */
    public ForkModel getForkNetwork(String repository) {
        if (settings.getBoolean(Keys.git.cacheRepositoryList, true)) {
            // find the root
            // find the root, cached
            RepositoryModel model = repositoryListCache.get(repository.toLowerCase());
            while (model.originRepository != null) {
                model = repositoryListCache.get(model.originRepository);
            }
            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;
        }
        return null;
    }
    private ForkModel getForkModelFromCache(String repository) {
        RepositoryModel model = repositoryListCache.get(repository.toLowerCase());
        ForkModel fork = new ForkModel(model);
        if (!ArrayUtils.isEmpty(model.forks)) {
            for (String aFork : model.forks) {
                ForkModel fm = getForkModelFromCache(aFork);
                fork.forks.add(fm);
            }
        }
        return fork;
    }
    
    private ForkModel getForkModel(String repository) {
        RepositoryModel model = repositoryListCache.get(repository.toLowerCase());
        RepositoryModel model = getRepositoryModel(repository.toLowerCase());
        ForkModel fork = new ForkModel(model);
        if (!ArrayUtils.isEmpty(model.forks)) {
            for (String aFork : model.forks) {