summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Moger <james.moger@gitblit.com>2014-05-07 08:00:00 -0600
committerJames Moger <james.moger@gitblit.com>2014-05-07 08:00:00 -0600
commit97b0bf20c5e95b6abc8500364773ff9897601b49 (patch)
treeca11fe79741f0608cf30144b814d69c34459e8ce
parente2d9cd97a7c1749e739bd973a85165c096162971 (diff)
parent4a275239523965a3c8f6cbf0a1c8529fce58806d (diff)
downloadgitblit-97b0bf20c5e95b6abc8500364773ff9897601b49.tar.gz
gitblit-97b0bf20c5e95b6abc8500364773ff9897601b49.zip
Merged #62 "Fork tracking in the repository cache is case-sensitive"
-rw-r--r--releases.moxie1
-rw-r--r--src/main/java/com/gitblit/manager/RepositoryManager.java31
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<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);