Giter Site home page Giter Site logo

devhub-tud / java-gitolite-manager Goto Github PK

View Code? Open in Web Editor NEW
11.0 11.0 5.0 319 KB

The java-gitolite-manager is a simple and compact Java library which enables developers to manage their gitolite configuration from Java. The aim is to give developers an easy to understand interface to manage repositories, groups and users in gitolite.

License: Apache License 2.0

Java 100.00%

java-gitolite-manager's People

Contributors

jwgmeligmeyling avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

java-gitolite-manager's Issues

Gitolite groups extension

Gitolite groups can be extended later on in the configuration file, because the configuration is parsed in 1 pass, groups are automatically expanded when used. Therefore a group might differ between two repositories:

@group user-1

repo name
    RW+ @group

@group user-2

repo name-2
   RW+ @group

For us it would be confusing to support groups this way, because something as: group.addUser(...) suddenly is not that applicable anymore. We should however do something: (1) note that we require groups on the head of the config, (2) log a warning when groups are (re)defined after usage in an existing config.

Support removing repositories from disk

Currently you can't really delete repositories from gitolite. They remain on disk even after you remove them from the configuration file. We should allow clients to remove repositories from the configuration file and also remove it from disk.

Release on Devhub nexus server

For the TI1706 course we want students to be able to write tests for devhub. For this it would be easiest if the git-server client and build-server client would be released on the Devhub Nexus maven repository. This is also useful for re-enabling the CI without having to clone all repos, checkout the right branch, and to a maven install.

Add support for branch permissions

Gitolite is able to set specific permissions for users and groups on individual branches in git repositories. One example would be to restrict pushing to master to only a few users.

Ability to add/remove git hooks

Users should be able to add or remove git hooks for every repository (excluding gitolite-admin). This will probably require Java-Gitolite-Manager to be run on the git server (preferably on the git user).

Add support for multithreading

The current architecture only allows changes to made sequentially. This is fine for prototyping, but it forces other developers to work around this problem by building a queueing system in multithreaded environments.

Ideally this queueing concept should be implemented internally. Also it would be nice to implement a transaction-like system where client threads can simple open a transaction on the current model of the configuration and commit any changes they made, as opposed to writing the entire configuration to disk and potentially overwriting changes made by other threads.

Gitolite repository regexp

Gitolite supports repository rules and groups on repository name patterns. See the following example:

repo FOSS/..*
    # ...rules for repos under FOSS/

@secret     =   secret/..* private/..*
repo @secret
    # ...rules for repos under secret/ and private/

We could consider to support (or at least not break) configurations using these rules.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.