OSDN Git Service

Rake task to provider full repo access for gitolite-owner.\n Automerge requires...
authorrandx <dmitriy.zaporozhets@gmail.com>
Fri, 30 Mar 2012 05:25:04 +0000 (08:25 +0300)
committerrandx <dmitriy.zaporozhets@gmail.com>
Fri, 30 Mar 2012 05:25:04 +0000 (08:25 +0300)
lib/gitlabhq/gitolite.rb
lib/tasks/gitlab_enable_automerge.rake [new file with mode: 0644]

index 701b9a8..fabeb7d 100644 (file)
@@ -123,5 +123,34 @@ module Gitlabhq
 
       repo
     end
+
+    def admin_all_repo
+      ga_repo = ::Gitolite::GitoliteAdmin.new(File.join(@local_dir,'gitolite'))
+      conf = ga_repo.config
+      owner_name = ""
+
+      # Read gitolite-admin user
+      #
+      begin 
+        repo = conf.get_repo("gitolite-admin")
+        owner_name = repo.permissions[0]["RW+"][""][0]
+        raise StandardError if owner_name.blank?
+      rescue => ex
+        puts "Cant determine gitolite-admin owner".red
+        raise StandardError
+      end
+
+      # @ALL repos premission for gitolite owner
+      repo_name = "@all"
+      repo = if conf.has_repo?(repo_name)
+               conf.get_repo(repo_name)
+             else 
+               ::Gitolite::Config::Repo.new(repo_name)
+             end
+
+      repo.add_permission("RW+", "", owner_name)
+      conf.add_repo(repo, true)
+      ga_repo.save
+    end
   end
 end
diff --git a/lib/tasks/gitlab_enable_automerge.rake b/lib/tasks/gitlab_enable_automerge.rake
new file mode 100644 (file)
index 0000000..6ff5003
--- /dev/null
@@ -0,0 +1,9 @@
+desc "Give gitlab user full access to every repo"
+task :gitlab_enable_automerge => :environment  do
+
+  Gitlabhq::GitHost.system.new.configure do |git|
+    git.admin_all_repo
+  end
+
+  puts "Done!".green
+end