grancher 0.1 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/CHANGELOG +1 -0
  2. data/grancher.gemspec +4 -8
  3. data/lib/grancher.rb +28 -11
  4. metadata +22 -20
data/CHANGELOG CHANGED
@@ -1 +1,2 @@
1
+ v0.1.1 Allows full git refspec to push to (in place of g.branch). Other minor fixes.
1
2
  v0.1. First version.
@@ -2,36 +2,32 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{grancher}
5
- s.version = "0.1"
5
+ s.version = "0.1.1"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Magnus Holm"]
9
- s.date = %q{2008-12-20}
9
+ s.date = %q{2010-04-06}
10
10
  s.description = %q{Easily copy folders and files to other Git branches}
11
11
  s.email = %q{judofyr@gmail.com}
12
12
  s.extra_rdoc_files = ["CHANGELOG", "LICENSE", "README", "lib/grancher/task.rb", "lib/grancher.rb"]
13
13
  s.files = ["CHANGELOG", "LICENSE", "README", "lib/grancher/task.rb", "lib/grancher.rb", "Rakefile", "Manifest", "grancher.gemspec"]
14
- s.has_rdoc = true
15
14
  s.homepage = %q{}
16
15
  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Grancher", "--main", "README", "--main", "Grancher", "--title", "Grancher"]
17
16
  s.require_paths = ["lib"]
18
17
  s.rubyforge_project = %q{dojo}
19
- s.rubygems_version = %q{1.3.1}
18
+ s.rubygems_version = %q{1.3.6}
20
19
  s.summary = %q{Easily copy folders and files to other Git branches}
21
20
 
22
21
  if s.respond_to? :specification_version then
23
22
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
24
- s.specification_version = 2
23
+ s.specification_version = 3
25
24
 
26
25
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
27
26
  s.add_runtime_dependency(%q<gash>, [">= 0"])
28
- s.add_development_dependency(%q<echoe>, [">= 0"])
29
27
  else
30
28
  s.add_dependency(%q<gash>, [">= 0"])
31
- s.add_dependency(%q<echoe>, [">= 0"])
32
29
  end
33
30
  else
34
31
  s.add_dependency(%q<gash>, [">= 0"])
35
- s.add_dependency(%q<echoe>, [">= 0"])
36
32
  end
37
33
  end
@@ -9,8 +9,8 @@ require 'gash'
9
9
  #
10
10
  # require 'grancher'
11
11
  # grancher = Grancher.new do |g|
12
- # g.branch = 'gh-pages'
13
- # g.push_to = 'origin'
12
+ # g.branch = 'gh-pages' # alternatively, g.refspec = 'ghpages:/refs/heads/ghpages'
13
+ # g.push_to = 'origin'
14
14
  # g.repo = 'some_repo' # defaults to '.'
15
15
  # g.message = 'Updated website' # defaults to 'Updated files.'
16
16
  #
@@ -66,7 +66,7 @@ require 'gash'
66
66
  #
67
67
  #
68
68
  class Grancher
69
- attr_accessor :branch, :push_to, :repo, :message
69
+ attr_accessor :branch, :refspec, :push_to, :repo, :message
70
70
  attr_reader :gash, :files, :directories
71
71
 
72
72
  def initialize(&blk)
@@ -75,11 +75,12 @@ class Grancher
75
75
  @keep = []
76
76
  @repo = '.'
77
77
  @message = 'Updated files.'
78
-
79
- if blk.arity == 1
80
- blk.call(self)
81
- else
82
- self.instance_eval(&blk)
78
+ if block_given?
79
+ if blk.arity == 1
80
+ blk.call(self)
81
+ else
82
+ self.instance_eval(&blk)
83
+ end
83
84
  end
84
85
  end
85
86
 
@@ -100,17 +101,33 @@ class Grancher
100
101
 
101
102
  # Keeps the files (or directories) given.
102
103
  def keep(*files)
103
- @keep.concat(files)
104
+ @keep.concat(files.flatten)
104
105
  end
105
106
 
106
107
  # Keep all the files in the branch.
107
108
  def keep_all
108
109
  @keep_all = true
109
110
  end
110
-
111
+
112
+ # Full git refspec to push to. Setting g.refspec will replace g.branch. Used when the remote
113
+ # branch is different to the local branch. Any git refspec is valid ('man git-push' for details)
114
+ def refspec=(refspec)
115
+ if refspec =~ /^\+?(.*)(?:\:.*)$/
116
+ @branch = $1
117
+ else
118
+ raise ArgumentError, "refspec syntax error. Should be: branch:refs/heads/branch"
119
+ end
120
+ @refspec = refspec
121
+ end
122
+
123
+ def branch=(branch)
124
+ @refspec = "#{branch}:refs/heads/#{branch}"
125
+ @branch = branch
126
+ end
127
+
111
128
  # Pushes the branch to the remote.
112
129
  def push
113
- gash.send(:git, 'push', @push_to, @branch + ':refs/heads/' + @branch)
130
+ gash.send(:git, 'push', @push_to, @refspec)
114
131
  end
115
132
 
116
133
  # Commits the changes.
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grancher
3
3
  version: !ruby/object:Gem::Version
4
- version: "0.1"
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 1
8
+ - 1
9
+ version: 0.1.1
5
10
  platform: ruby
6
11
  authors:
7
12
  - Magnus Holm
@@ -9,29 +14,21 @@ autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2008-12-20 00:00:00 +01:00
17
+ date: 2010-04-06 00:00:00 +01:00
13
18
  default_executable:
14
19
  dependencies:
15
20
  - !ruby/object:Gem::Dependency
16
21
  name: gash
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: "0"
24
- version:
25
- - !ruby/object:Gem::Dependency
26
- name: echoe
27
- type: :development
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
30
24
  requirements:
31
25
  - - ">="
32
26
  - !ruby/object:Gem::Version
27
+ segments:
28
+ - 0
33
29
  version: "0"
34
- version:
30
+ type: :runtime
31
+ version_requirements: *id001
35
32
  description: Easily copy folders and files to other Git branches
36
33
  email: judofyr@gmail.com
37
34
  executables: []
@@ -55,6 +52,8 @@ files:
55
52
  - grancher.gemspec
56
53
  has_rdoc: true
57
54
  homepage: ""
55
+ licenses: []
56
+
58
57
  post_install_message:
59
58
  rdoc_options:
60
59
  - --line-numbers
@@ -73,20 +72,23 @@ required_ruby_version: !ruby/object:Gem::Requirement
73
72
  requirements:
74
73
  - - ">="
75
74
  - !ruby/object:Gem::Version
75
+ segments:
76
+ - 0
76
77
  version: "0"
77
- version:
78
78
  required_rubygems_version: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
+ segments:
83
+ - 1
84
+ - 2
82
85
  version: "1.2"
83
- version:
84
86
  requirements: []
85
87
 
86
88
  rubyforge_project: dojo
87
- rubygems_version: 1.3.1
89
+ rubygems_version: 1.3.6
88
90
  signing_key:
89
- specification_version: 2
91
+ specification_version: 3
90
92
  summary: Easily copy folders and files to other Git branches
91
93
  test_files: []
92
94