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