From e6c44954655c89ba1d2a653055377e63b7f5a98d Mon Sep 17 00:00:00 2001 From: Eugen Kuksa Date: Sun, 14 Aug 2016 17:43:20 +0200 Subject: [PATCH] Set group write permissions on repository create (#1797) * Set group write permissions on repository create. * Set the group permissions for cloned repositories as well. * Return the result of the pulling method. * Forbid naming a repository 'new'. --- app/models/repository/validations.rb | 2 +- lib/git_repository.rb | 5 +++++ lib/git_repository/cloning.rb | 8 ++++++-- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/app/models/repository/validations.rb b/app/models/repository/validations.rb index cb87cee76..3e21c42ac 100644 --- a/app/models/repository/validations.rb +++ b/app/models/repository/validations.rb @@ -74,7 +74,7 @@ def self.non_present_to_nil(route_part) # It is against our code style conventions to place a constant here, # but it is necessary to have all the inherent methods defined above of it. - RESERVED_NAMES = toplevel_namespaces + RESERVED_NAMES = toplevel_namespaces + ['new'] end class NameNotChangedAfterSetValidator < ActiveModel::Validator diff --git a/lib/git_repository.rb b/lib/git_repository.rb index 412f5e57f..c4ec9dc4a 100644 --- a/lib/git_repository.rb +++ b/lib/git_repository.rb @@ -24,9 +24,14 @@ def initialize(path) else FileUtils.mkdir_p(Ontohub::Application.config.git_root) @repo = Rugged::Repository.init_at(path, true) + set_group_permissions end end + def set_group_permissions + FileUtils.chmod_R('g+ws', path) + end + def destroy FileUtils.rmtree(self.path) end diff --git a/lib/git_repository/cloning.rb b/lib/git_repository/cloning.rb index 351c4b9ca..486edb362 100644 --- a/lib/git_repository/cloning.rb +++ b/lib/git_repository/cloning.rb @@ -12,7 +12,9 @@ def clone(url) fetch: '+refs/*:refs/*', mirror: 'true' - pull + result = pull + set_group_permissions + result end def clone_svn(url) @@ -30,7 +32,9 @@ def clone_svn(url) end set_section %w(svn-remote svn), options - pull_svn + result = pull_svn + set_group_permissions + result end def pull