Skip to content

Commit a3a18a0

Browse files
committed
Merge pull request #921 from paulsputer/git-lfs-support
Initial Git-LFS support
2 parents f2a9b23 + bd0e83e commit a3a18a0

32 files changed

+2651
-37
lines changed

src/main/distrib/data/defaults.properties

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2030,3 +2030,17 @@ server.requireClientCertificates = false
20302030
# SINCE 0.5.0
20312031
# RESTART REQUIRED
20322032
server.shutdownPort = 8081
2033+
2034+
#
2035+
# Gitblit Filestore Settings
2036+
#
2037+
# The location to save the filestore blobs
2038+
#
2039+
# SINCE 1.7.0
2040+
filestore.storageFolder = ${baseFolder}/lfs
2041+
2042+
# Maximum allowable upload size
2043+
# The default value, -1, disables upload limits.
2044+
# Common unit suffixes of k, m, or g are supported.
2045+
# SINCE 1.7.0
2046+
filestore.maxUploadSize = -1

src/main/java/com/gitblit/Constants.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ public class Constants {
6060
public static final String R_PATH = "/r/";
6161

6262
public static final String GIT_PATH = "/git/";
63+
64+
public static final String REGEX_SHA256 = "[a-fA-F0-9]{64}";
6365

6466
public static final String ZIP_PATH = "/zip/";
6567

@@ -140,6 +142,8 @@ public class Constants {
140142
public static final String ATTRIB_AUTHTYPE = NAME + ":authentication-type";
141143

142144
public static final String ATTRIB_AUTHUSER = NAME + ":authenticated-user";
145+
146+
public static final String R_LFS = "info/lfs/";
143147

144148
public static String getVersion() {
145149
String v = Constants.class.getPackage().getImplementationVersion();

src/main/java/com/gitblit/FederationClient.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ public static void main(String[] args) {
100100
UserManager users = new UserManager(runtime, null).start();
101101
RepositoryManager repositories = new RepositoryManager(runtime, null, users).start();
102102
FederationManager federation = new FederationManager(runtime, notifications, repositories).start();
103-
IGitblit gitblit = new GitblitManager(null, null, runtime, null, notifications, users, null, repositories, null, federation);
103+
IGitblit gitblit = new GitblitManager(null, null, runtime, null, notifications, users, null, repositories, null, federation, null);
104104

105105
FederationPullService puller = new FederationPullService(gitblit, federation.getFederationRegistrations()) {
106106
@Override

src/main/java/com/gitblit/GitBlit.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import com.gitblit.manager.GitblitManager;
1919
import com.gitblit.manager.IAuthenticationManager;
2020
import com.gitblit.manager.IFederationManager;
21+
import com.gitblit.manager.IFilestoreManager;
2122
import com.gitblit.manager.INotificationManager;
2223
import com.gitblit.manager.IPluginManager;
2324
import com.gitblit.manager.IProjectManager;
@@ -52,7 +53,8 @@ public GitBlit(
5253
IAuthenticationManager authenticationManager,
5354
IRepositoryManager repositoryManager,
5455
IProjectManager projectManager,
55-
IFederationManager federationManager) {
56+
IFederationManager federationManager,
57+
IFilestoreManager filestoreManager) {
5658

5759
super(
5860
publicKeyManagerProvider,
@@ -64,6 +66,7 @@ public GitBlit(
6466
authenticationManager,
6567
repositoryManager,
6668
projectManager,
67-
federationManager);
69+
federationManager,
70+
filestoreManager);
6871
}
6972
}

src/main/java/com/gitblit/guice/CoreModule.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,10 @@
2020
import com.gitblit.IStoredSettings;
2121
import com.gitblit.manager.AuthenticationManager;
2222
import com.gitblit.manager.FederationManager;
23+
import com.gitblit.manager.FilestoreManager;
2324
import com.gitblit.manager.IAuthenticationManager;
2425
import com.gitblit.manager.IFederationManager;
26+
import com.gitblit.manager.IFilestoreManager;
2527
import com.gitblit.manager.IGitblit;
2628
import com.gitblit.manager.INotificationManager;
2729
import com.gitblit.manager.IPluginManager;
@@ -72,6 +74,7 @@ protected void configure() {
7274
bind(IRepositoryManager.class).to(RepositoryManager.class);
7375
bind(IProjectManager.class).to(ProjectManager.class);
7476
bind(IFederationManager.class).to(FederationManager.class);
77+
bind(IFilestoreManager.class).to(FilestoreManager.class);
7578

7679
// the monolithic manager
7780
bind(IGitblit.class).to(GitBlit.class);

src/main/java/com/gitblit/guice/WebModule.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import com.gitblit.servlet.DownloadZipServlet;
2727
import com.gitblit.servlet.EnforceAuthenticationFilter;
2828
import com.gitblit.servlet.FederationServlet;
29+
import com.gitblit.servlet.FilestoreServlet;
2930
import com.gitblit.servlet.GitFilter;
3031
import com.gitblit.servlet.GitServlet;
3132
import com.gitblit.servlet.LogoServlet;
@@ -62,12 +63,14 @@ protected void configureServlets() {
6263
bind(AvatarGenerator.class).toProvider(AvatarGeneratorProvider.class);
6364

6465
// servlets
66+
serveRegex(FilestoreServlet.REGEX_PATH).with(FilestoreServlet.class);
6567
serve(fuzzy(Constants.R_PATH), fuzzy(Constants.GIT_PATH)).with(GitServlet.class);
6668
serve(fuzzy(Constants.RAW_PATH)).with(RawServlet.class);
6769
serve(fuzzy(Constants.PAGES)).with(PagesServlet.class);
6870
serve(fuzzy(Constants.RPC_PATH)).with(RpcServlet.class);
6971
serve(fuzzy(Constants.ZIP_PATH)).with(DownloadZipServlet.class);
7072
serve(fuzzy(Constants.SYNDICATION_PATH)).with(SyndicationServlet.class);
73+
7174

7275
serve(fuzzy(Constants.FEDERATION_PATH)).with(FederationServlet.class);
7376
serve(fuzzy(Constants.SPARKLESHARE_INVITE_PATH)).with(SparkleShareInviteServlet.class);
@@ -98,7 +101,8 @@ protected void configureServlets() {
98101
filter(fuzzy(Constants.RPC_PATH)).through(RpcFilter.class);
99102
filter(fuzzy(Constants.ZIP_PATH)).through(DownloadZipFilter.class);
100103
filter(fuzzy(Constants.SYNDICATION_PATH)).through(SyndicationFilter.class);
101-
104+
105+
102106
// Wicket
103107
String toIgnore = Joiner.on(",").join(Constants.R_PATH, Constants.GIT_PATH, Constants.RAW_PATH,
104108
Constants.PAGES, Constants.RPC_PATH, Constants.ZIP_PATH, Constants.SYNDICATION_PATH,

0 commit comments

Comments
 (0)