grancher 0.1 → 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.
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