Class: RakeCommit::Git
- Inherits:
-
Object
- Object
- RakeCommit::Git
- Defined in:
- lib/rake_commit/git.rb
Instance Method Summary collapse
- #add ⇒ Object
- #collapse_git_commits ⇒ Object
- #collapse_git_commits? ⇒ Boolean
- #commit ⇒ Object
- #git_branch ⇒ Object
- #incremental_commit ⇒ Object
-
#initialize(collapse_commits = true, incremental = false, prompt_exclusions = [], precommit = nil) ⇒ Git
constructor
A new instance of Git.
- #merge_base ⇒ Object
- #merge_commits? ⇒ Boolean
- #nothing_to_commit? ⇒ Boolean
- #pull_rebase ⇒ Object
- #push ⇒ Object
- #rebase_continue ⇒ Object
- #rebase_in_progress? ⇒ Boolean
- #reset_soft ⇒ Object
- #status ⇒ Object
- #temp_commit ⇒ Object
Constructor Details
#initialize(collapse_commits = true, incremental = false, prompt_exclusions = [], precommit = nil) ⇒ Git
Returns a new instance of Git.
6 7 8 9 10 11 |
# File 'lib/rake_commit/git.rb', line 6 def initialize(collapse_commits = true, incremental = false, prompt_exclusions = [], precommit = nil) @collapse_commits = collapse_commits @incremental = incremental @prompt_exclusions = prompt_exclusions @precommit = precommit end |
Instance Method Details
#add ⇒ Object
61 62 63 |
# File 'lib/rake_commit/git.rb', line 61 def add RakeCommit::Shell.system "git add -A ." end |
#collapse_git_commits ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/rake_commit/git.rb', line 45 def collapse_git_commits RakeCommit::Shell.system(@precommit) unless @precommit.nil? add temp_commit reset_soft status return if nothing_to_commit? incremental_commit pull_rebase rescue return false return true end |
#collapse_git_commits? ⇒ Boolean
33 34 35 36 37 38 39 |
# File 'lib/rake_commit/git.rb', line 33 def collapse_git_commits? return false unless @collapse_commits return true unless merge_commits? status input = Readline.readline("Do you want to collapse merge commits? (y/n): ").chomp input == "y" end |
#commit ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/rake_commit/git.rb', line 13 def commit if @incremental incremental_commit elsif rebase_in_progress? rebase_continue RakeCommit::Shell.system("rake") push else if collapse_git_commits? return unless collapse_git_commits end RakeCommit::Shell.system("rake") push end end |
#git_branch ⇒ Object
97 98 99 100 101 102 |
# File 'lib/rake_commit/git.rb', line 97 def git_branch @git_branch ||= begin output = RakeCommit::Shell.backtick("git symbolic-ref HEAD") output.gsub('refs/heads/', '').strip end end |
#incremental_commit ⇒ Object
65 66 67 68 69 70 71 72 |
# File 'lib/rake_commit/git.rb', line 65 def incremental_commit = RakeCommit::CommitMessage.new(@prompt_exclusions) unless ..nil? RakeCommit::Shell.system("git config user.name #{Shellwords.shellescape(commit_message.author)}") end = [.feature, .].compact.join(" - ") RakeCommit::Shell.system("git commit -m #{Shellwords.shellescape(message)}") end |
#merge_base ⇒ Object
108 109 110 |
# File 'lib/rake_commit/git.rb', line 108 def merge_base @merge_base ||= RakeCommit::Shell.backtick("git merge-base #{git_branch} origin/#{git_branch}").strip end |
#merge_commits? ⇒ Boolean
104 105 106 |
# File 'lib/rake_commit/git.rb', line 104 def merge_commits? RakeCommit::Shell.backtick("git log #{merge_base}..HEAD") != RakeCommit::Shell.backtick("git log --no-merges #{merge_base}..HEAD") end |
#nothing_to_commit? ⇒ Boolean
92 93 94 95 |
# File 'lib/rake_commit/git.rb', line 92 def nothing_to_commit? status = RakeCommit::Shell.backtick("git status", false) status.empty? || status =~ /nothing to commit/m end |
#pull_rebase ⇒ Object
79 80 81 |
# File 'lib/rake_commit/git.rb', line 79 def pull_rebase RakeCommit::Shell.system "git pull --rebase --stat" end |
#push ⇒ Object
83 84 85 |
# File 'lib/rake_commit/git.rb', line 83 def push RakeCommit::Shell.system "git push origin #{git_branch}" end |
#rebase_continue ⇒ Object
41 42 43 |
# File 'lib/rake_commit/git.rb', line 41 def rebase_continue RakeCommit::Shell.system("git rebase --continue") end |
#rebase_in_progress? ⇒ Boolean
29 30 31 |
# File 'lib/rake_commit/git.rb', line 29 def rebase_in_progress? File.directory?(".git/rebase-merge") || File.directory?(".git/rebase-apply") end |
#reset_soft ⇒ Object
74 75 76 77 |
# File 'lib/rake_commit/git.rb', line 74 def reset_soft raise "Could not determine branch" unless git_branch RakeCommit::Shell.system "git reset --soft #{merge_base}" end |
#status ⇒ Object
57 58 59 |
# File 'lib/rake_commit/git.rb', line 57 def status RakeCommit::Shell.system("git status", false) end |
#temp_commit ⇒ Object
87 88 89 90 |
# File 'lib/rake_commit/git.rb', line 87 def temp_commit return if nothing_to_commit? RakeCommit::Shell.system "git commit -m 'rake_commit backup commit'" end |