]> source.dussan.org Git - gitblit.git/commitdiff
Fix case-sensitivity error in determining fork network 62/62/1
authorJames Moger <james.moger@gitblit.com>
Wed, 7 May 2014 13:58:27 +0000 (09:58 -0400)
committerJames Moger <james.moger@gitblit.com>
Wed, 7 May 2014 13:58:27 +0000 (09:58 -0400)
releases.moxie
src/main/java/com/gitblit/manager/RepositoryManager.java

index 2a36ac6eab6e505e71df4b18939f922a6bcf28c2..7fbfbcc5e670f0e3c31444b54270399483e2466c 100644 (file)
@@ -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)
index 05a90b67f45c7604eaebd1ad7fcce5dece694eb8..a76787bb74fceddf3457bf799cf8c6264f898e42 100644 (file)
@@ -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<String> roots = new HashSet<String>();
-                       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);