SINCE 0.7.0
Gitblit optionally allows a remote client to administer the Gitblit server. This client could be a Java-based tool or perhaps a tool written in another language.
web.enableRpcServlet=true
web.enableRpcAdministration=false
https is strongly recommended because passwords are insecurely transmitted form your browser/rpc client using Basic authentication!
The Gitblit RPC mechanism, like the Gitblit JGit servlet, syndication/feed servlet, etc, supports request-based authentication. Making an admin request will trigger Gitblit's basic authentication mechanism. Listing of repositories, generally, will not trigger this authentication mechanism unless web.authenticateViewPages=true. That means its possible to allow anonymous enumeration of repositories that are not view restricted or clone restricted. Of course, if credentials are provided then all private repositories that are available to the user account will be enumerated in the JSON response.
url parameters | required permission |
json | ||
---|---|---|---|---|
req= | name= | post body | response body | |
LIST_REPOSITORIES | - | - | - | Map String, RepositoryModel |
CREATE_REPOSITORY | repository name | admin | RepositoryModel | - |
EDIT_REPOSITORY | repository name | admin | RepositoryModel | - |
DELETE_REPOSITORY | repository name | admin | - | - |
LIST_USERS | - | admin | - | List UserModel |
CREATE_USER | user name | admin | UserModel | - |
EDIT_USER | user name | admin | UserModel | - |
DELETE_USER | user name | admin | - | - |
LIST_REPOSITORY_MEMBERS | repository name | admin | - | List String |
SET_REPOSITORY_MEMBERS | repository name | admin | List String | - |
LIST_FEDERATION_REGISTRATIONS | - | admin | - | List FederationModel |
LIST_FEDERATION_RESULTS | - | admin | - | List FederationModel |
LIST_FEDERATION_PROPOSALS | - | admin | - | List FederationProposal |
LIST_FEDERATION_SETS | - | admin | - | List FederationSet |
LIST_SETTINGS | - | admin | - | Properties |
An example Java Swing RPC Client application is available and allows remote administration of repositories and users.
This application exercises most methods from the utility class com.gitblit.utils.RpcUtils
.
One obvious goal of a Gitblit RPC mechanism would be to have an EGit Feature that allows authentication and enumeration of Gitblit repositories from the Eclipse Import... menu. Cloning (hopefully batch) would be delegated to EGit.
This particular project should not be difficult as the only external dependency for com.gitblit.utils.RpcUtils
is google-gson which is already a dependency of the EGit/GitHub Mylyn feature.
Currently this project is in the planning stage.
url: https://localhost/rpc?req=LIST_REPOSITORIES
response body: Map<String, RepositoryModel> where the map key is the clone url of the repository
{
"https://localhost/git/libraries/xmlapache.git": {
"name": "libraries/xmlapache.git",
"description": "apache xmlrpc client and server",
"owner": "admin",
"lastChange": "2010-01-28T22:12:06Z",
"hasCommits": true,
"showRemoteBranches": false,
"useTickets": false,
"useDocs": false,
"accessRestriction": "VIEW",
"isFrozen": false,
"showReadme": false,
"federationStrategy": "FEDERATE_THIS",
"federationSets": [
"libraries"
],
"isFederated": false,
"size": "102 KB"
},
"https://localhost/git/libraries/smack.git": {
"name": "libraries/smack.git",
"description": "smack xmpp client",
"owner": "admin",
"lastChange": "2009-01-28T18:38:14Z",
"hasCommits": true,
"showRemoteBranches": false,
"useTickets": false,
"useDocs": false,
"accessRestriction": "VIEW",
"isFrozen": false,
"showReadme": false,
"federationStrategy": "FEDERATE_THIS",
"federationSets": [],
"isFederated": false,
"size": "4.8 MB"
}
}
The original repository name is specified in the name url parameter. The new name is set within the JSON object.
url: https://localhost/rpc?req=EDIT_REPOSITORY&name=libraries/xmlapache.git
post body: RepositoryModel
{
"name": "libraries/xmlapache-renamed.git",
"description": "apache xmlrpc client and server",
"owner": "admin",
"lastChange": "2010-01-28T22:12:06Z",
"hasCommits": true,
"showRemoteBranches": false,
"useTickets": false,
"useDocs": false,
"accessRestriction": "VIEW",
"isFrozen": false,
"showReadme": false,
"federationStrategy": "FEDERATE_THIS",
"federationSets": [
"libraries"
],
"isFederated": false,
"size": "102 KB"
}
url: https://localhost/rpc?req=LIST_USERS
response body: List<UserModel>
[
{
"username": "admin",
"password": "admin",
"canAdmin": true,
"excludeFromFederation": true,
"repositories": []
},
{
"username": "test",
"password": "test",
"canAdmin": false,
"excludeFromFederation": false,
"repositories": [
"libraries/xmlapache.git",
"libraries/smack.git"
]
}
]