How to use gitolite
If you have not yet set up your ssh access, first see How to set up your ssh access.
Crash course on using gitolite
You can find the upstream documentation for gitolite at their website:
But you probably want to read their user doc section:
The basics however are straightforward. You have been automatically
granted a wildcard space under pub/scm/linux/kernel/git/[username]/
To create a repository under there either push to the path you want or perform a git clone. Either of these will create the repository for you.
Example using “git clone”:
git clone git@gitolite.kernel.org:pub/scm/linux/kernel/git/[username]/foobar
When cloning a tree that already exists on kernel.org, you should use the gitolite built in cloning system:
ssh git@gitolite.kernel.org fork pub/scm/from-repo pub/scm/to-repo
This will take care of the git clone, and uses Shared (-s), and Linked (-l) git options.
E.g. for Linux kernel you should start by forking Linus’s repository:
ssh git@gitolite.kernel.org fork \
pub/scm/linux/kernel/git/torvalds/linux \
pub/scm/linux/kernel/git/[username]/linux
Important
No leading “/” or trailing “.git”
Do not start repository paths with ‘/’, just “pub/scm”
Do not end repository paths with “.git”, just “kernel/git/[username]/linux”
Some commands may be forgiving and work anyway, but many will not.
Additional commands for gitolite.kernel.org
Note: This list may be incomplete. You can find out more up-to-date info about available commands if you run:
ssh git@gitolite.kernel.org help
D
Delete a repository. You will need to run D unlock
first, and then
D rm
. E.g.:
ssh git@gitolite.kernel.org D unlock pub/scm/linux/kernel/git/[username]/linux
ssh git@gitolite.kernel.org D rm pub/scm/linux/kernel/git/[username]/linux
desc
Sets the repository description. E.g.:
ssh git@gitolite.kernel.org desc pub/scm/linux/kernel/git/[username]/linux "[username] kernel tree"
Note
The desc command does not like special characters such as quotes, ampersands, brackets, etc. Another way to set your repository description is via a cgitrc file in the special __meta__ branch of the repo. See Repo appearance on git.kernel.org for more details.
fork
Clone a repository that is already hosted by kernel.org, E.g.:
ssh git@gitolite.kernel.org fork pub/scm/repo1 pub/scm/repo2
help
Displays a help message for what commands are enabled
info
Displays access permission you may have to various repos (warning: wall of text).
getsmtppass
Sets up a random password you can use to authenticate against mail.kernel.org in order to send outgoing mail. The command output will also give you some configuration examples for mutt and git.
mailforward
Allows you to modify your mail forwarding address. See Using your username@kernel.org alias for more details.
2fa
Allows you to set up your 2-factor authentication token. See 2-factor authentication with gitolite (deprecated) for more details.
symbolic-ref
Allows you to repoint HEAD to other branches instead of the default. E.g.:
ssh git@gitolite.kernel.org symbolic-ref \
pub/scm/your/repo HEAD refs/heads/dev
Note
The command is fully compatible with other git-symbolic-ref
operations, but only changes to HEAD
will be propagated to the
public mirrors.
track
Allows you to set up a remote to another repository hosted at
kernel.org, which is useful when you want to avoid sending a lot of
objects during git push
. See Setting repo remotes with the “track” command for
more details.
Using gitolite instead of public mirrors
The public mirrors, while generally trusted, don’t offer the same level of protection as the gitolite master, so it is advisable to make sure that you use the gitolite.kernel.org master to apply pull requests. There is a simple way to instruct git to automatically use the master whenever a git.kernel.org pull URL is provided.
Just add the following to your ~/.gitconfig
:
[url "ssh://git@gitolite.kernel.org"]
insteadOf = https://git.kernel.org
insteadOf = http://git.kernel.org
insteadOf = git://git.kernel.org
Git will now automatically rewrite all git.kernel.org
requests to be
going to the master instead.