Joe Miller bio photo

Joe Miller

Ops/Engineering. Continuous DevOping at Webscale

Twitter Github

Gitosis-ng – it’s gitosis with some new features to help users work with the git server. Mainly implemented with commands sent via ssh, ex:

list available commands:

$ ssh git@git.example.com help


    add-repo : Create new repository. Usage: 'add-repo repo_name'
    help : Get list of available commands
    list : Get detailed list of git repositories
    list-json : Get detailed list of repositories in JSON format
    list-short : Get simple list of git repositories
    list-yaml : Get detailed list of repositories in YAML format

List available repos:

$ ssh git@git.example.com list
    Repository : myproject.git
     Initialized: no
     Your Access: read/write
     Owner : jmiller
     URL :
     Description:


     Repository : otherproject.git
     Initialized: no
     Your Access: readonly
     Owner : bsmith
     URL :
     Description:

Create new repo:

$ ssh git@git.example.com add-repo myproject


    Created repository: myproject


    Next Steps:
      mkdir myproject
      cd myproject
      git init
      touch README
      git add README
      git commit -a -m 'first commit'
      git remote add origin git@GIT_SERVER_ADDRESS:myproject.git
      git push origin master


    Existing Git repo?
      cd myproject
      git remote add origin git@GIT_SERVER_ADDRESS:myproject.git
      git push origin master

I am a fan github.com and gitorious.com, but we needed something internal that would be simpler than gitorious to get up and running.

The next best thing I could find was gitosis which is very simple and straightforward.

However, gitosis lacked the user-friendly features I liked about github/gitorious. For example, how about a real simple way to list repos?

So, I decided to add “self-service” features to gitosis and call it gitosis-ng.  I want my users to be able to do all of these tasks on their own:

  • List available repos
  • Create new repos
  • Give permissions to other users on repos they control
  • Set metadata on repos (eg: URL, owner contact info, description)

So far I have implemented the first 2 features in this list and will be working on the remaining features as time permits.

Eventually I would love to find a way to allow users to self-register with gitosis-ng, but this could be challenging since gitosis-ng works entirely over SSH and relies on users having an SSH key registered with the server before they can execute commands.

gitosis-ng is available on github:   http://github.com/joemiller/gitosis-ng