summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStan Hu <stanhu@gmail.com>2018-01-09 01:26:26 -0800
committerStan Hu <stanhu@gmail.com>2018-01-09 01:29:03 -0800
commitf400c4f56008813f54f756bd19d007adfe8ef827 (patch)
tree4185c692599ec8e27a46c460f96784e344fdf869
parentf8f314890758983e9d167529cb3a332a01262d5c (diff)
downloadgitlab-shell-sh-add-hooks-command.tar.gz
Add a create-hooks command for import Rake tasksh-add-hooks-command
With the introduction of hashed storage, the import Rake task needs to be able to copy a repo and then initialize the hooks as a separate step from creating the project directory. Relates to gitlab-org/gitlab-ce#41739 and https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/16280
-rw-r--r--CHANGELOG3
-rw-r--r--lib/gitlab_projects.rb7
-rw-r--r--spec/gitlab_projects_spec.rb15
3 files changed, 25 insertions, 0 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 320dcba..da8ba6e 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+v5.11.1
+ - Add a 'create-hooks' command to gitlab-projects
+
v5.11.0
- Introduce a more-complete implementation of bin/authorized_keys (!178)
diff --git a/lib/gitlab_projects.rb b/lib/gitlab_projects.rb
index 6700735..7da97ae 100644
--- a/lib/gitlab_projects.rb
+++ b/lib/gitlab_projects.rb
@@ -57,6 +57,9 @@ class GitlabProjects
create_tag
when 'add-project';
add_project
+ when 'create-hooks';
+ # To avoid confusion with self.class.create_hooks
+ create_project_hooks
when 'list-projects';
puts list_projects
when 'rm-project';
@@ -182,6 +185,10 @@ class GitlabProjects
system(*cmd) && self.class.create_hooks(full_path)
end
+ def create_project_hooks
+ self.class.create_hooks(full_path)
+ end
+
def list_projects
$logger.info 'Listing projects'
Dir.chdir(repos_path) do
diff --git a/spec/gitlab_projects_spec.rb b/spec/gitlab_projects_spec.rb
index 7cf408b..7eb0593 100644
--- a/spec/gitlab_projects_spec.rb
+++ b/spec/gitlab_projects_spec.rb
@@ -55,6 +55,21 @@ describe GitlabProjects do
it { File.readlink(hooks_dir).should == target_hooks_dir }
end
+
+ context 'with command-line arguments' do
+ before do
+ FileUtils.mkdir_p repo_path
+ argv('create-hooks', tmp_repos_path, 'hook-test.git')
+ gl_projects = GitlabProjects.new
+ gl_projects.exec
+ end
+
+ after do
+ FileUtils.rm_f(repo_path)
+ end
+
+ it { File.readlink(hooks_dir).should == target_hooks_dir }
+ end
end
describe :initialize do