giternal 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
File without changes
@@ -70,6 +70,14 @@ version. If not, look at what it would take to take for my code and
70
70
  the library code to work. If I feel like I can do it, I do, otherwise
71
71
  I unfreeze and stay on the older working version.
72
72
 
73
+ = THANK YOUs
74
+
75
+ Rollcall of awesome people who have contributed to giternal:
76
+
77
+ Brian Takita & Honkster Team - ability to specify individual repos for
78
+ freeze/unfreeze/update
79
+
80
+
73
81
  == Copyright
74
82
 
75
- Copyright (c) 2009 Pat Maddox. See LICENSE for details.
83
+ Copyright (c) 2009-2011 Pat Maddox. See LICENSE for details.
data/Rakefile CHANGED
@@ -4,31 +4,23 @@ require 'rake'
4
4
  begin
5
5
  require 'jeweler'
6
6
  Jeweler::Tasks.new do |gem|
7
- gem.name = "giternal"
7
+ gem.name = "#{ENV["GEM_PREFIX"]}giternal"
8
8
  gem.summary = %Q{Non-sucky git externals}
9
9
  gem.description = %Q{Giternal provides dead-simple management of external git dependencies. It only stores a small bit of metadata, letting you actively develop in any of the repos. Come deploy time, you can easily freeze freeze all the dependencies to particular versions}
10
10
  gem.email = "pat.maddox@gmail.com"
11
- gem.homepage = "http://github.com/pat-maddox/giternal"
11
+ gem.homepage = "http://github.com/patmaddox/giternal"
12
12
  gem.authors = ["Pat Maddox"]
13
- gem.add_development_dependency "rspec"
14
- gem.add_development_dependency "cucumber"
13
+ gem.add_development_dependency "rspec", "~> 2"
14
+ gem.add_development_dependency "cucumber", "~> 1"
15
+ gem.post_install_message = "** IMPORTANT - Please see UPGRADING.rdoc for important changes **"
15
16
  # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
16
17
  end
17
18
  rescue LoadError
18
19
  puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
19
20
  end
20
21
 
21
- require 'spec/rake/spectask'
22
- Spec::Rake::SpecTask.new(:spec) do |spec|
23
- spec.libs << 'lib' << 'spec'
24
- spec.spec_files = FileList['spec/**/*_spec.rb']
25
- end
26
-
27
- Spec::Rake::SpecTask.new(:rcov) do |spec|
28
- spec.libs << 'lib' << 'spec'
29
- spec.pattern = 'spec/**/*_spec.rb'
30
- spec.rcov = true
31
- end
22
+ require 'rspec/core/rake_task'
23
+ RSpec::Core::RakeTask.new(:spec)
32
24
 
33
25
  task :spec => :check_dependencies
34
26
 
@@ -45,16 +37,15 @@ end
45
37
 
46
38
  task :default => [:spec, :features]
47
39
 
48
- require 'rake/rdoctask'
49
- Rake::RDocTask.new do |rdoc|
50
- if File.exist?('VERSION')
51
- version = File.read('VERSION')
52
- else
53
- version = ""
54
- end
55
-
56
- rdoc.rdoc_dir = 'rdoc'
57
- rdoc.title = "giternal #{version}"
58
- rdoc.rdoc_files.include('README*')
59
- rdoc.rdoc_files.include('lib/**/*.rb')
60
- end
40
+ #Rake::RDocTask.new do |rdoc|
41
+ # if File.exist?('VERSION')
42
+ # version = File.read('VERSION')
43
+ # else
44
+ # version = ""
45
+ # end
46
+ #
47
+ # rdoc.rdoc_dir = 'rdoc'
48
+ # rdoc.title = "giternal #{version}"
49
+ # rdoc.rdoc_files.include('README*')
50
+ # rdoc.rdoc_files.include('lib/**/*.rb')
51
+ #end
@@ -0,0 +1,17 @@
1
+ # Upgrading giternal
2
+
3
+ ## 0.1.0 -> *
4
+
5
+ 0.1.0 has a nasty bug that corrupts a checked out external's .git
6
+ repository. This happens because giternal sorts the files in .git before piping
7
+ them to tar, in order to minimize repo bloat. Unfortunately, tar doesn't seem to
8
+ like that, and so when unfreezing the repository it loses many of the files in
9
+ .git/objects. Instant repository corruption.
10
+
11
+ ### What you can do
12
+
13
+ The best thing to do is probably to wipe your external dir and do a giternal
14
+ update. This will check out a fresh copy of the dependency, along with its
15
+ uncorrupted git repo.
16
+
17
+ I don't actually think there's anything else you can do. Sorry :(
@@ -1,4 +1,5 @@
1
1
  ---
2
- :minor: 1
3
- :patch: 0
4
2
  :major: 0
3
+ :minor: 1
4
+ :patch: 1
5
+ :build:
@@ -9,9 +9,11 @@ action = ARGV[0]
9
9
  available_actions = %w(update freeze unfreeze)
10
10
  unless available_actions.include?(action)
11
11
  puts "Usage: giternal (#{available_actions.join(':')})"
12
+ puts ""
13
+ puts File.read(File.dirname(__FILE__) + '/../README.rdoc')
12
14
  exit 1
13
15
  end
14
16
 
15
17
  Giternal::Repository.verbose = true
16
18
  app = Giternal::App.new(FileUtils.pwd)
17
- app.run(action)
19
+ app.run(*ARGV)
@@ -22,4 +22,30 @@ Feature: Checking out and updating externals
22
22
  And content is added to 'first_external'
23
23
  Then 'first_external' should not be up to date
24
24
  When I update the externals
25
- Then 'first_external' should be up to date
25
+ Then 'first_external' should be up to date
26
+
27
+ Scenario: Two Repositories checked out and one updated
28
+ Given an external repository named 'first_external'
29
+ And an external repository named 'second_external'
30
+ And the externals are up to date
31
+ And content is added to 'first_external'
32
+ And content is added to 'second_external'
33
+ Then 'first_external' should not be up to date
34
+ And 'second_external' should not be up to date
35
+ When I update the external 'second_external'
36
+ Then 'first_external' should not be up to date
37
+ And 'second_external' should be up to date
38
+
39
+ Scenario: One repo frozen, one repo unfrozen, and all updated
40
+ Given an external repository named 'first_external'
41
+ And an external repository named 'second_external'
42
+ And the externals are up to date
43
+ And the externals are frozen
44
+ And content is added to 'first_external'
45
+ And content is added to 'second_external'
46
+ Then 'first_external' should not be up to date
47
+ And 'second_external' should not be up to date
48
+ When I unfreeze the external 'second_external'
49
+ And I update the externals
50
+ Then 'first_external' should not be up to date
51
+ And 'second_external' should be up to date
@@ -1,4 +1,4 @@
1
- Story: Freeze externals
1
+ Feature: Freeze externals
2
2
  As a developer
3
3
  I want to freeze externals
4
4
  So that I can test and deploy my app with no worries
@@ -17,3 +17,10 @@ Story: Freeze externals
17
17
  When I freeze the externals
18
18
  Then 'first_external' should be added to the commit index
19
19
 
20
+ Scenario: Main project has two externals
21
+ Given an external repository named 'first_external'
22
+ And an external repository named 'second_external'
23
+ And the externals are up to date
24
+ When I freeze the external 'second_external'
25
+ Then 'second_external' should be added to the commit index
26
+ And 'first_external' should be removed from the commit index
@@ -1,29 +1,30 @@
1
- require 'spec'
1
+ require 'rspec'
2
2
  $:.unshift(File.dirname(__FILE__) + '/../../lib')
3
3
  require 'giternal'
4
+ $:.unshift(File.dirname(__FILE__) + '/../../spec')
4
5
  require 'giternal_helper'
5
6
 
6
- def be_up_to_date
7
- Spec::Matchers::SimpleMatcher.new("a giternal'd repository") do |repo_name|
8
- File.directory?(GiternalHelper.checked_out_path(repo_name)).should == true
9
- GiternalHelper.repo_contents(GiternalHelper.checked_out_path(repo_name)) ==
10
- GiternalHelper.repo_contents(GiternalHelper.external_path(repo_name))
7
+ RSpec::Matchers.define :be_up_to_date do
8
+ match do |actual_repo_name|
9
+ File.directory?(GiternalHelper.checked_out_path(actual_repo_name)) &&
10
+ GiternalHelper.repo_contents(GiternalHelper.checked_out_path(actual_repo_name)) ==
11
+ GiternalHelper.repo_contents(GiternalHelper.external_path(actual_repo_name))
11
12
  end
12
13
  end
13
14
 
14
- def be_a_git_repo
15
- Spec::Matchers::SimpleMatcher.new("a giternal'd repository") do |repo_name|
16
- File.directory?(GiternalHelper.checked_out_path(repo_name) + '/.git')
15
+ RSpec::Matchers.define :be_a_git_repo do
16
+ match do |actual_repo_name|
17
+ File.directory?(GiternalHelper.checked_out_path(actual_repo_name) + '/.git')
17
18
  end
18
19
  end
19
20
 
20
- def be_added_to_commit_index
21
- Spec::Matchers::SimpleMatcher.new("a giternal'd repository") do |repo_name|
21
+ RSpec::Matchers.define :be_added_to_commit_index do
22
+ match do |actual_repo_name|
22
23
  Dir.chdir(GiternalHelper.tmp_path + '/main_repo') do
23
24
  status = `git status`
24
25
  flattened_status = status.split("\n").join(" ")
25
- to_be_committed_regex = /new file:\W+dependencies\/#{repo_name}/
26
- untracked_files_regex = /Untracked files:.*#{repo_name}/
26
+ to_be_committed_regex = /new file:\W+dependencies\/#{actual_repo_name}/
27
+ untracked_files_regex = /Untracked files:.*#{actual_repo_name}/
27
28
  status =~ to_be_committed_regex && !(flattened_status =~ untracked_files_regex)
28
29
  end
29
30
  end
@@ -68,14 +69,26 @@ When "I update the externals" do
68
69
  GiternalHelper.update_externals
69
70
  end
70
71
 
72
+ When /I update the external '(.*)'/ do |external_name|
73
+ GiternalHelper.update_externals("dependencies/#{external_name}")
74
+ end
75
+
71
76
  When "I freeze the externals" do
72
77
  GiternalHelper.freeze_externals
73
78
  end
74
79
 
80
+ When /I freeze the external '(.*)'/ do |external_name|
81
+ GiternalHelper.freeze_externals("dependencies/#{external_name}")
82
+ end
83
+
75
84
  When "I unfreeze the externals" do
76
85
  GiternalHelper.unfreeze_externals
77
86
  end
78
87
 
88
+ When /I unfreeze the external '(.*)'/ do |external_name|
89
+ GiternalHelper.unfreeze_externals("dependencies/#{external_name}")
90
+ end
91
+
79
92
  Then /'(.*)' should be checked out/ do |repo_name|
80
93
  repo_name.should be_up_to_date
81
94
  end
@@ -1,4 +1,4 @@
1
- Story: Unfreeze externals
1
+ Feature: Unfreeze externals
2
2
  As a developer
3
3
  I want to unfreeze externals
4
4
  So that I can continue to update and develop on them
@@ -9,4 +9,15 @@ Story: Unfreeze externals
9
9
  And the externals are frozen
10
10
  When I unfreeze the externals
11
11
  Then 'first_external' should be a git repo
12
- And 'first_external' should be removed from the commit index
12
+ And 'first_external' should be removed from the commit index
13
+
14
+ Scenario: Main project has two frozen externals
15
+ Given an external repository named 'first_external'
16
+ And an external repository named 'second_external'
17
+ And the externals are up to date
18
+ And the externals are frozen
19
+ When I unfreeze the external 'second_external'
20
+ Then 'second_external' should be a git repo
21
+ And 'second_external' should be removed from the commit index
22
+ And 'first_external' should no longer be a git repo
23
+ And 'first_external' should be added to the commit index
@@ -1,74 +1,67 @@
1
1
  # Generated by jeweler
2
- # DO NOT EDIT THIS FILE
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{giternal}
8
- s.version = "0.1.0"
8
+ s.version = "0.1.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Pat Maddox"]
12
- s.date = %q{2009-10-10}
13
- s.default_executable = %q{giternal}
12
+ s.date = %q{2011-06-24}
14
13
  s.description = %q{Giternal provides dead-simple management of external git dependencies. It only stores a small bit of metadata, letting you actively develop in any of the repos. Come deploy time, you can easily freeze freeze all the dependencies to particular versions}
15
14
  s.email = %q{pat.maddox@gmail.com}
16
15
  s.executables = ["giternal"]
17
16
  s.extra_rdoc_files = [
18
17
  "LICENSE",
19
- "README.rdoc"
18
+ "README.rdoc"
20
19
  ]
21
20
  s.files = [
22
21
  ".emacs-project",
23
- ".gitignore",
24
- "LICENSE",
25
- "README.rdoc",
26
- "Rakefile",
27
- "VERSION.yml",
28
- "bin/giternal",
29
- "features/checking_out_externals.feature",
30
- "features/freeze_externals.feature",
31
- "features/steps/repository_steps.rb",
32
- "features/unfreeze_externals.feature",
33
- "giternal.gemspec",
34
- "giternal_helper.rb",
35
- "lib/giternal.rb",
36
- "lib/giternal/app.rb",
37
- "lib/giternal/repository.rb",
38
- "lib/giternal/version.rb",
39
- "lib/giternal/yaml_config.rb",
40
- "spec/giternal/app_spec.rb",
41
- "spec/giternal/repository_spec.rb",
42
- "spec/giternal/yaml_config_spec.rb",
43
- "spec/spec.opts",
44
- "spec/spec_helper.rb",
45
- "test_trackers.rb"
22
+ ".rspec",
23
+ "LICENSE",
24
+ "README.rdoc",
25
+ "Rakefile",
26
+ "UPGRADING.rdoc",
27
+ "VERSION.yml",
28
+ "bin/giternal",
29
+ "features/checking_out_externals.feature",
30
+ "features/freeze_externals.feature",
31
+ "features/steps/repository_steps.rb",
32
+ "features/unfreeze_externals.feature",
33
+ "giternal.gemspec",
34
+ "lib/giternal.rb",
35
+ "lib/giternal/app.rb",
36
+ "lib/giternal/repository.rb",
37
+ "lib/giternal/version.rb",
38
+ "lib/giternal/yaml_config.rb",
39
+ "spec/giternal/app_spec.rb",
40
+ "spec/giternal/repository_spec.rb",
41
+ "spec/giternal/yaml_config_spec.rb",
42
+ "spec/giternal_helper.rb",
43
+ "spec/spec_helper.rb",
44
+ "test_trackers.rb"
46
45
  ]
47
- s.homepage = %q{http://github.com/pat-maddox/giternal}
48
- s.rdoc_options = ["--charset=UTF-8"]
46
+ s.homepage = %q{http://github.com/patmaddox/giternal}
47
+ s.post_install_message = %q{** IMPORTANT - Please see UPGRADING.rdoc for important changes **}
49
48
  s.require_paths = ["lib"]
50
- s.rubygems_version = %q{1.3.5}
49
+ s.rubygems_version = %q{1.7.2}
51
50
  s.summary = %q{Non-sucky git externals}
52
- s.test_files = [
53
- "spec/giternal/app_spec.rb",
54
- "spec/giternal/repository_spec.rb",
55
- "spec/giternal/yaml_config_spec.rb",
56
- "spec/spec_helper.rb"
57
- ]
58
51
 
59
52
  if s.respond_to? :specification_version then
60
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
61
53
  s.specification_version = 3
62
54
 
63
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
64
- s.add_development_dependency(%q<rspec>, [">= 0"])
65
- s.add_development_dependency(%q<cucumber>, [">= 0"])
55
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
56
+ s.add_development_dependency(%q<rspec>, ["~> 2"])
57
+ s.add_development_dependency(%q<cucumber>, ["~> 1"])
66
58
  else
67
- s.add_dependency(%q<rspec>, [">= 0"])
68
- s.add_dependency(%q<cucumber>, [">= 0"])
59
+ s.add_dependency(%q<rspec>, ["~> 2"])
60
+ s.add_dependency(%q<cucumber>, ["~> 1"])
69
61
  end
70
62
  else
71
- s.add_dependency(%q<rspec>, [">= 0"])
72
- s.add_dependency(%q<cucumber>, [">= 0"])
63
+ s.add_dependency(%q<rspec>, ["~> 2"])
64
+ s.add_dependency(%q<cucumber>, ["~> 1"])
73
65
  end
74
66
  end
67
+
@@ -4,26 +4,50 @@ module Giternal
4
4
  @base_dir = base_dir
5
5
  end
6
6
 
7
- def update
8
- config.each_repo {|r| r.update }
7
+ def update(*dirs)
8
+ if dirs.empty?
9
+ config.each_repo {|r| r.update }
10
+ else
11
+ dirs.each do |dir|
12
+ if repo = config.find_repo(dir)
13
+ repo.update
14
+ end
15
+ end
16
+ end
9
17
  end
10
18
 
11
- def freezify
12
- config.each_repo {|r| r.freezify }
19
+ def freezify(*dirs)
20
+ if dirs.empty?
21
+ config.each_repo {|r| r.freezify }
22
+ else
23
+ dirs.each do |dir|
24
+ if repo = config.find_repo(dir)
25
+ repo.freezify
26
+ end
27
+ end
28
+ end
13
29
  end
14
30
 
15
- def unfreezify
16
- config.each_repo {|r| r.unfreezify }
31
+ def unfreezify(*dirs)
32
+ if dirs.empty?
33
+ config.each_repo {|r| r.unfreezify }
34
+ else
35
+ dirs.each do |dir|
36
+ if repo = config.find_repo(dir)
37
+ repo.unfreezify
38
+ end
39
+ end
40
+ end
17
41
  end
18
42
 
19
- def run(action)
43
+ def run(action, *args)
20
44
  case action
21
45
  when "freeze"
22
- freezify
46
+ freezify(*args)
23
47
  when "unfreeze"
24
- unfreezify
48
+ unfreezify(*args)
25
49
  else
26
- send(action)
50
+ send(action, *args)
27
51
  end
28
52
  end
29
53
 
@@ -24,7 +24,7 @@ module Giternal
24
24
  if !File.exist?(repo_path + '/.git')
25
25
  raise "Directory '#{@name}' exists but is not a git repository"
26
26
  else
27
- update_output { `cd #{repo_path} && git pull 2>&1` }
27
+ update_output { `cd #{repo_path} && git pull 2>&1` }
28
28
  end
29
29
  else
30
30
  update_output { `cd #{checkout_path} && git clone #{@repo_url} #{@name}` }
@@ -37,7 +37,7 @@ module Giternal
37
37
 
38
38
  Dir.chdir(repo_path) do
39
39
  `tar czf .git.frozen.tgz .git`
40
- FileUtils.rm_r('.git')
40
+ FileUtils.rm_r('.git')
41
41
  end
42
42
  `cd #{@base_dir} && git add -f #{rel_repo_path}`
43
43
  true
@@ -75,18 +75,26 @@ module Giternal
75
75
  @rel_path + '/' + @name
76
76
  end
77
77
 
78
- def update_output(&block)
79
- puts "Updating #{@name}" if verbose
80
- block.call
81
- puts " ..updated\n" if verbose
82
- end
83
-
84
- def git_ignore_self
85
- Dir.chdir(@base_dir) do
86
- unless File.exist?('.gitignore') && File.read('.gitignore').include?(rel_repo_path)
87
- `echo '#{rel_repo_path}' >> .gitignore`
88
- end
89
- end
90
- end
78
+ def update_output(&block)
79
+ puts "Updating #{@name}" if verbose
80
+ block.call
81
+ puts " ..updated\n" if verbose
82
+ end
83
+
84
+ def git_ignore_self
85
+ Dir.chdir(@base_dir) do
86
+ contents = File.read('.gitignore') if File.exist?('.gitignore')
87
+
88
+ unless contents.to_s.include?(rel_repo_path)
89
+ File.open('.gitignore', 'w') do |file|
90
+ if contents
91
+ file << contents
92
+ file << "\n" unless contents[-1] == 10 # ascii code for \n
93
+ end
94
+ file << rel_repo_path << "\n"
95
+ end
96
+ end
97
+ end
98
+ end
91
99
  end
92
100
  end
@@ -11,6 +11,15 @@ module Giternal
11
11
  repositories.each { |r| yield(r) if block_given? }
12
12
  end
13
13
 
14
+ def find_repo(path)
15
+ @config_hash.each do |name, attributes|
16
+ if path == File.join(attributes["path"], name)
17
+ return Repository.new(@base_dir, name, attributes["repo"], attributes["path"])
18
+ end
19
+ end
20
+ return nil
21
+ end
22
+
14
23
  private
15
24
  def repositories
16
25
  @config_hash.map do |name, attributes|
@@ -4,7 +4,7 @@ module Giternal
4
4
  describe App do
5
5
  before(:each) do
6
6
  @app = App.new("some_fake_dir")
7
- @mock_config = stub("config", :null_object => true)
7
+ @mock_config = stub("config").as_null_object
8
8
  end
9
9
 
10
10
  describe "loading the config file" do
@@ -22,15 +22,31 @@ module Giternal
22
22
  Dir.chdir(GiternalHelper.base_project_dir) do
23
23
  # TODO: What I really want is to say it shouldn't include 'foo'
24
24
  `git status`.should_not include('dependencies')
25
+ File.read('.gitignore').should == "dependencies/foo\n"
25
26
  end
26
27
  end
27
28
 
28
29
  it "should only add itself to .gitignore if it's not already there" do
29
- 2.times { @repository.update }
30
30
  Dir.chdir(GiternalHelper.base_project_dir) do
31
- File.read('.gitignore').scan(/foo/).should have(1).item
32
- # TODO: What I really want is to say it shouldn't include 'foo'
33
- `git status`.should_not include('dependencies')
31
+ File.open('.gitignore', 'w') {|f| f << "dependencies/foo\n" }
32
+ end
33
+
34
+ @repository.update
35
+
36
+ Dir.chdir(GiternalHelper.base_project_dir) do
37
+ File.read('.gitignore').should == "dependencies/foo\n"
38
+ end
39
+ end
40
+
41
+ it "adds a newline if it needs to" do
42
+ Dir.chdir(GiternalHelper.base_project_dir) do
43
+ File.open('.gitignore', 'w') {|f| f << "something/else" }
44
+ end
45
+
46
+ @repository.update
47
+
48
+ Dir.chdir(GiternalHelper.base_project_dir) do
49
+ File.read('.gitignore').should == "something/else\ndependencies/foo\n"
34
50
  end
35
51
  end
36
52
 
@@ -116,18 +132,26 @@ module Giternal
116
132
  GiternalHelper.external_path('external'),
117
133
  'dependencies')
118
134
  @repository.update
119
- @repository.freezify
120
135
  end
121
136
 
122
137
  it "should unarchive the .git dir" do
138
+ @repository.freezify
123
139
  @repository.unfreezify
124
140
  File.directory?(GiternalHelper.checked_out_path('external/.git')).should be_true
125
141
  end
126
142
 
127
143
  it "should remove the archived file" do
144
+ @repository.freezify
128
145
  @repository.unfreezify
129
146
  File.file?(GiternalHelper.checked_out_path('external/.git.frozen.tgz')).should be_false
130
147
  end
148
+
149
+ it "leaves the .git directory exactly how it found it" do
150
+ expect {
151
+ @repository.freezify
152
+ @repository.unfreezify
153
+ }.to_not change { Dir[GiternalHelper.checked_out_path('external/.git/**/**')] }
154
+ end
131
155
  end
132
156
  end
133
157
  end
@@ -1,5 +1,5 @@
1
1
  class GiternalHelper
2
- @@giternal_base ||= File.expand_path(File.dirname(__FILE__))
2
+ @@giternal_base ||= File.expand_path(File.dirname(__FILE__) + '/..')
3
3
 
4
4
  def self.create_main_repo
5
5
  FileUtils.mkdir_p tmp_path
@@ -69,21 +69,21 @@ class GiternalHelper
69
69
  %w(GIT_DIR GIT_WORK_TREE GIT_INDEX_FILE).each {|var| ENV[var] = nil }
70
70
  end
71
71
 
72
- def self.update_externals
72
+ def self.update_externals(*args)
73
73
  Dir.chdir(tmp_path + '/main_repo') do
74
- GiternalHelper.run('update')
74
+ GiternalHelper.run('update', *args)
75
75
  end
76
76
  end
77
77
 
78
- def self.freeze_externals
78
+ def self.freeze_externals(*args)
79
79
  Dir.chdir(tmp_path + '/main_repo') do
80
- GiternalHelper.run('freeze')
80
+ GiternalHelper.run("freeze", *args)
81
81
  end
82
82
  end
83
83
 
84
- def self.unfreeze_externals
84
+ def self.unfreeze_externals(*args)
85
85
  Dir.chdir(tmp_path + '/main_repo') do
86
- GiternalHelper.run('unfreeze')
86
+ GiternalHelper.run("unfreeze", *args)
87
87
  end
88
88
  end
89
89
 
@@ -1,8 +1,8 @@
1
1
  begin
2
- require 'spec'
2
+ require 'rspec'
3
3
  rescue LoadError
4
4
  require 'rubygems'
5
- require 'spec'
5
+ require 'rspec'
6
6
  end
7
7
 
8
8
  $:.unshift(File.dirname(__FILE__) + '/../lib')
@@ -10,10 +10,7 @@ require 'giternal'
10
10
  require 'fileutils'
11
11
  require 'giternal_helper'
12
12
 
13
- Spec::Runner.configuration.before(:each) do
14
- GiternalHelper.clean!
15
- end
16
-
17
- Spec::Runner.configuration.after(:each) do
18
- GiternalHelper.clean!
13
+ RSpec.configure do |config|
14
+ config.before { GiternalHelper.clean! }
15
+ config.after { GiternalHelper.clean! }
19
16
  end
metadata CHANGED
@@ -1,7 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: giternal
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ prerelease:
5
+ version: 0.1.1
5
6
  platform: ruby
6
7
  authors:
7
8
  - Pat Maddox
@@ -9,29 +10,30 @@ autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
12
 
12
- date: 2009-10-10 00:00:00 -07:00
13
- default_executable: giternal
13
+ date: 2011-06-24 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rspec
17
- type: :development
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
17
+ prerelease: false
18
+ requirement: &id001 !ruby/object:Gem::Requirement
19
+ none: false
20
20
  requirements:
21
- - - ">="
21
+ - - ~>
22
22
  - !ruby/object:Gem::Version
23
- version: "0"
24
- version:
23
+ version: "2"
24
+ type: :development
25
+ version_requirements: *id001
25
26
  - !ruby/object:Gem::Dependency
26
27
  name: cucumber
27
- type: :development
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
28
+ prerelease: false
29
+ requirement: &id002 !ruby/object:Gem::Requirement
30
+ none: false
30
31
  requirements:
31
- - - ">="
32
+ - - ~>
32
33
  - !ruby/object:Gem::Version
33
- version: "0"
34
- version:
34
+ version: "1"
35
+ type: :development
36
+ version_requirements: *id002
35
37
  description: Giternal provides dead-simple management of external git dependencies. It only stores a small bit of metadata, letting you actively develop in any of the repos. Come deploy time, you can easily freeze freeze all the dependencies to particular versions
36
38
  email: pat.maddox@gmail.com
37
39
  executables:
@@ -43,10 +45,11 @@ extra_rdoc_files:
43
45
  - README.rdoc
44
46
  files:
45
47
  - .emacs-project
46
- - .gitignore
48
+ - .rspec
47
49
  - LICENSE
48
50
  - README.rdoc
49
51
  - Rakefile
52
+ - UPGRADING.rdoc
50
53
  - VERSION.yml
51
54
  - bin/giternal
52
55
  - features/checking_out_externals.feature
@@ -54,7 +57,6 @@ files:
54
57
  - features/steps/repository_steps.rb
55
58
  - features/unfreeze_externals.feature
56
59
  - giternal.gemspec
57
- - giternal_helper.rb
58
60
  - lib/giternal.rb
59
61
  - lib/giternal/app.rb
60
62
  - lib/giternal/repository.rb
@@ -63,39 +65,35 @@ files:
63
65
  - spec/giternal/app_spec.rb
64
66
  - spec/giternal/repository_spec.rb
65
67
  - spec/giternal/yaml_config_spec.rb
66
- - spec/spec.opts
68
+ - spec/giternal_helper.rb
67
69
  - spec/spec_helper.rb
68
70
  - test_trackers.rb
69
- has_rdoc: true
70
- homepage: http://github.com/pat-maddox/giternal
71
+ homepage: http://github.com/patmaddox/giternal
71
72
  licenses: []
72
73
 
73
- post_install_message:
74
- rdoc_options:
75
- - --charset=UTF-8
74
+ post_install_message: "** IMPORTANT - Please see UPGRADING.rdoc for important changes **"
75
+ rdoc_options: []
76
+
76
77
  require_paths:
77
78
  - lib
78
79
  required_ruby_version: !ruby/object:Gem::Requirement
80
+ none: false
79
81
  requirements:
80
82
  - - ">="
81
83
  - !ruby/object:Gem::Version
82
84
  version: "0"
83
- version:
84
85
  required_rubygems_version: !ruby/object:Gem::Requirement
86
+ none: false
85
87
  requirements:
86
88
  - - ">="
87
89
  - !ruby/object:Gem::Version
88
90
  version: "0"
89
- version:
90
91
  requirements: []
91
92
 
92
93
  rubyforge_project:
93
- rubygems_version: 1.3.5
94
+ rubygems_version: 1.7.2
94
95
  signing_key:
95
96
  specification_version: 3
96
97
  summary: Non-sucky git externals
97
- test_files:
98
- - spec/giternal/app_spec.rb
99
- - spec/giternal/repository_spec.rb
100
- - spec/giternal/yaml_config_spec.rb
101
- - spec/spec_helper.rb
98
+ test_files: []
99
+
data/.gitignore DELETED
@@ -1,4 +0,0 @@
1
- spec/test_repos
2
- pkg
3
- features/tmp
4
- test_repos