JGit HTTP Server 使用
-
Gradle
-
Tomcat
-
JGit
JGit HTTP Server 使用
使用 JGit 实现 git HTTP server。
实现
依赖
新建文件 build.gradle
:
plugins {
id 'war'
}
repositories {
mavenCentral()
}
dependencies {
compileOnly group: 'javax.servlet', name: 'javax.servlet-api', version: '4.0.1'
implementation group: 'org.eclipse.jgit', name: 'org.eclipse.jgit.http.server', version: '5.10.0.202012080955-r'
}
配置
新建文件 src/main/webapp/WEB-INF/web.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0"
metadata-complete="true">
<display-name>JGit HTTP Server</display-name>
<description>Welcome to JGit HTTP Server</description>
<servlet>
<servlet-name>GitServlet</servlet-name>
<servlet-class>org.eclipse.jgit.http.server.GitServlet</servlet-class>
<init-param>
<param-name>base-path</param-name>
<param-value>/srv/git-data</param-value>
</init-param>
<init-param>
<param-name>export-all</param-name>
<param-value>0</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>GitServlet</servlet-name>
<url-pattern>/git/*</url-pattern>
</servlet-mapping>
</web-app>
-
base-path
仓库根目录。 -
export-all
是否可导出
自定义访问控制
实现 RepositoryResolver 接口
-
参照
FileResolver
实现RepositoryResolver
,默认实现查看 web.xmlexport-all
配置或者 .git 仓库目录下是否存在git-daemon-export-ok
文件; -
继承
GitServlet
并通过setRepositoryResolver
替换掉resolver
; -
需要自定义
Filter
修改HttpServletResponse
,在需要认证时 JGit 返回 401,但未添加WWW-Authenticate
头部,导致输入密码也无效。
可控制仓库的访问,但无法直接区读、写操作。