gitosis_easy_conf

Work in Progress

This is still work in progress and the author makes no guarantee that it will ever be completed.

Description

Because we’re using Redmine and Gitosis and are aiming to have a workflow similar to github, i.e. fork, commit, push, pull-request, we need a repo for each developer for every project. I.e. 2 rails apps, 3 developers would mean that we have 8 repos. Having 8 repos, each with their own permissions and naming gets confusing using a gitosis config, hence this gem.

Scenario:

Four developers and 3 rails applications. Two developers (dev1 & dev2) are owners can can push commits to the master repositories, the other two developers can’t deploy and commit to the master repositories. There are also two servers to which all the applications can be deployed to.

The following config.rb is an example:

Gitosis.config do
  fork_naming_convention do |repo, forker|
    "#{forker}_#{repo}"
  end
  filename "gitosis.readme.conf"
end

Gitosis.forkers do
  developer1 'dev.one'
  developer2 'dev.two'
  developer3 'dev.three'
  developer4 'dev.four'
end

Gitosis.groups do
  admins         Forker[:developer1], Forker[:developer2]
  developers     Forker[:developer3], Forker[:developer4]
  deployers      'app1.deploy', 'app2.deploy'
  all_developers :admins, :developers
end

Gitosis.repositories do
  with_base_configuration( :writable => :admins,
                           :readable => [:all_developers, :deployers],
                           :forks    => :all ) do
    rails_app_one
    rails_app_two
    rails_app_three
  end
end

The result of this configuration can be found in the examples directory.

Contributing to gitosis_easy_conf

  • Check out the latest master to make sure the feature hasn’t been implemented or the bug hasn’t been fixed yet

  • Check out the issue tracker to make sure someone already hasn’t requested it and/or contributed it

  • Fork the project

  • Start a feature/bugfix branch

  • Commit and push until you are happy with your contribution

  • Make sure to add tests for it. This is important so I don’t break it in a future version unintentionally.

  • Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.

Copyright © 2011 Gerrit Riessen. See LICENSE.txt for further details.