Skip to main content
https://travis-ci.org/baguette-io/baguette-olite.svg?branch=master

Python wrapper for gitolite. Fork from https://github.com/PressLabs/pyolite.

Easy and simple to user, just pip install baguette-olite.

Gitolite Setup Prereqs

Using Pyolite is very easy, but requires some initial set up. First, your gitolite-admin repo must contain a directory called repos and another one called groups, and all .conf files in these directories should be included in your gitolite.conf file. For example, your gitolite-admin repo might have the following structure:

├── gitolite.conf
└── repos
    └── [ empty ]
└── groups
    └── [ empty ]

And your gitolite.conf file might look like this:

repo gitolite-admin
    RW+     =   admin

repo testing
    RW+     =   @all

include         "repos/*.conf"
include         "groups/*.conf"

This is required because Pyolite makes changes to files only inside the repos and groups directories.

Repository API

First, we need to initialize a pyolite object with the path to gitolite’s repository.

from pyolite import Pyolite

# initial olite object
admin_repository = '/home/absolute/path/to/gitolite/repo/'
olite = Pyolite(admin_repository=admin_repository)

After that, we can create and get a repo using create and get methods.

# create a repo
repo = olite.repos.get('my_repo')
repo = olite.repos.create('ydo')

# List existing Pyolite repos
repos = olite.repos.all()
for repo_it in repos:
    print(repo_it.name)

Every repo has an users object, in order to facilitate basic operations: adding, editing and removing users from a repository.

print("Repo's users: %s" % repo.users)
# list a repo's users
users_as_list = repo.users.list()

# add a new user
user = olite.users.create(name='bob', key_path="~/.ssh/third_rsa.pub")
repo.users.add(olite.users.get('admin'), permission='W+')
repo.users.add('bob', permission='R')

# change user's permissions
repo.users.edit(olite.users.get('admin'), permission='WR+')
repo.users.edit('bob', permission='RCW')

# remove user
repo.users.remove('admin')

Users API

You an easly manipulate users aswell, using allmost the same API.

from pyolite import Pyolite

# initial olite object
admin_repository = '/home/absolute/path/to/gitolite/repo/'
olite = Pyolite(admin_repository=admin_repository)

# create user object
vlad = olite.users.create(name='bob',
                      key_path='~/.ssh/second_rsa.pub')

# get user by name
vlad = olite.users.get(name='admin')

# add new key to user
vlad.keys.append('/path/to/key')
vlad.keys.append('just put the key here')

# check if user is admin or not
print(vlad.is_admin)

# list user's keys and repos
keys_as_list = vlad.list_keys()
repos_as_list = vlad.list_repos()

# delete a user by name
deleted_user = olite.users.delete('username')
print(deleted_user)

Groups API

You an easly manipulate groups aswell, using allmost the same API.

from pyolite import Pyolite

# initial olite object
admin_repository = '/home/absolute/path/to/gitolite/repo/'
olite = Pyolite(admin_repository=admin_repository)

# create group object
group1 = olite.groups.create('group1')
# create is idempotent
group1 = olite.groups.create('group1')

#get or create( `create()` wrapper)
group2 = olite.groups.get_or_create('group2')
group2 = olite.groups.get_or_create('group2')

# get group by name
group1 = olite.groups.get('group1')

# list all groups
olite.groups.all()

# delete a group by name
olite.groups.delete('group1')

# add an user to the gorup
olite.groups.user_add('group1', 'user1')

# delete an user from a group
olite.groups.user_delete('group1', 'user1')

# add a group to a repo
olite.groups.repo_add('group1', 'repo1', 'RW')

# delete a group from a repo
olite.groups.repo_delete('group1', 'repo1')

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

baguette-olite-0.12.tar.gz (14.4 kB view details)

Uploaded Source

File details

Details for the file baguette-olite-0.12.tar.gz.

File metadata

  • Download URL: baguette-olite-0.12.tar.gz
  • Upload date:
  • Size: 14.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for baguette-olite-0.12.tar.gz
Algorithm Hash digest
SHA256 835998fe21ee3b2197137e6baaaa741e2a85afdbd960e79eeea3e56c653ed455
MD5 15889c14e8c143994c3b4930d5a08ece
BLAKE2b-256 95c076be72773f5c5b8ba573b8d99d9c5b3100723195338a4dea3cabdf5e1d53

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page