
Security News
Crates.io Users Targeted by Phishing Emails
The Rust Security Response WG is warning of phishing emails from rustfoundation.dev targeting crates.io users.
This gem is designed to provide a Ruby interface to the Gitolite Git backend system via gitlab-grit gem.
It provides these functionalities :
Please note : this project is not maintained anymore.
You'll find a new implementation of this library here : gitolite-rugged.
gem 'jbox-gitolite', '~> 1.2.6'
then bundle install
.
require 'gitolite'
ga_repo = Gitolite::GitoliteAdmin.new("/path/to/gitolite/admin/repo")
# or with options :
ga_repo = Gitolite::GitoliteAdmin.new("/path/to/gitolite/admin/repo", :config_file => 'example.conf',
:debug => true,
:timeout => 20,
:env => {'GIT_SSH' => '/path/to/script/file'})
This method can only be called on an existing gitolite-admin repo. If you need to create a new gitolite-admin repo, see "Bootstrapping".
conf = ga_repo.config
# Empty configs can also be initialized
conf2 = Config.init # => defaults to a filename of gitolite.conf
conf2 = Config.init("new_config.conf")
# Filename is set to whatever the filename was when the config was created
conf.filename # => "gitolite.conf"
conf2.filename # => "new_config.conf"
# Filename can be changed via the setter
conf2.filename = "new_config.conf"
# *to_file* will write the config out to the file system using the value of the filename attribute.
# An alternative filename can also be specified
conf.to_file("/new/config/path") # => writes /new/config/path/gitolite.conf
conf.to_file("/new/config/path", "test.conf") # => writes /new/config/path/test.conf
repo = Gitolite::Config::Repo.new("AwesomeRepo")
# For a list of permissions, see http://sitaramc.github.com/gitolite/conf.html#gitolite
repo.add_permission("RW+", "", "bob", "joe", "susan")
# Set a git config option to the repo
repo.set_git_config("hooks.mailinglist", "gitolite-commits@example.tld") # => "gitolite-commits@example.tld"
# Unset a git config option from the repo
repo.unset_git_config("hooks.mailinglist") # => "gitolite-commits@example.tld"
# Set a gitolite option to the repo
repo.set_gitolite_option("mirroring.master", "kenobi") # => "kenobi"
# Remove a gitolite option from the repo
repo.unset_gitolite_option("mirroring.master") # => "kenobi"
# Add repo to config
conf.add_repo(repo)
# Delete repo by object
conf.rm_repo(repo)
# Delete a repo by name
conf.rm_repo("AwesomeRepo")
conf.rm_repo(:AwesomeRepo)
# Test if repo exists by name
conf.has_repo?('cool_repo') # => false
conf.has_repo?(:cool_repo) # => false
# Can also pass a Gitolite::Config::Repo object
repo = Gitolite::Config::Repo.new('cool_repo')
conf.has_repo?(repo) # => true
# Get a repo object from the config
repo = conf.get_repo('cool_repo')
repo = conf.get_repo(:cool_repo)
# Three ways to create keys : manually, from an existing key, or from a string representing a key
key = Gitolite::SSHKey.new("ssh-rsa", "big-public-key-blob", "email")
key2 = Gitolite::SSHKey.from_file("/path/to/ssh/key.pub")
key_string = File.read("/path/to/ssh/key.pub")
key3 = Gitolite::SSHKey.from_string(key_string, "owner")
# Create key with a name #
key = Gitolite::SSHKey.new("ssh-rsa", "big-public-key-blob", "email", "keyname")
key2 = Gitolite::SSHKey.from_file("/path/to/ssh/key.pub")
key_string = File.read("/path/to/ssh/key.pub")
key3 = Gitolite::SSHKey.from_string(key_string, "owner", "keyname")
# Add the keys
ga_repo.add_key(key)
ga_repo.add_key(key2)
ga_repo.add_key(key3)
# Remove key2
ga_repo.rm_key(key2)
ga_repo.save(commit_message, :author => 'John Doe <john.doe@example.com>')
When this method is called, all changes get written to the file system and commited in git. For the time being, gitolite assumes full control of the gitolite-admin repository. This means that any keys in the keydir that are not being tracked will be removed and any human changes to gitolite.conf will be erased. The commit message is optional. A generic message is set if missing. Optionally you can pass the author as above.
ga_repo.apply
This method will push all changes to origin master.
ga_repo.save_and_apply(commit_message)
This method will add files, commit and push all changes to origin master in the same transaction. The commit message is optional. A generic message is set if missing.
# In order to avoid conflicts, this will perform a reset! by default
# pass :reset => false to disable the reset (Git conflicts will have to be manually fixed)
ga_repo.update
ga_repo.update(:reset => false)
# Update while performing a rebase
ga_repo.update(:rebase => true)
ga_repo.reload!
# This will also perform a reload!
ga_repo.reset!
ga_repo = GitoliteAdmin.bootstrap("/path/to/new/gitolite/repo")
This will create the folders conf and keydir in the supplied path. A config file will also be created in the conf directory. The default configuration supplies RW+ permissions to a user named git for a repo named gitolite-admin. You can specify an options hash to change some values :
ga_repo = GitoliteAdmin.bootstrap("/path/to/new/gitolite/repo", {:user => "admin", :perm => "RW"})
You can also pass a message to be used for the initial bootstrap commit :
ga_repo = GitoliteAdmin.bootstrap("/path/to/new/gitolite/repo", {:message => "Bootstrapped new repo"})
Please note that while bootstrapping is supported, I highly recommend that the initial gitolite-admin repo be created by gitolite itself.
The grit gem (which is used for under-the-hood git operations) does not currently support Windows. Until it does, gitolite will be unable to support Windows.
When the gitolite backend parses the config file, it does so in one pass. Because of this, groups that are modified after being used do not see those changes reflected in previous uses.
For example:
@groupa = bob joe sue
@groupb = jim @groupa
@groupa = sam
Group b
will contain the users jim, bob, joe, and sue
You can contribute to this plugin in many ways such as :
FAQs
Unknown package
We found that jbox-gitolite demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
The Rust Security Response WG is warning of phishing emails from rustfoundation.dev targeting crates.io users.
Product
Socket now lets you customize pull request alert headers, helping security teams share clear guidance right in PRs to speed reviews and reduce back-and-forth.
Product
Socket's Rust support is moving to Beta: all users can scan Cargo projects and generate SBOMs, including Cargo.toml-only crates, with Rust-aware supply chain checks.