realityforge-braid 0.8.0 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 1.8.7-p371
1
+ 1.9.3-p362
data/.travis.yml ADDED
@@ -0,0 +1,16 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ - jruby-18mode
5
+ - jruby-19mode
6
+ - jruby-head
7
+ jdk:
8
+ - openjdk6
9
+ - openjdk7
10
+ - oraclejdk7
11
+ matrix:
12
+ exclude:
13
+ - rvm: 1.9.3
14
+ jdk: openjdk7
15
+ - rvm: 1.9.2
16
+ jdk: oraclejdk7
data/README.md CHANGED
@@ -1,8 +1,10 @@
1
1
  # Braid
2
2
 
3
+ [![Build Status](https://secure.travis-ci.org/realityforge/braid.png?branch=master)](http://travis-ci.org/realityforge/braid)
4
+
3
5
  Braid is a simple tool to help track git vendor branches in a git repository.
4
6
 
5
- The project homepage is [here](http://github.com/evilchelu/braid/wikis/home).
7
+ The project homepage is [here](http://github.com/realityforge/braid/wikis/home).
6
8
 
7
9
  ## Requirements
8
10
 
data/Rakefile CHANGED
@@ -7,3 +7,6 @@ desc 'Run all specs'
7
7
  RSpec::Core::RakeTask.new :spec do |task|
8
8
  task.rspec_opts = %w{--backtrace}
9
9
  end
10
+
11
+ desc "Test and package the gem"
12
+ task :default => [:spec, :build]
data/lib/braid/command.rb CHANGED
@@ -31,7 +31,7 @@ module Braid
31
31
  end
32
32
 
33
33
  def config
34
- @config ||= load_and_migrate_config
34
+ @config ||= Config.new
35
35
  end
36
36
 
37
37
  def verbose?
@@ -72,17 +72,6 @@ module Braid
72
72
  end
73
73
  end
74
74
 
75
- def load_and_migrate_config
76
- config = Config.new
77
- unless config.valid?
78
- msg "Configuration is outdated. Migrating."
79
- bail_on_local_changes!
80
- config.migrate!
81
- git.commit("Upgrade .braids", "-- .braids")
82
- end
83
- config
84
- end
85
-
86
75
  def add_config_file
87
76
  git.add(CONFIG_FILE)
88
77
  end
data/lib/braid/config.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'yaml'
2
+ require 'json'
2
3
  require 'yaml/store'
3
4
 
4
5
  module Braid
@@ -15,7 +16,18 @@ module Braid
15
16
  end
16
17
 
17
18
  def initialize(config_file = CONFIG_FILE)
18
- @db = YAML::Store.new(config_file)
19
+ @config_file = config_file
20
+ begin
21
+ store = YAML::Store.new(@config_file)
22
+ @db = {}
23
+ store.transaction(true) do
24
+ store.roots.each do |path|
25
+ @db[path] = store[path]
26
+ end
27
+ end
28
+ rescue
29
+ @db = JSON.parse(@config_file)
30
+ end
19
31
  end
20
32
 
21
33
  def add_from_options(url, options)
@@ -26,17 +38,13 @@ module Braid
26
38
  end
27
39
 
28
40
  def mirrors
29
- @db.transaction(true) do
30
- @db.roots
31
- end
41
+ @db.keys
32
42
  end
33
43
 
34
44
  def get(path)
35
- @db.transaction(true) do
36
- if attributes = @db[path.to_s.sub(/\/$/, '')]
37
- Mirror.new(path, attributes)
38
- end
39
- end
45
+ key = path.to_s.sub(/\/$/, '')
46
+ attributes = @db[key]
47
+ return attributes ? Mirror.new(path, attributes) : nil
40
48
  end
41
49
 
42
50
  def get!(path)
@@ -46,50 +54,28 @@ module Braid
46
54
  end
47
55
 
48
56
  def add(mirror)
49
- @db.transaction do
50
- raise PathAlreadyInUse, mirror.path if @db[mirror.path]
51
- write_mirror(mirror)
52
- end
57
+ raise PathAlreadyInUse, mirror.path if get(mirror.path)
58
+ write_mirror(mirror)
53
59
  end
54
60
 
55
61
  def remove(mirror)
56
- @db.transaction do
57
- @db.delete(mirror.path)
58
- end
62
+ @db.delete(mirror.path)
59
63
  end
60
64
 
61
65
  def update(mirror)
62
- @db.transaction do
63
- raise MirrorDoesNotExist, mirror.path unless @db[mirror.path]
64
- @db.delete(mirror.path)
65
- write_mirror(mirror)
66
- end
67
- end
68
-
69
- def valid?
70
- @db.transaction(true) do
71
- !@db.roots.any? {|path| @db[path]["url"].nil?}
72
- end
73
- end
74
-
75
- def migrate!
76
- @db.transaction do
77
- @db.roots.each do |path|
78
- attributes = @db[path]
79
- if attributes["local_branch"]
80
- attributes["url"] = attributes.delete("remote")
81
- attributes["remote"] = attributes.delete("local_branch")
82
- attributes["squashed"] = attributes.delete("squash")
83
- attributes["lock"] = attributes["revision"] # so far this has always been true
84
- end
85
- @db[path] = clean_attributes(attributes)
86
- end
87
- end
66
+ raise MirrorDoesNotExist, mirror.path unless get(mirror.path)
67
+ @db.delete(mirror.path)
68
+ write_mirror(mirror)
88
69
  end
89
70
 
90
71
  private
91
72
  def write_mirror(mirror)
92
73
  @db[mirror.path] = clean_attributes(mirror.attributes)
74
+ new_db = {}
75
+ @db.keys.sort.each do |key|
76
+ new_db[key] = @db[key]
77
+ end
78
+ File.open(@config_file, "wb") { |f| f.write JSON.pretty_generate(new_db) }
93
79
  end
94
80
 
95
81
  def clean_attributes(hash)
data/lib/braid/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Braid
2
- VERSION = "0.8.0"
2
+ VERSION = "0.9.0"
3
3
  end
@@ -18,11 +18,10 @@ def in_dir(dir = TMP_PATH)
18
18
  yield
19
19
  end
20
20
 
21
- def run_cmds(ary)
22
- ary.each do |cmd|
23
- cmd = cmd.strip!
24
- out = `#{cmd}`
25
- end
21
+ def run_command(command)
22
+ output = `#{command}`
23
+ raise "Error executing command: #{command}\nOutput: #{output}" unless $?.success?
24
+ output
26
25
  end
27
26
 
28
27
  def update_dir_from_fixture(dir, fixture = dir)
@@ -36,11 +35,9 @@ def create_git_repo_from_fixture(fixture_name)
36
35
  update_dir_from_fixture(fixture_name)
37
36
 
38
37
  in_dir(git_repo) do
39
- run_cmds(<<-EOD)
40
- git init
41
- git add *
42
- git commit -m "initial commit of #{fixture_name}"
43
- EOD
38
+ run_command('git init')
39
+ run_command('git add *')
40
+ run_command("git commit -m \"initial commit of #{fixture_name}\"")
44
41
  end
45
42
 
46
43
  git_repo
@@ -3,7 +3,7 @@ require File.dirname(__FILE__) + '/test_helper'
3
3
  describe "Braid::Operations::Git#remote_url" do
4
4
  it "should use git config" do
5
5
  # FIXME weak test
6
- git.expects(:invoke).with(:config, 'remote.braid/git/one.url').returns("git://path")
6
+ git.stubs(:invoke).with(:config, 'remote.braid/git/one.url').returns("git://path")
7
7
  git.remote_url("braid/git/one").should == "git://path"
8
8
  end
9
9
  end
data/spec/test_helper.rb CHANGED
@@ -13,3 +13,7 @@ def build_mirror(options = {})
13
13
  end
14
14
 
15
15
  include Braid::Operations::VersionControl
16
+
17
+ RSpec.configure do |config|
18
+ config.mock_with :mocha
19
+ end
metadata CHANGED
@@ -1,99 +1,91 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: realityforge-braid
3
- version: !ruby/object:Gem::Version
4
- hash: 63
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.0
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 8
9
- - 0
10
- version: 0.8.0
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Cristi Balan
14
9
  - Norbert Crombach
15
10
  autorequire:
16
11
  bindir: bin
17
12
  cert_chain: []
18
-
19
- date: 2013-02-11 00:00:00 +11:00
20
- default_executable: braid
21
- dependencies:
22
- - !ruby/object:Gem::Dependency
13
+ date: 2013-03-13 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
23
16
  name: main
24
- prerelease: false
25
- requirement: &id001 !ruby/object:Gem::Requirement
17
+ requirement: !ruby/object:Gem::Requirement
26
18
  none: false
27
- requirements:
28
- - - ">="
29
- - !ruby/object:Gem::Version
30
- hash: 37
31
- segments:
32
- - 4
33
- - 7
34
- - 3
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
35
22
  version: 4.7.3
36
23
  type: :runtime
37
- version_requirements: *id001
38
- - !ruby/object:Gem::Dependency
39
- name: open4
40
24
  prerelease: false
41
- requirement: &id002 !ruby/object:Gem::Requirement
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ! '>='
29
+ - !ruby/object:Gem::Version
30
+ version: 4.7.3
31
+ - !ruby/object:Gem::Dependency
32
+ name: open4
33
+ requirement: !ruby/object:Gem::Requirement
42
34
  none: false
43
- requirements:
44
- - - ">="
45
- - !ruby/object:Gem::Version
46
- hash: 21
47
- segments:
48
- - 1
49
- - 0
50
- - 1
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
51
38
  version: 1.0.1
52
39
  type: :runtime
53
- version_requirements: *id002
54
- - !ruby/object:Gem::Dependency
55
- name: rspec
56
40
  prerelease: false
57
- requirement: &id003 !ruby/object:Gem::Requirement
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: 1.0.1
47
+ - !ruby/object:Gem::Dependency
48
+ name: rspec
49
+ requirement: !ruby/object:Gem::Requirement
58
50
  none: false
59
- requirements:
60
- - - "="
61
- - !ruby/object:Gem::Version
62
- hash: 63
63
- segments:
64
- - 2
65
- - 12
66
- - 0
51
+ requirements:
52
+ - - '='
53
+ - !ruby/object:Gem::Version
67
54
  version: 2.12.0
68
55
  type: :development
69
- version_requirements: *id003
70
- - !ruby/object:Gem::Dependency
71
- name: mocha
72
56
  prerelease: false
73
- requirement: &id004 !ruby/object:Gem::Requirement
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - '='
61
+ - !ruby/object:Gem::Version
62
+ version: 2.12.0
63
+ - !ruby/object:Gem::Dependency
64
+ name: mocha
65
+ requirement: !ruby/object:Gem::Requirement
74
66
  none: false
75
- requirements:
76
- - - ">="
77
- - !ruby/object:Gem::Version
78
- hash: 45
79
- segments:
80
- - 0
81
- - 9
82
- - 11
67
+ requirements:
68
+ - - ! '>='
69
+ - !ruby/object:Gem::Version
83
70
  version: 0.9.11
84
71
  type: :development
85
- version_requirements: *id004
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: 0.9.11
86
79
  description: A simple tool for tracking vendor branches in git.
87
80
  email: evil@che.lu
88
- executables:
81
+ executables:
89
82
  - braid
90
83
  extensions: []
91
-
92
84
  extra_rdoc_files: []
93
-
94
- files:
85
+ files:
95
86
  - .gitignore
96
87
  - .ruby-version
88
+ - .travis.yml
97
89
  - Gemfile
98
90
  - LICENSE
99
91
  - README.md
@@ -125,43 +117,33 @@ files:
125
117
  - spec/mirror_spec.rb
126
118
  - spec/operations_spec.rb
127
119
  - spec/test_helper.rb
128
- has_rdoc: true
129
120
  homepage: http://evil.che.lu/projects/braid
130
121
  licenses: []
131
-
132
122
  post_install_message:
133
- rdoc_options:
123
+ rdoc_options:
134
124
  - --line-numbers
135
125
  - --inline-source
136
126
  - --title
137
127
  - braid
138
128
  - --main
139
- require_paths:
129
+ require_paths:
140
130
  - lib
141
- required_ruby_version: !ruby/object:Gem::Requirement
131
+ required_ruby_version: !ruby/object:Gem::Requirement
142
132
  none: false
143
- requirements:
144
- - - ">="
145
- - !ruby/object:Gem::Version
146
- hash: 3
147
- segments:
148
- - 0
149
- version: "0"
150
- required_rubygems_version: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - ! '>='
135
+ - !ruby/object:Gem::Version
136
+ version: '0'
137
+ required_rubygems_version: !ruby/object:Gem::Requirement
151
138
  none: false
152
- requirements:
153
- - - ">="
154
- - !ruby/object:Gem::Version
155
- hash: 3
156
- segments:
157
- - 0
158
- version: "0"
139
+ requirements:
140
+ - - ! '>='
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
159
143
  requirements: []
160
-
161
144
  rubyforge_project: braid
162
- rubygems_version: 1.6.2
145
+ rubygems_version: 1.8.23
163
146
  signing_key:
164
147
  specification_version: 3
165
148
  summary: A simple tool for tracking vendor branches in git.
166
149
  test_files: []
167
-