Rubolite
Rubolite is an interface to Gitolite (https://github.com/sitaramc/gitolite)
@robertross
Usage
gem "rubolite"
admin = Rubolite::Admin.new("/Users/robertross/Sites/gitolite-admin")
client = admin.client
client.repos # Get a list of repos
repo = Rubolite::Repo.new("newrepository")
user = Rubolite::User.new("robert", "RW+")
repo.add_user user
client.add_repo repo
client.save_and_push!
Wait what?
- Rubolite requires that you tell it where your admin repository is on your box. It does not bootstrap this for you. Gitolite must be setup.
- Once you have that, the Rubolite::Admin class returns a client object by calling
admin.client
. You do most of your calls on this interface. - To get a list of repos in the current config, call
client.repos
- To add a repository to your config, insantiate a Repo object with a name.
- Repo objects take users which are instantiated with a name and permission level. Example:
user = Rubolite::User.new("robert", "RW+")
- Then we add the user to the repo with
Repo#add_user
- Then we add the repo to the client with
Client#add_repo
Calling save_and_push!
does the following:
- Writes the new configuration file.
- Saves any SSH Keys you may have added (see below)
- Commits the changes to the gitolite-admin repo
- Pushes them to your origin remote.
If you really desire, you may call the methods individually. The methods are:
save!
Writes the config.save_ssh_keys!
Writes SSH keys that may have been added.commit!
Commits the changes on gitolite-admin.push!
Pushes the repository to origin master.
Dealing with SSH Keys
SSH Keys are handled by the Rubolite::SSHKey object.
From a string
ssh_key = Rubolite::SSHKey.from_string("ssh-rsa awesomekeyprint robertross@local")
From a file
ssh_key = Rubolite::SSHKey.from_file("~/.ssh/id_rsa.pub")
Adding them to a gitolite-admin repo
Call add_ssh_key
on your client with 2 parameters: username, and the ssh key object.
Your username must be the same name as the Rubolite::User name you add to repositories.
repo = Rubolite::Repo.new("new-repo")
repo.add_user Rubolite::User.new("robert", "RW+")
client.add_ssh_key "robert", ssh_key