class Gitolite::UserGroup

Constants

GROUP_CONFIG_PATH
UserGroupTemplate

we need this to make sure that group is there but dummy name is needed to pass gitolite check DUMMY_USERNAME = 'r8_dummy_group_user'

Attributes

logger[RW]
members[RW]
name[RW]

Public Class Methods

new(group_name, logger_, gitolite_path, gitolite_branch = "master") click to toggle source
# File lib/gitolite/user_group.rb, line 33
def initialize(group_name, logger_, gitolite_path, gitolite_branch = "master")
  @name    = group_name
  @members = []
  @commit_messages = []
  @group_file_path = File.join(GROUP_CONFIG_PATH, "#{@name}.conf")
  @gitolite_admin_repo ||= Git::FileAccess.new(gitolite_path, gitolite_branch)
  @logger = logger_

  if exists?
    load_group()
  end
end

Public Instance Methods

add_git_usernames(array_of_usernames) click to toggle source
# File lib/gitolite/user_group.rb, line 72
def add_git_usernames(array_of_usernames)
  unless is_subset?(@members, array_of_usernames)
    @members.concat(array_of_usernames)
    @members.uniq!
    @commit_messages << "Added users (#{array_of_usernames.join(', ')}) to group '#{@name}'"
  end
end
any_changes?() click to toggle source
# File lib/gitolite/user_group.rb, line 68
def any_changes?
  !@commit_messages.empty?
end
commit_changes(override_commit_message = nil) click to toggle source
# File lib/gitolite/user_group.rb, line 93
def commit_changes(override_commit_message = nil)
  # we check if there were changes
  unless @commit_messages.empty?
    content = file_content()

    commit_msg = override_commit_message || @commit_messages.join(', ')

    @gitolite_admin_repo.add_file(@group_file_path,content)
    @gitolite_admin_repo.commit(commit_msg)
    
    @logger.info(commit_msg)
  else
    @logger.info("There has been no changes on group '#{@name}' skipping gitolite commit.")
  end
end
exists?() click to toggle source
# File lib/gitolite/user_group.rb, line 64
def exists?
  !@gitolite_admin_repo.file_content(@group_file_path).nil?
end
file_content() click to toggle source
# File lib/gitolite/user_group.rb, line 110
def file_content()
  UserGroupTemplate.result(:user_group => self)
end
load_group() click to toggle source
# File lib/gitolite/user_group.rb, line 46
def load_group()
  raw_content = @gitolite_admin_repo.file_content(@group_file_path)

  unless raw_content
    raise Gitolite::NotFound, "Configuration file for user group (#{@name}) does not exist"
  end

  raw_content.each_line do |l|
    l.chomp!()
    if l =~ /.*=(.+)$/
      raw_members = $1
      @members = raw_members.chomp().split(' ')
    else
      raise ::Error::GitoliteParsing, "Parsing groups error: (#{l})"
    end
  end
end
remove_git_usernames(array_of_usernames) click to toggle source
# File lib/gitolite/user_group.rb, line 86
def remove_git_usernames(array_of_usernames)
  if is_subset?(@members, array_of_usernames)
    @members = @members - array_of_usernames
    @commit_messages << "Removed users (#{array_of_usernames.join(', ')}) from group '#{@name}'"  
  end
end
set_git_usernames(array_of_usernames) click to toggle source
# File lib/gitolite/user_group.rb, line 80
def set_git_usernames(array_of_usernames)
  # we clean current member since we are setting all gitusernames (not adding)
  @members = []
  add_git_usernames(array_of_usernames)
end