Commit 05e2c435 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Merge pull request #69 from thomasbiddle/support_adding_and_removing_branches_and_tags

Support adding and removing branches and tags
parents e049749a 66cfc50f
......@@ -26,6 +26,10 @@ class GitlabProjects
def exec
case @command
when 'create-branch'; create_branch
when 'rm-branch'; rm_branch
when 'create-tag'; create_tag
when 'rm-tag'; rm_tag
when 'add-project'; add_project
when 'rm-project'; rm_project
when 'mv-project'; mv_project
......@@ -41,6 +45,32 @@ class GitlabProjects
protected
def create_branch
branch_name = ARGV.shift
ref = ARGV.shift || "HEAD"
cmd = "cd #{full_path} && git branch #{branch_name} #{ref}"
system(cmd)
end
def rm_branch
branch_name = ARGV.shift
cmd = "cd #{full_path} && git branch -D #{branch_name}"
system(cmd)
end
def create_tag
tag_name = ARGV.shift
ref = ARGV.shift || "HEAD"
cmd = "cd #{full_path} && git tag #{tag_name} #{ref}"
system(cmd)
end
def rm_tag
tag_name = ARGV.shift
cmd = "cd #{full_path} && git tag -d #{tag_name}"
system(cmd)
end
def add_project
$logger.info "Adding project #{@project_name} at <#{full_path}>."
FileUtils.mkdir_p(full_path, mode: 0770)
......
......@@ -22,6 +22,74 @@ describe GitlabProjects do
it { @gl_projects.instance_variable_get(:@full_path).should == "#{GitlabConfig.new.repos_path}/gitlab-ci.git" }
end
describe :create_branch do
let(:gl_projects_create) {
build_gitlab_projects('import-project', repo_name, 'https://github.com/randx/six.git')
}
let(:gl_projects) { build_gitlab_projects('create-branch', repo_name, 'test_branch', 'master') }
it "should create a branch" do
gl_projects_create.exec
gl_projects.exec
branch_ref = `cd #{tmp_repo_path} && git rev-parse test_branch`.strip
master_ref = `cd #{tmp_repo_path} && git rev-parse master`.strip
branch_ref.should == master_ref
end
end
describe :rm_branch do
let(:gl_projects_create) {
build_gitlab_projects('import-project', repo_name, 'https://github.com/randx/six.git')
}
let(:gl_projects_create_branch) {
build_gitlab_projects('create-branch', repo_name, 'test_branch', 'master')
}
let(:gl_projects) { build_gitlab_projects('rm-branch', repo_name, 'test_branch') }
it "should remove a branch" do
gl_projects_create.exec
gl_projects_create_branch.exec
branch_ref = `cd #{tmp_repo_path} && git rev-parse test_branch`.strip
gl_projects.exec
branch_del = `cd #{tmp_repo_path} && git rev-parse test_branch`.strip
branch_del.should_not == branch_ref
end
end
describe :create_tag do
let(:gl_projects_create) {
build_gitlab_projects('import-project', repo_name, 'https://github.com/randx/six.git')
}
let(:gl_projects) { build_gitlab_projects('create-tag', repo_name, 'test_tag', 'master') }
it "should create a tag" do
gl_projects_create.exec
gl_projects.exec
tag_ref = `cd #{tmp_repo_path} && git rev-parse test_tag`.strip
master_ref = `cd #{tmp_repo_path} && git rev-parse master`.strip
tag_ref.should == master_ref
end
end
describe :rm_tag do
let(:gl_projects_create) {
build_gitlab_projects('import-project', repo_name, 'https://github.com/randx/six.git')
}
let(:gl_projects_create_tag) {
build_gitlab_projects('create-tag', repo_name, 'test_tag', 'master')
}
let(:gl_projects) { build_gitlab_projects('rm-tag', repo_name, 'test_tag') }
it "should remove a branch" do
gl_projects_create.exec
gl_projects_create_tag.exec
branch_ref = `cd #{tmp_repo_path} && git rev-parse test_tag`.strip
gl_projects.exec
branch_del = `cd #{tmp_repo_path} && git rev-parse test_tag`.strip
branch_del.should_not == branch_ref
end
end
describe :add_project do
let(:gl_projects) { build_gitlab_projects('add-project', repo_name) }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment