## Server Setup and Configuration 1. Download and unzip [Gitblit %VERSION%](http://gitblit.com/%DISTRIBUTION%).<br/> *Its best to eliminate spaces in the path name as that can cause troubleshooting headaches.* 2. The server itself is configured through a simple text file.<br/> Open `gitblit.properties` in your favorite text editor and make sure to review and set: - *git.repositoryFolder* - *server.tempFolder* - *server.httpBindInterface* and *server.httpsBindInterface*<br/> **NOTE:** Consider using **https** exclusively because passwords for authentication are transmitted as clear text! - *server.storePassword*<br/> **NOTE:** The certificate password AND the keystore password must match! 3. Execute `gitblit.cmd` or `java -jar gitblit.jar` from a command-line 4. Wait a minute or two while all dependencies are downloaded and your self-signed certificate is generated. 5. Open your browser to <http://localhost> or <https://localhost> depending on your chosen configuration. 6. Click the *Login* link and enter the default administrator credentials: **admin / admin**<br/> **NOTE:** Make sure to change the administrator username and/or password!! ### Administering Repositories Repositories can be created, edited, renamed, and deleted through the web UI. They may also be created, edited, and deleted from the command-line using real [Git](http://git-scm.com) or your favorite file manager and text editor. All repository settings are stored within the repository `.git/config` file under the *gitblit* section. [gitblit] description = master repository owner = james useTickets = false useDocs = true showRemoteBranches = false accessRestriction = clone isFrozen = false showReadme = false #### Repository Names Repository names must be unique and are CASE-SENSITIVE ON CASE-SENSITIVE FILESYSTEMS. The name must be composed of letters, digits, or `/ _ - .`<br/> Whitespace is illegal. Repositories can be grouped by folders. e.g. *libraries/mycoollib.git* and *libraries/myotherlib.git* Repository names will automatically have *.git* appended to the name at creation time, if not already specified. #### Repository Owner The *Repository Owner* has the special permission of being able to edit a repository through the web UI. The Repository Owner is not permitted to rename the repository, delete the repository, or reassign ownership to another user. ### Administering Users All users are stored in the `users.properties` file or in the file you specified in `gitblit.properties`.<br/> The format of `users.properties` follows Jetty's convention for HashRealms: username,password,role1,role2,role3... #### Usernames Usernames must be unique and are case-insensitive.<br/> Whitespace is illegal. #### Passwords User passwords are CASE-SENSITIVE and may be *plain* or *md5* formatted (see `gitblit.properties` -> *realm.passwordStorage*). #### User Roles There is only one actual *role* in Gitblit and that is *#admin* which grants administrative powers to that user. Administrators automatically have access to all repositories. All other *roles* are repository names. If a repository is access-restricted, the user must have the repository's name within his/her roles to bypass the access restriction. This is how users are granted access to a restricted repository. ### Creating your own Self-Signed Certificate Review the contents of the `makekeystore.cmd` or `makekeystore_jdk.cmd` script and execute it.<br/> **NOTE:** The certificate password AND the keystore password must match! ### Running as a Service Review the contents of the `installService.cmd` or `installService64.cmd`, as appropriate for your installed Java Virtual Machine.<br/> Set the *JVM* variable in the script to the location of your Java Virtual Machine, add any necessary start parameters, and execute the script. #### Command-Line Parameters --tempFolder Server temp folder --repositoriesFolder Git Repositories Folder --realmFile Users Realm Hash File --useNio Use NIO Connector else use Socket Connector. --httpPort HTTP port for to serve. (port <= 0 will disable this connector) --httpsPort HTTPS port to serve. (port <= 0 will disable this connector) --storePassword Password for SSL (https) keystore. --shutdownPort Port for Shutdown Monitor to listen on. (port <= 0 will disable this monitor) **Example** java -jar gitblit.jar --realmFile c:\myrealm.txt --storePassword something ## Client Setup and Configuration ### Https with Self-Signed Certificates You must tell Git not to verify the self-signed certificate in order to perform any remote Git operations. - Eclipse/EGit 1. Window->Preferences->Team->Git->Configuration 2. Click the *New Entry* button 3. <pre>Key = *http.sslVerify* Value = *false*</pre> - Command-line Git ([Git-Config Manual Page](http://www.kernel.org/pub/software/scm/git/docs/git-config.html)) <pre>git-config --global --bool --add http.sslVerify false</pre> ### Cloning an Access Restricted Repository - Eclipse/Egit<br/>Nothing special to configure, EGit figures out everything. <pre>https://yourserver/git/your/repository</pre> - Command-line Git<br/>*My testing indicates that your username must be embedded in the url. YMMV.* <pre>https://username@yourserver/git/your/repository</pre>