Class: Releasinator::GitUtil
- Inherits:
-
Object
- Object
- Releasinator::GitUtil
- Defined in:
- lib/git_util.rb
Class Method Summary collapse
- .cached ⇒ Object
- .checkout(branch_name) ⇒ Object
- .confirm_tag_overwrite(new_tag) ⇒ Object
- .delete_branch(branch_name) ⇒ Object
- .detached? ⇒ Boolean
- .diff ⇒ Object
- .fetch ⇒ Object
- .get_current_branch ⇒ Object
- .get_local_branch_sha1(branch_name) ⇒ Object
- .get_local_head_sha1 ⇒ Object
- .get_remote_branch_sha1(branch_name) ⇒ Object
- .has_branch?(branch_name) ⇒ Boolean
- .has_remote_branch?(branch_name) ⇒ Boolean
- .init_gh_pages ⇒ Object
- .is_clean_git? ⇒ Boolean
- .push_branch(branch_name) ⇒ Object
- .push_tag(tag_name) ⇒ Object
- .repo_url ⇒ Object
- .reset_repo(branch_name) ⇒ Object
- .tag(new_tag, changelog) ⇒ Object
- .untracked_files ⇒ Object
Class Method Details
.cached ⇒ Object
50 51 52 |
# File 'lib/git_util.rb', line 50 def self.cached CommandProcessor.command("git diff --cached") end |
.checkout(branch_name) ⇒ Object
72 73 74 75 76 |
# File 'lib/git_util.rb', line 72 def self.checkout(branch_name) if get_current_branch != branch_name CommandProcessor.command("git checkout #{branch_name}") end end |
.confirm_tag_overwrite(new_tag) ⇒ Object
78 79 80 81 82 83 84 85 |
# File 'lib/git_util.rb', line 78 def self.confirm_tag_overwrite(new_tag) tag_results = CommandProcessor.command('git tag -l') tag_results.split.each do |existing_tag| if existing_tag == new_tag Printer.check_proceed("Tag #{existing_tag} already present. Overwrite tag #{existing_tag}?", "Tag #{existing_tag} not overwritten.") end end end |
.delete_branch(branch_name) ⇒ Object
58 59 60 61 62 |
# File 'lib/git_util.rb', line 58 def self.delete_branch(branch_name) if has_branch? branch_name CommandProcessor.command("git branch -D #{branch_name}") end end |
.detached? ⇒ Boolean
38 39 40 |
# File 'lib/git_util.rb', line 38 def self.detached? "" == CommandProcessor.command("git symbolic-ref --short -q HEAD | cat").strip end |
.diff ⇒ Object
46 47 48 |
# File 'lib/git_util.rb', line 46 def self.diff CommandProcessor.command("git diff") end |
.fetch ⇒ Object
13 14 15 |
# File 'lib/git_util.rb', line 13 def self.fetch() CommandProcessor.command("git fetch origin --prune --recurse-submodules -j9") end |
.get_current_branch ⇒ Object
34 35 36 |
# File 'lib/git_util.rb', line 34 def self.get_current_branch CommandProcessor.command("git symbolic-ref --short HEAD").strip end |
.get_local_branch_sha1(branch_name) ⇒ Object
91 92 93 |
# File 'lib/git_util.rb', line 91 def self.get_local_branch_sha1(branch_name) CommandProcessor.command("git rev-parse --verify #{branch_name}").strip end |
.get_local_head_sha1 ⇒ Object
87 88 89 |
# File 'lib/git_util.rb', line 87 def self.get_local_head_sha1 CommandProcessor.command("git rev-parse --verify head").strip end |
.get_remote_branch_sha1(branch_name) ⇒ Object
95 96 97 |
# File 'lib/git_util.rb', line 95 def self.get_remote_branch_sha1(branch_name) CommandProcessor.command("git rev-parse --verify origin/#{branch_name}").strip end |
.has_branch?(branch_name) ⇒ Boolean
64 65 66 |
# File 'lib/git_util.rb', line 64 def self.has_branch?(branch_name) "" != CommandProcessor.command("git branch --list #{branch_name}").strip end |
.has_remote_branch?(branch_name) ⇒ Boolean
68 69 70 |
# File 'lib/git_util.rb', line 68 def self.has_remote_branch?(branch_name) "" != CommandProcessor.command("git branch --list -r #{branch_name}").strip end |
.init_gh_pages ⇒ Object
110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
# File 'lib/git_util.rb', line 110 def self.init_gh_pages if !has_branch? "gh-pages" if has_remote_branch? "origin/gh-pages" checkout("gh-pages") else CommandProcessor.command("git checkout --orphan gh-pages") CommandProcessor.command("GLOBIGNORE='.git' git rm -rf *") #http://stackoverflow.com/questions/19363795/git-rm-doesnt-remove-all-files-in-one-go CommandProcessor.command("GLOBIGNORE='.git' git rm -rf *") CommandProcessor.command("touch README.md") CommandProcessor.command("git add .") CommandProcessor.command("git commit -am \"Initial gh-pages commit\"") CommandProcessor.command("git push -u origin gh-pages") end end end |
.is_clean_git? ⇒ Boolean
29 30 31 32 |
# File 'lib/git_util.rb', line 29 def self.is_clean_git? any_changes = CommandProcessor.command("git status --porcelain") '' == any_changes end |
.push_branch(branch_name) ⇒ Object
17 18 19 20 21 22 23 |
# File 'lib/git_util.rb', line 17 def self.push_branch(branch_name) checkout(branch_name) fetch() # always merge to include any extra commits added during release process CommandProcessor.command("git merge origin/#{branch_name} --no-edit") CommandProcessor.command("git push origin #{branch_name}") end |
.push_tag(tag_name) ⇒ Object
25 26 27 |
# File 'lib/git_util.rb', line 25 def self.push_tag(tag_name) CommandProcessor.command("git push origin #{tag_name}") end |
.repo_url ⇒ Object
54 55 56 |
# File 'lib/git_util.rb', line 54 def self.repo_url CommandProcessor.command("git config --get remote.origin.url").strip end |
.reset_repo(branch_name) ⇒ Object
5 6 7 8 9 10 11 |
# File 'lib/git_util.rb', line 5 def self.reset_repo(branch_name) # resets the repo to a clean state checkout(branch_name) fetch() CommandProcessor.command("git reset --hard origin/#{branch_name}") CommandProcessor.command("git clean -x -d -f") end |
.tag(new_tag, changelog) ⇒ Object
99 100 101 102 103 104 105 106 107 108 |
# File 'lib/git_util.rb', line 99 def self.tag(new_tag, changelog) confirm_tag_overwrite(new_tag) puts "tagging with changelog: \n\n#{changelog}\n".yellow changelog_tempfile = Tempfile.new("#{new_tag}.changelog") changelog_tempfile.write(changelog) changelog_tempfile.close # include changelog in annotated tag CommandProcessor.command("git tag -a -f #{new_tag} -F #{changelog_tempfile.path}") changelog_tempfile.unlink end |
.untracked_files ⇒ Object
42 43 44 |
# File 'lib/git_util.rb', line 42 def self.untracked_files CommandProcessor.command("git ls-files --others --exclude-standard") end |