From 831469ba89ea8bca3bfbd1d662dbdd2c9f233798 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Mon, 12 Sep 2011 15:37:55 -0400 Subject: Largely completed, uber-cool federation feature. --- docs/03_faq.mkd | 128 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 docs/03_faq.mkd (limited to 'docs/03_faq.mkd') diff --git a/docs/03_faq.mkd b/docs/03_faq.mkd new file mode 100644 index 00000000..12ceada6 --- /dev/null +++ b/docs/03_faq.mkd @@ -0,0 +1,128 @@ +## Troubleshooting + +### Eclipse/Egit/JGit complains that it "can't open upload pack"? +There are a few ways this can occur: + +1. You are using https with a self-signed certificate and you **did not** configure *http.sslVerify=false* + 1. Window->Preferences->Team->Git->Configuration + 2. Click the *New Entry* button + 3. <pre>Key = *http.sslVerify* + Value = *false*</pre> +2. Gitblit GO's default self-signed certificate is bound to *localhost* and you are trying to clone/push between machines. + 1. Review the contents of `makekeystore.cmd` + 2. Set *your hostname* in the *HOSTNAME* variable. + 3. Execute the script.<br/>This will generate a new certificate and keystore for *your hostname* protected by *server.storePassword*. +3. The repository is clone-restricted and you don't have access. +4. The repository is clone-restricted and your password changed. +5. A regression in Gitblit. :( + +### Why can't I access Gitblit GO from another machine? +1. Please check *server.httpBindInterface* and *server.httpsBindInterface* in `gitblit.properties`, you may be only be serving on *localhost*. +2. Please see the above answer about "**can't open upload pack**". +3. Ensure that any firewall you may have running on the Gitblit server either has an exception for your specified ports or for the running process. + +### How do I run Gitblit GO on port 80 or 443 in Linux? +Linux requires root permissions to serve on ports < 1024.<br/> +Run the server as *root* (security concern) or change the ports you are serving to 8080 (http) and/or 8443 (https). + +### Gitblit GO does not list my repositories?! +1. Confirm that the value *git.repositoriesFolder* in `gitblit.properties` actually points to your repositories folder. +2. Confirm that the Gitblit GO process has full read-write-execute permissions to your *git.repositoriesFolder*. + +### Gitblit WAR does not list my repositories?! +1. Confirm that the <context-param> *git.repositoriesFolder* value in your `web.xml` file actually points to your repositories folder. +2. Confirm that the servlet container process has full read-write-execute permissions to your *git.repositoriesFolder*. + +### Gitblit WAR will not authenticate any users?! +Confirm that the <context-param> *realm.userService* value in your `web.xml` file actually points to a `users.properties` file. + +### Gitblit won't open my grouped repository (/group/myrepo.git) or browse my branch/tag/ref?! +This is likely an url encoding/decoding problem related to your servlet container's security. There are two possible workarounds for this issue. In `gitblit.properties` or `web.xml`: + +1. try setting *web.mountParameters* to *false*.<br/>This changes the url scheme from mounted (*/commit/myrepo.git/abcdef*) to parameterized (*/commit/?r=myrepo.git&h=abcdef*). +2. try changing *web.forwardSlashCharacter* to an asterisk or a **!** + +## General Interest Questions + +### Gitblit? What kind of name is that? +It's a phonetic play on [bitblt][bitblt] which is an image processing operation meaning *bit-block transfer*. + +### Why use Gitblit? +It's a small tool that allows you to easily manage shared repositories and doesn't require alot of setup or git kung-foo. + +### Who is the target user for Gitblit? +Small workgroups that require centralized repositories. + +Gitblit is not meant to be a social coding resource like [Github](http://github.com) or [Bitbucket](http://bitbucket.com) with 100s or 1000s of users. Gitblit is designed to fulfill the same function as your centralized Subversion or CVS server. + +### Why does Gitblit exist when there is Git and Gitweb? +As a Java developer I prefer that as much of my tooling as possible is Java.<br/> +Originally, I was going to use [Mercurial](http://mercurial.selenic.com) but... + +- MercurialEclipse [shells to Python, writes to System.out, and captures System.in](http://mercurial.808500.n3.nabble.com/Hg4J-Mercurial-pure-Java-library-tp2693090p2694555.html)<br/> +Parsing command-line output is fragile and suboptimal.<br/>Unfortunately this is necessary because Mercurial is an application, not a library. +- Mercurial HTTP/HTTPS needs to run as CGI through Apache/IIS/etc, as mod_python through Apache, or served with a built-in http server.<br/> +This requires setup and maintenance of multiple, mixed 3rd party components. + +Gitblit eliminates all that complication with its 100% Java stack and simple single configuration file. + +Additionally, Git and Gitweb do not offer repository creation or user management. + +### Do I need real Git? +No (mostly). Gitblit is based on [JGit][jgit] which is a pure Java implementation of the [Git version control system][git].<br/> +Everything you need for Gitblit (except Java) is either bundled in the distribution file or automatically downloaded on execution. + +**mostly**<br/> +JGit does not fully support the git-gc featureset (garbage collection) so you may want native Git to periodically run git-gc until [JGit][jgit] fully supports this feature. + +### Can I run Gitblit in conjunction with my existing Git tooling? +Yes. + +### Do I need a JDK or can I use a JRE? +Gitblit will run just fine with a JRE. Gitblit can optionally use `keytool` from the JDK to generate self-signed certificates, but normally Gitblit uses [BouncyCastle][bouncycastle] for that need. + +### Does Gitblit use a database to store its data? +No. Gitblit stores its repository configuration information within the `.git/config` file and its user information in `users.properties` or whatever filename is configured in `gitblit.properties`. + +### Can I manually edit users.properties, gitblit.properties, or .git/config? +Yes. You can manually manipulate all of them and (most) changes will be immediately available to Gitblit.<br/>Exceptions to this are noted in `gitblit.properties`. + +**NOTE:**<br/>Care must be taken to preserve the relationship between user roles and repository names.<br/>Please see the *User Roles* section of the [setup](/setup.html) page for details. + +### Can I restrict access to paths within a repository? +No. Access restrictions apply to the repository as a whole. + +Gitblit's simple authentication and authorization mechanism can be used to facilitate one or more of the [workflows outlined here](http://progit.org/book/ch5-1.html). Should you require more fine-grained access controls you might consider using [gitolite](https://github.com/sitaramc/gitolite). + +### Can I authenticate users against XYZ? +Yes. The user service is pluggable. You may write your own user service by implementing the *com.gitblit.IUserService* interface. Set the fully qualified classname as the *realm.userService* property. + +### Why doesn't Gitblit support SSH? +Gitblit could integrate [Apache Mina][mina] to provide SSH access. However, doing so violates Gitblit's first design principle: [KISS](http://en.wikipedia.org/wiki/KISS_principle).<br/> +SSH support requires creating, exchanging, and managing SSH keys (arguably not more complicated than managing users). While this is possible, JGit's SmartHTTP implementation is a simpler and universal transport mechanism. + +You might consider running [Gerrit](http://gerrit.googlecode.org) which does integrate [Apache Mina][mina] and supports SSH or you might consider serving [Git][git] on Linux which would offer real SSH support and also allow use of [many other compelling Git solutions](https://git.wiki.kernel.org/index.php/InterfacesFrontendsAndTools). + +### What types of Search does Gitblit support? +Gitblit supports case-insensitive searches of *commit message* (default), *author*, and *committer*.<br/> + +To search by *author* or *committer* use the following syntax in the search box: + + author: james + committer: james + +Alternatively, you could enable the search type dropdown list in your `gitblit.properties` file. + +### Why did you call the setting federation.N.frequency instead of federation.N.period?! + +Yes, yes I know that you are really specifying the period, but Frequency sounds better to me. :) + +### Can Gitblit be translated? + +Yes. Most messages are localized to a standard Java properties file. + +[bitblt]: http://en.wikipedia.org/wiki/Bit_blit "Wikipedia Bitblt" +[jgit]: http://eclipse.org/jgit "Eclipse JGit Site" +[git]: http://git-scm.com "Official Git Site" +[mina]: http://mina.apache.org "Apache Mina" +[bouncycastle]: http://bouncycastle.org "The Legion of the Bouncy Castle" \ No newline at end of file -- cgit v1.2.3