Commit c13be8c6 authored by Eloy Durán's avatar Eloy Durán

[Command] Setup shallow clones by default or use `--no-shallow`.

parent a57091f7
......@@ -15,14 +15,18 @@ module Pod
DESC
def self.options
[["--push", "Use this option to enable push access once granted"]].concat(super)
[
["--no-shallow", "Clone full history so push will work"],
["--push", "Use this option to enable push access once granted"],
].concat(super)
end
extend Executable
executable :git
def initialize(argv)
@push_option = argv.flag?('push')
@shallow = argv.flag?('shallow', true)
@push_option = argv.flag?('push')
super
end
......@@ -77,7 +81,11 @@ module Pod
# @return [void]
#
def add_master_repo
@command ||= Repo::Add.parse(['master', url, 'master']).run
@command ||= begin
cmd = ['master', url, 'master']
cmd << '--shallow' if @shallow
Repo::Add.parse(cmd).run
end
end
# Updates the master repo against the remote.
......
......@@ -39,6 +39,28 @@ module Pod
url.should == test_repo_path.to_s
end
it "creates a shallow clone of the `master` repo by default" do
Dir.chdir(test_repo_path) do
`echo 'touch' > touch && git add touch && git commit -m 'updated'`
end
# Need to use file:// to test local use of --depth=1
Command::Setup.any_instance.stubs(:read_only_url).returns("file://#{test_repo_path}")
run_command('setup')
Dir.chdir(config.repos_dir + 'master') do
`git log --pretty=oneline`.strip.split("\n").size.should == 1
end
end
it "creates a full clone of the `master` repo if requested" do
Dir.chdir(test_repo_path) do
`echo 'touch' > touch && git add touch && git commit -m 'updated'`
end
run_command('setup', '--no-shallow')
Dir.chdir(config.repos_dir + 'master') do
`git log --pretty=oneline`.strip.split("\n").size.should > 1
end
end
it "preserves push access for the `master` repo" do
output = run_command('setup')
output.should.not.include "push"
......
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