Class: Prodder::Git
- Inherits:
-
Object
- Object
- Prodder::Git
- Defined in:
- lib/prodder/git.rb
Constant Summary collapse
- GitError =
Class.new(StandardError) do attr_reader :command, :error def initialize(command, error); @command, @error = command, error; end end
- NotFoundError =
Class.new(StandardError)
- NotFastForward =
Class.new(StandardError) do attr_reader :remote def initialize(remote); @remote = remote; end end
Instance Method Summary collapse
- #add(file) ⇒ Object
- #checkout(branch) ⇒ Object
- #clone ⇒ Object
- #clone_or_remote_update ⇒ Object
- #commit(message, author) ⇒ Object
- #dirty? ⇒ Boolean
- #fast_forward? ⇒ Boolean
-
#initialize(local, remote) ⇒ Git
constructor
A new instance of Git.
- #no_new_commits? ⇒ Boolean
- #push ⇒ Object
- #remote_update ⇒ Object
- #reset(sharef, hard = false) ⇒ Object
- #tracked?(file) ⇒ Boolean
Constructor Details
#initialize(local, remote) ⇒ Git
Returns a new instance of Git.
14 15 16 17 |
# File 'lib/prodder/git.rb', line 14 def initialize(local, remote) @local = local @remote = remote end |
Instance Method Details
#add(file) ⇒ Object
65 66 67 |
# File 'lib/prodder/git.rb', line 65 def add(file) inside_repo { git 'add', file } end |
#checkout(branch) ⇒ Object
57 58 59 |
# File 'lib/prodder/git.rb', line 57 def checkout(branch) inside_repo { git 'checkout', branch } end |
#clone ⇒ Object
49 50 51 |
# File 'lib/prodder/git.rb', line 49 def clone git 'clone', @remote, @local end |
#clone_or_remote_update ⇒ Object
19 20 21 22 23 24 25 26 27 |
# File 'lib/prodder/git.rb', line 19 def clone_or_remote_update if File.directory? File.join(@local, '.git') remote_update checkout 'master' reset 'origin/master', true else clone end end |
#commit(message, author) ⇒ Object
69 70 71 |
# File 'lib/prodder/git.rb', line 69 def commit(, ) inside_repo { git 'commit', "--author='#{}'", "-m", } end |
#dirty? ⇒ Boolean
29 30 31 |
# File 'lib/prodder/git.rb', line 29 def dirty? inside_repo { git('status', '--porcelain') != '' } end |
#fast_forward? ⇒ Boolean
43 44 45 46 47 |
# File 'lib/prodder/git.rb', line 43 def fast_forward? inside_repo do git('merge-base', 'master', 'origin/master') == git('show-ref', '--hash', 'origin/master') end end |
#no_new_commits? ⇒ Boolean
37 38 39 40 41 |
# File 'lib/prodder/git.rb', line 37 def no_new_commits? inside_repo do git('show-ref', '--hash', 'origin/master') == git('show-ref', '--hash', 'refs/heads/master') end end |
#push ⇒ Object
73 74 75 |
# File 'lib/prodder/git.rb', line 73 def push inside_repo { git 'push', 'origin', 'master:master' } end |
#remote_update ⇒ Object
53 54 55 |
# File 'lib/prodder/git.rb', line 53 def remote_update inside_repo { git 'remote', 'update' } end |
#reset(sharef, hard = false) ⇒ Object
61 62 63 |
# File 'lib/prodder/git.rb', line 61 def reset(sharef, hard = false) inside_repo { git 'reset', hard ? '--hard' : '', sharef } end |
#tracked?(file) ⇒ Boolean
33 34 35 |
# File 'lib/prodder/git.rb', line 33 def tracked?(file) inside_repo { git('ls-files', file) != '' } end |