summaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit
diff options
context:
space:
mode:
authorNail Samatov <sanail@yandex.ru>2022-02-07 18:13:58 +0300
committerThomas Wolf <thomas.wolf@paranor.ch>2022-02-08 09:11:12 +0100
commita054f3ce76c2aaeada7fc9b84f23a3eceb2f7708 (patch)
tree0da5ac962419ed9a02d9b8a4d0eec72984a7d5d9 /org.eclipse.jgit
parent7e752364a6000259b2ec3fc66e0314ba12e6c0d4 (diff)
downloadjgit-a054f3ce76c2aaeada7fc9b84f23a3eceb2f7708.tar.gz
jgit-a054f3ce76c2aaeada7fc9b84f23a3eceb2f7708.zip
Support LFS Server URL without .git suffix
According to Git LFS documentation, URLs with and without .git suffix should be supported. By default, Git LFS will append .git/info/lfs to the end of a Git remote URL. To build the LFS server URL it will use: Git Remote: https://git-server.com/foo/bar LFS Server: https://git-server.com/foo/bar.git/info/lfs Git Remote: https://git-server.com/foo/bar.git LFS Server: https://git-server.com/foo/bar.git/info/lfs Fix the LfsConnectionFactory accordingly. Move a utility method to add the ".git" suffix if not present yet from FileResolver to StringUtils and use it. Bug: 578621 Change-Id: I8d3645872d5f03bb8e82c9c73647adb3e81ce484 Signed-off-by: Nail Samatov <sanail@yandex.ru> Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
Diffstat (limited to 'org.eclipse.jgit')
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/resolver/FileResolver.java14
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/StringUtils.java23
2 files changed, 24 insertions, 13 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/resolver/FileResolver.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/resolver/FileResolver.java
index 3d15ef5e72..046f395049 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/resolver/FileResolver.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/resolver/FileResolver.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2009-2010, Google Inc. and others
+ * Copyright (C) 2009-2022, Google Inc. and others
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Distribution License v. 1.0 which is available at
@@ -18,11 +18,11 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
import org.eclipse.jgit.errors.RepositoryNotFoundException;
-import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.lib.RepositoryCache;
import org.eclipse.jgit.lib.RepositoryCache.FileKey;
import org.eclipse.jgit.util.FS;
+import org.eclipse.jgit.util.StringUtils;
/**
* Default resolver serving from the local filesystem.
@@ -67,7 +67,7 @@ public class FileResolver<C> implements RepositoryResolver<C> {
if (isUnreasonableName(name))
throw new RepositoryNotFoundException(name);
- Repository db = exports.get(nameWithDotGit(name));
+ Repository db = exports.get(StringUtils.nameWithDotGit(name));
if (db != null) {
db.incrementOpen();
return db;
@@ -154,7 +154,7 @@ public class FileResolver<C> implements RepositoryResolver<C> {
* the repository instance.
*/
public void exportRepository(String name, Repository db) {
- exports.put(nameWithDotGit(name), db);
+ exports.put(StringUtils.nameWithDotGit(name), db);
}
/**
@@ -197,12 +197,6 @@ public class FileResolver<C> implements RepositoryResolver<C> {
return false;
}
- private static String nameWithDotGit(String name) {
- if (name.endsWith(Constants.DOT_GIT_EXT))
- return name;
- return name + Constants.DOT_GIT_EXT;
- }
-
private static boolean isUnreasonableName(String name) {
if (name.length() == 0)
return true; // no empty paths
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/StringUtils.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/StringUtils.java
index 8ab13385e0..917add3609 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/StringUtils.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/StringUtils.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2009-2010, Google Inc. and others
+ * Copyright (C) 2009-2022, Google Inc. and others
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Distribution License v. 1.0 which is available at
@@ -15,6 +15,7 @@ import java.util.Collection;
import org.eclipse.jgit.annotations.NonNull;
import org.eclipse.jgit.internal.JGitText;
+import org.eclipse.jgit.lib.Constants;
/**
* Miscellaneous string comparison utility methods.
@@ -37,6 +38,10 @@ public final class StringUtils {
LC[c] = (char) ('a' + (c - 'A'));
}
+ private StringUtils() {
+ // Do not create instances
+ }
+
/**
* Convert the input to lowercase.
* <p>
@@ -269,8 +274,20 @@ public final class StringUtils {
return sb.toString();
}
- private StringUtils() {
- // Do not create instances
+ /**
+ * Appends {@link Constants#DOT_GIT_EXT} unless the given name already ends
+ * with that suffix.
+ *
+ * @param name
+ * to complete
+ * @return the name ending with {@link Constants#DOT_GIT_EXT}
+ * @since 6.1
+ */
+ public static String nameWithDotGit(String name) {
+ if (name.endsWith(Constants.DOT_GIT_EXT)) {
+ return name;
+ }
+ return name + Constants.DOT_GIT_EXT;
}
/**