You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
10 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301
  1. ## Remote Management, Administration and Integration
  2. *SINCE 0.7.0*
  3. 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.
  4. web.enableRpcServlet=true
  5. web.enableRpcManagement=false
  6. web.enableRpcAdministration=false
  7. **https** is strongly recommended because passwords are insecurely transmitted form your browser/rpc client using Basic authentication!
  8. The Gitblit JSON 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.
  9. ### Gitblit Manager
  10. [Gitblit Manager](http://code.google.com/p/gitblit/downloads/detail?name=%MANAGER%) is an example Java/Swing application that allows remote management (repository and user objects) and administration (server settings) of a Gitblit server.
  11. This application uses a combination of RSS feeds and the JSON RPC interface, both of which are part of the [Gitblit API](http://code.google.com/p/gitblit/downloads/detail?name=%API%) library, to present live information from a Gitblit server. Some JSON RPC methods from the utility class `com.gitblit.utils.RpcUtils` are not currently used by the Gitblit Manager.
  12. **NOTE:**
  13. Gitblit Manager stores your login credentials **INSECURELY** in homedir/.gitblit/config.
  14. ## RSS Query Interface
  15. At present, Gitblit does not yet support retrieving Git objects (commits, etc) via the JSON RPC mechanism. However, the repository/branch RSS feeds can be used to extract log/history information from a repository branch.
  16. The Gitblit API includes methods for retrieving and interpreting RSS feeds. The Gitblit Manager uses these methods to allow branch activity monitoring and repository searching.
  17. <table class="table">
  18. <tr><th>url parameter</th><th>default</th><th>description</th></tr>
  19. <tr><td colspan='3'><b>standard query</b></td></tr>
  20. <tr><td><em>repository</em></td><td><em>required</em></td><td>repository name is part of the url (see examples below)</td></tr>
  21. <tr><td>ot=</td><td><em>optional</em><br/>default: COMMIT</td><td>object type to return in results. COMMIT or TAG</td></tr>
  22. <tr><td>h=</td><td><em>optional</em><br/>default: HEAD</td><td>starting branch, ref, or commit id</td></tr>
  23. <tr><td>l=</td><td><em>optional</em><br/>default: web.syndicationEntries</td><td>maximum return count</td></tr>
  24. <tr><td>pg=</td><td><em>optional</em><br/>default: 0</td><td>page number for paging<br/>(offset into history = pagenumber*maximum return count)</td></tr>
  25. <tr><td colspan='3'><b>search query</b></td></tr>
  26. <tr><td>s=</td><td><em>required</em></td><td>search string</td></tr>
  27. <tr><td>st=</td><td><em>optional</em><br/>default: COMMIT</td><td>search type</td></tr>
  28. </table>
  29. ### Example RSS Queries
  30. https://localhost:8443/feed/gitblit.git?l=50&h=refs/heads/master
  31. https://localhost:8443/feed/gitblit.git?l=50&h=refs/heads/master&s=documentation
  32. https://localhost:8443/feed/gitblit.git?l=50&h=refs/heads/master&s=james&st=author&pg=2
  33. ## JSON Remote Procedure Call (RPC) Interface
  34. ### RPC Protocol Versions
  35. <table class="table">
  36. <tbody>
  37. <tr><th>Release</th><th>Protocol Version</th></tr>
  38. <tr><td>Gitblit v0.7.0</td><td>1 (inferred version)</td></tr>
  39. <tr><td>Gitblit v0.8.0</td><td>2</td></tr>
  40. <tr><td>Gitblit v0.9.0 - v1.0.0</td><td>3</td></tr>
  41. <tr><td>Gitblit v1.1.0</td><td>4</td></tr>
  42. <tr><td>Gitblit v1.2.0</td><td>5</td></tr>
  43. <tr><td>Gitblit v1.3.1</td><td>6</td></tr>
  44. <tr><td>Gitblit v1.4.0</td><td>7</td></tr>
  45. <tr><td>Gitblit v1.6.0</td><td>8</td></tr>
  46. </tbody>
  47. </table>
  48. #### Protocol Version 5
  49. - *SET_REPOSITORY_MEMBERS* will reject all calls because this would elevate all discrete permissions to RW+
  50. Use *SET_REPOSITORY_MEMBER_PERMISSIONS* instead.
  51. - *SET_REPOSITORY_TEAMS* will reject all calls because this would elevate all discrete permissions to RW+
  52. Use *SET_REPOSITORY_TEAM_PERMISSIONS* instead.
  53. ### RPC Request and Response Types
  54. <table class="table">
  55. <tr><th colspan='2'>url parameters</th><th rowspan='2'>required<br/>user<br/>permission</th><th rowspan='2'>protocol<br/>version</th><th colspan='2'>json</th></tr>
  56. <tr><th>req=</th><th>name=</th><th>post body</th><th>response body</th></tr>
  57. <tr><td colspan='6'><em>web.enableRpcServlet=true</em></td></tr>
  58. <tr><td>GET_PROTOCOL</td><td>-</td><td>-</td><td>2</td><td>-</td><td>Integer</td></tr>
  59. <tr><td>LIST_REPOSITORIES</td><td>-</td><td>-</td><td>1</td><td>-</td><td>Map&lt;String, RepositoryModel&gt;</td></tr>
  60. <tr><td>LIST_BRANCHES</td><td>-</td><td>-</td><td>1</td><td>-</td><td>Map&lt;String, List&lt;String&gt;&gt;</td></tr>
  61. <tr><td>LIST_SETTINGS</td><td>-</td><td><em>-</em></td><td>1</td><td>-</td><td>ServerSettings (basic keys)</td></tr>
  62. <tr><td>GET_USER</td><td>user name</td><td>-</td><td>6</td><td>-</td><td>UserModel</td></tr>
  63. <tr><td>FORK_REPOSITORY</td><td>repository name</td><td><em>-</em></td><td>8</td><td>-</td><td>-</td></tr>
  64. <tr><td colspan='6'><em>web.enableRpcManagement=true</em></td></tr>
  65. <tr><td>CREATE_REPOSITORY</td><td>repository name</td><td><em>admin</em></td><td>1</td><td>RepositoryModel</td><td>-</td></tr>
  66. <tr><td>EDIT_REPOSITORY</td><td>repository name</td><td><em>admin</em></td><td>1</td><td>RepositoryModel</td><td>-</td></tr>
  67. <tr><td>DELETE_REPOSITORY</td><td>repository name</td><td><em>admin</em></td><td>1</td><td>RepositoryModel</td><td>-</td></tr>
  68. <tr><td>LIST_USERS</td><td>-</td><td><em>admin</em></td><td>1</td><td>-</td><td>List&lt;UserModel&gt;</td></tr>
  69. <tr><td>CREATE_USER</td><td>user name</td><td><em>admin</em></td><td>1</td><td>UserModel</td><td>-</td></tr>
  70. <tr><td>EDIT_USER</td><td>user name</td><td><em>admin</em></td><td>1</td><td>UserModel</td><td>-</td></tr>
  71. <tr><td>DELETE_USER</td><td>user name</td><td><em>admin</em></td><td>1</td><td>UserModel</td><td>-</td></tr>
  72. <tr><td>LIST_TEAMS</td><td>-</td><td><em>admin</em></td><td>2</td><td>-</td><td>List&lt;TeamModel&gt;</td></tr>
  73. <tr><td>CREATE_TEAM</td><td>team name</td><td><em>admin</em></td><td>2</td><td>TeamModel</td><td>-</td></tr>
  74. <tr><td>EDIT_TEAM</td><td>team name</td><td><em>admin</em></td><td>2</td><td>TeamModel</td><td>-</td></tr>
  75. <tr><td>DELETE_TEAM</td><td>team name</td><td><em>admin</em></td><td>2</td><td>TeamModel</td><td>-</td></tr>
  76. <tr><td>LIST_REPOSITORY_MEMBERS</td><td>repository name</td><td><em>admin</em></td><td>1</td><td>-</td><td>List&lt;String&gt;</td></tr>
  77. <tr><td><s>SET_REPOSITORY_MEMBERS</s></td><td><s>repository name</s></td><td><em><s>admin</s></em></td><td><s>1</s></td><td><s>List&lt;String&gt;</s></td><td>-</td></tr>
  78. <tr><td>LIST_REPOSITORY_MEMBER_PERMISSIONS</td><td>repository name</td><td><em>admin</em></td><td>5</td><td>-</td><td>List&lt;String&gt;</td></tr>
  79. <tr><td>SET_REPOSITORY_MEMBER_PERMISSIONS</td><td>repository name</td><td><em>admin</em></td><td>5</td><td>List&lt;String&gt;</td><td>-</td></tr>
  80. <tr><td>LIST_REPOSITORY_TEAMS</td><td>repository name</td><td><em>admin</em></td><td>2</td><td>-</td><td>List&lt;String&gt;</td></tr>
  81. <tr><td><s>SET_REPOSITORY_TEAMS</s></td><td><s>repository name</s></td><td><em><s>admin</s></em></td><td><s>2</s></td><td><s>List&lt;String&gt;</s></td><td>-</td></tr>
  82. <tr><td>LIST_REPOSITORY_TEAM_PERMISSIONS</td><td>repository name</td><td><em>admin</em></td><td>5</td><td>-</td><td>List&lt;String&gt;</td></tr>
  83. <tr><td>SET_REPOSITORY_TEAM_PERMISSIONS</td><td>repository name</td><td><em>admin</em></td><td>5</td><td>List&lt;String&gt;</td><td>-</td></tr>
  84. <tr><td>LIST_SETTINGS</td><td>-</td><td><em>admin</em></td><td>1</td><td>-</td><td>ServerSettings (management keys)</td></tr>
  85. <tr><td>CLEAR_REPOSITORY_CACHE</td><td>-</td><td><em>-</em></td><td>4</td><td>-</td><td>-</td></tr>
  86. <tr><td>REINDEX_TICKETS</td><td>repository name</td><td><em>-</em></td><td>7</td><td>-</td><td>-</td></tr>
  87. <tr><td colspan='6'><em>web.enableRpcAdministration=true</em></td></tr>
  88. <tr><td>LIST_FEDERATION_REGISTRATIONS</td><td>-</td><td><em>admin</em></td><td>1</td><td>-</td><td>List&lt;FederationModel&gt;</td></tr>
  89. <tr><td>LIST_FEDERATION_RESULTS</td><td>-</td><td><em>admin</em></td><td>1</td><td>-</td><td>List&lt;FederationModel&gt;</td></tr>
  90. <tr><td>LIST_FEDERATION_PROPOSALS</td><td>-</td><td><em>admin</em></td><td>1</td><td>-</td><td>List&lt;FederationProposal&gt;</td></tr>
  91. <tr><td>LIST_FEDERATION_SETS</td><td>-</td><td><em>admin</em></td><td>1</td><td>-</td><td>List&lt;FederationSet&gt;</td></tr>
  92. <tr><td>LIST_SETTINGS</td><td>-</td><td><em>admin</em></td><td>1</td><td>-</td><td>ServerSettings (all keys)</td></tr>
  93. <tr><td>EDIT_SETTINGS</td><td>-</td><td><em>admin</em></td><td>1</td><td>Map&lt;String, String&gt;</td><td>-</td></tr>
  94. <tr><td>LIST_STATUS</td><td>-</td><td><em>admin</em></td><td>1</td><td>-</td><td>ServerStatus (see example below)</td></tr>
  95. </table>
  96. ### RPC/HTTP Response Codes
  97. <table class="table">
  98. <tr><th>code</th><th>name</th><th>description</th></tr>
  99. <tr><td>200</td><td>success</td><td>Gitblit processed the request successfully</td></tr>
  100. <tr><td>401</td><td>unauthorized</td><td>Gitblit requires user credentials to process the request</td></tr>
  101. <tr><td>403</td><td>forbidden</td><td>Gitblit can not process the request for the supplied credentials</td></tr>
  102. <tr><td>405</td><td>method not allowed</td><td>Gitblit has disallowed the processing the specified request</td></tr>
  103. <tr><td>500</td><td>server error</td><td>Gitblit failed to process the request likely because the input object created a conflict</td></tr>
  104. <tr><td>501</td><td>unknown request</td><td>Gitblit does not recognize the RPC request type</td></tr>
  105. </table>
  106. ### Example: LIST_REPOSITORIES
  107. **url**: https://localhost/rpc?req=LIST_REPOSITORIES
  108. **response body**: Map&lt;String, RepositoryModel&gt; where the map key is the clone url of the repository
  109. ```json
  110. {
  111. "https://localhost/git/libraries/xmlapache.git": {
  112. "name": "libraries/xmlapache.git",
  113. "description": "apache xmlrpc client and server",
  114. "owner": "admin",
  115. "lastChange": "2010-01-28T22:12:06Z",
  116. "hasCommits": true,
  117. "showRemoteBranches": false,
  118. "useTickets": false,
  119. "useDocs": false,
  120. "accessRestriction": "VIEW",
  121. "isFrozen": false,
  122. "showReadme": false,
  123. "federationStrategy": "FEDERATE_THIS",
  124. "federationSets": [
  125. "libraries"
  126. ],
  127. "isFederated": false,
  128. "skipSizeCalculation": false,
  129. "skipSummaryMetrics": false,
  130. "size": "102 KB"
  131. },
  132. "https://localhost/git/libraries/smack.git": {
  133. "name": "libraries/smack.git",
  134. "description": "smack xmpp client",
  135. "owner": "admin",
  136. "lastChange": "2009-01-28T18:38:14Z",
  137. "hasCommits": true,
  138. "showRemoteBranches": false,
  139. "useTickets": false,
  140. "useDocs": false,
  141. "accessRestriction": "VIEW",
  142. "isFrozen": false,
  143. "showReadme": false,
  144. "federationStrategy": "FEDERATE_THIS",
  145. "federationSets": [],
  146. "isFederated": false,
  147. "skipSizeCalculation": false,
  148. "skipSummaryMetrics": false,
  149. "size": "4.8 MB"
  150. }
  151. }
  152. ```
  153. ### Example: EDIT_REPOSITORY (rename)
  154. The original repository name is specified in the *name* url parameter. The new name is set within the JSON object.
  155. **url**: https://localhost/rpc?req=EDIT_REPOSITORY&name=libraries/xmlapache.git
  156. **post body**: RepositoryModel
  157. ```json
  158. {
  159. "name": "libraries/xmlapache-renamed.git",
  160. "description": "apache xmlrpc client and server",
  161. "owner": "admin",
  162. "lastChange": "2010-01-28T22:12:06Z",
  163. "hasCommits": true,
  164. "showRemoteBranches": false,
  165. "useTickets": false,
  166. "useDocs": false,
  167. "accessRestriction": "VIEW",
  168. "isFrozen": false,
  169. "showReadme": false,
  170. "federationStrategy": "FEDERATE_THIS",
  171. "federationSets": [
  172. "libraries"
  173. ],
  174. "isFederated": false,
  175. "skipSizeCalculation": false,
  176. "skipSummaryMetrics": false,
  177. "size": "102 KB"
  178. }
  179. ```
  180. ### Example: LIST_USERS
  181. **url**: https://localhost/rpc?req=LIST_USERS
  182. **response body**: List&lt;UserModel&gt;
  183. ```json
  184. [
  185. {
  186. "username": "admin",
  187. "password": "admin",
  188. "canAdmin": true,
  189. "excludeFromFederation": true,
  190. "repositories": []
  191. },
  192. {
  193. "username": "test",
  194. "password": "test",
  195. "canAdmin": false,
  196. "excludeFromFederation": false,
  197. "repositories": [
  198. "libraries/xmlapache.git",
  199. "libraries/smack.git"
  200. ]
  201. }
  202. ]
  203. ```
  204. ### Example: LIST_SETTINGS
  205. **url**: https://localhost/rpc?req=LIST_SETTINGS
  206. **response body**: ServerSettings
  207. ```json
  208. {
  209. "settings": {
  210. "web.siteName": {
  211. "name": "web.siteName",
  212. "currentValue": "",
  213. "defaultValue": "",
  214. "description": "Gitblit Web Settings\nIf blank Gitblit is displayed.",
  215. "since": "0.5.0",
  216. "caseSensitive": false,
  217. "restartRequired": false,
  218. "spaceDelimited": false
  219. },
  220. "web.summaryCommitCount": {
  221. "name": "web.summaryCommitCount",
  222. "currentValue": "16",
  223. "defaultValue": "16",
  224. "description": "The number of commits to display on the summary page\nValue must exceed 0 else default of 16 is used",
  225. "since": "0.5.0",
  226. "caseSensitive": false,
  227. "restartRequired": false,
  228. "spaceDelimited": false
  229. }
  230. }
  231. }
  232. ```
  233. ### Example: LIST_STATUS
  234. **url**: https://localhost/rpc?req=LIST_STATUS
  235. **response body**: ServerStatus
  236. ```json
  237. {
  238. "bootDate": "2011-10-22T12:13:00Z",
  239. "version": "0.7.0-SNAPSHOT",
  240. "releaseDate": "PENDING",
  241. "isGO": true,
  242. "systemProperties": {
  243. "file.encoding": "Cp1252",
  244. "java.home": "C:\\Program Files\\Java\\jdk1.6.0_26\\jre",
  245. "java.io.tmpdir": "C:\\Users\\JAMESM~1\\AppData\\Local\\Temp\\",
  246. "java.runtime.name": "Java(TM) SE Runtime Environment",
  247. "java.runtime.version": "1.6.0_26-b03",
  248. "java.vendor": "Sun Microsystems Inc.",
  249. "java.version": "1.6.0_26",
  250. "java.vm.info": "mixed mode",
  251. "java.vm.name": "Java HotSpot(TM) 64-Bit Server VM",
  252. "java.vm.vendor": "Sun Microsystems Inc.",
  253. "java.vm.version": "20.1-b02",
  254. "os.arch": "amd64",
  255. "os.name": "Windows 7",
  256. "os.version": "6.1"
  257. },
  258. "heapAllocated": 128057344,
  259. "heapFree": 120399168,
  260. "heapSize": 1899560960,
  261. "servletContainer": "jetty/7.4.3.v20110701"
  262. }
  263. ```