From 4a275239523965a3c8f6cbf0a1c8529fce58806d Mon Sep 17 00:00:00 2001 From: James Moger Date: Wed, 7 May 2014 09:58:27 -0400 Subject: [PATCH] Fix case-sensitivity error in determining fork network --- releases.moxie | 1 + .../gitblit/manager/RepositoryManager.java | 31 ++++++++++++------- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/releases.moxie b/releases.moxie index 2a36ac6e..7fbfbcc5 100644 --- a/releases.moxie +++ b/releases.moxie @@ -16,6 +16,7 @@ r23: { - Fix forcing default locale to en or LANG_CC for web ui (ticket-51) - Fix inconsistency with repository ownership permission checking (ticket-52) - Prevent submission from New|Edit ticket page with empty titles (ticket-53) + - Fix case-sensitivity error in determining fork network (issue-420, ticket-62) - Fix transport determination for SSH urls served on port 22 (issue-421, ticket-63) changes: - improve French translation (pr-176) diff --git a/src/main/java/com/gitblit/manager/RepositoryManager.java b/src/main/java/com/gitblit/manager/RepositoryManager.java index 05a90b67..a76787bb 100644 --- a/src/main/java/com/gitblit/manager/RepositoryManager.java +++ b/src/main/java/com/gitblit/manager/RepositoryManager.java @@ -421,8 +421,9 @@ public class RepositoryManager implements IRepositoryManager { // update the fork origin repository with this repository clone if (!StringUtils.isEmpty(model.originRepository)) { - if (repositoryListCache.containsKey(model.originRepository)) { - RepositoryModel origin = repositoryListCache.get(model.originRepository); + String originKey = model.originRepository.toLowerCase(); + if (repositoryListCache.containsKey(originKey)) { + RepositoryModel origin = repositoryListCache.get(originKey); origin.addFork(model.name); } } @@ -534,8 +535,9 @@ public class RepositoryManager implements IRepositoryManager { // rebuild fork networks for (RepositoryModel model : repositoryListCache.values()) { if (!StringUtils.isEmpty(model.originRepository)) { - if (repositoryListCache.containsKey(model.originRepository)) { - RepositoryModel origin = repositoryListCache.get(model.originRepository); + String originKey = model.originRepository.toLowerCase(); + if (repositoryListCache.containsKey(originKey)) { + RepositoryModel origin = repositoryListCache.get(originKey); origin.addFork(model.name); } } @@ -943,26 +945,31 @@ public class RepositoryManager implements IRepositoryManager { */ @Override public String getFork(String username, String origin) { + if (StringUtils.isEmpty(origin)) { + return null; + } String userProject = ModelUtils.getPersonalPath(username); if (settings.getBoolean(Keys.git.cacheRepositoryList, true)) { + String originKey = origin.toLowerCase(); String userPath = userProject + "/"; // collect all origin nodes in fork network Set roots = new HashSet(); - roots.add(origin); - RepositoryModel originModel = repositoryListCache.get(origin); + 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); + roots.add(fork.toLowerCase()); } } } if (originModel.originRepository != null) { - roots.add(originModel.originRepository); - originModel = repositoryListCache.get(originModel.originRepository); + String ooKey = originModel.originRepository.toLowerCase(); + roots.add(ooKey); + originModel = repositoryListCache.get(ooKey); } else { // break originModel = null; @@ -973,7 +980,7 @@ public class RepositoryManager implements IRepositoryManager { if (repository.startsWith(userPath)) { RepositoryModel model = repositoryListCache.get(repository); if (!StringUtils.isEmpty(model.originRepository)) { - if (roots.contains(model.originRepository)) { + if (roots.contains(model.originRepository.toLowerCase())) { // user has a fork in this graph return model.name; } @@ -1013,7 +1020,7 @@ public class RepositoryManager implements IRepositoryManager { // find the root, cached RepositoryModel model = repositoryListCache.get(repository.toLowerCase()); while (model.originRepository != null) { - model = repositoryListCache.get(model.originRepository); + model = repositoryListCache.get(model.originRepository.toLowerCase()); } ForkModel root = getForkModelFromCache(model.name); return root; @@ -1344,7 +1351,7 @@ public class RepositoryManager implements IRepositoryManager { // update this repository's origin's fork list if (!StringUtils.isEmpty(repository.originRepository)) { - RepositoryModel origin = repositoryListCache.get(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); -- 2.39.5