Class: RJGit::RubyGit
- Inherits:
-
Object
- Object
- RJGit::RubyGit
- Defined in:
- lib/git.rb
Constant Summary collapse
- RESET_MODES =
["HARD", "SOFT", "KEEP", "MERGE", "MIXED"]
Instance Attribute Summary collapse
-
#jgit ⇒ Object
Returns the value of attribute jgit.
-
#jrepo ⇒ Object
Returns the value of attribute jrepo.
Class Method Summary collapse
Instance Method Summary collapse
- #add(file_pattern) ⇒ Object
- #apply(input_stream) ⇒ Object
- #apply_file(patch_file) ⇒ Object
- #apply_patch(patch_content) ⇒ Object
- #branch_list ⇒ Object
- #checkout(branch_name = "master", options = {}) ⇒ Object
- #clean(options = {}) ⇒ Object
- #clone(remote, local, options = {}) ⇒ Object
- #commit(message, options = {}) ⇒ Object
- #create_branch(name) ⇒ Object
- #delete_branch(name) ⇒ Object
-
#initialize(repository) ⇒ RubyGit
constructor
A new instance of RubyGit.
- #log(path = nil, revstring = Constants::HEAD, options = {}) ⇒ Object
- #merge(commit) ⇒ Object
- #pull(options = {}) ⇒ Object
- #push(remote, refs = [], options = {}) ⇒ Object
- #push_all(remote, options = {}) ⇒ Object
- #remove(file_pattern) ⇒ Object
- #rename_branch(old_name, new_name) ⇒ Object
- #reset(ref, mode = "HARD", paths = nil) ⇒ Object
- #resolve_tag(tagref) ⇒ Object
- #revert(commits) ⇒ Object
- #status ⇒ Object
- #tag(name, message = "", commit_or_revision = nil, actor = nil, force = false) ⇒ Object
Constructor Details
#initialize(repository) ⇒ RubyGit
Returns a new instance of RubyGit.
22 23 24 25 |
# File 'lib/git.rb', line 22 def initialize(repository) @jrepo = RJGit.repository_type(repository) @jgit = Git.new(@jrepo) end |
Instance Attribute Details
#jgit ⇒ Object
Returns the value of attribute jgit.
15 16 17 |
# File 'lib/git.rb', line 15 def jgit @jgit end |
#jrepo ⇒ Object
Returns the value of attribute jrepo.
16 17 18 |
# File 'lib/git.rb', line 16 def jrepo @jrepo end |
Class Method Details
.clone(remote, local, options = {}) ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/git.rb', line 66 def self.clone(remote, local, = {}) clone_command = Git.clone_repository clone_command.setURI(remote) clone_command.set_directory(java.io.File.new(local)) clone_command.(true) if [:is_bare] if [:branch] if [:branch] == :all clone_command.set_clone_all_branches(true) else clone_command.set_branch([:branch]) end end if [:username] clone_command.set_credentials_provider(UsernamePasswordCredentialsProvider.new([:username], [:password])) end clone_command.call Repo.new(local) end |
Instance Method Details
#add(file_pattern) ⇒ Object
85 86 87 |
# File 'lib/git.rb', line 85 def add(file_pattern) @jgit.add.add_filepattern(file_pattern).call end |
#apply(input_stream) ⇒ Object
156 157 158 159 160 161 162 163 164 |
# File 'lib/git.rb', line 156 def apply(input_stream) apply_result = @jgit.apply.set_patch(input_stream).call updated_files = apply_result.get_updated_files updated_files_parsed = [] updated_files.each do |file| updated_files_parsed << file.get_absolute_path end updated_files_parsed end |
#apply_file(patch_file) ⇒ Object
171 172 173 174 |
# File 'lib/git.rb', line 171 def apply_file(patch_file) input_stream = FileInputStream.new(patch_file) apply(input_stream) end |
#apply_patch(patch_content) ⇒ Object
166 167 168 169 |
# File 'lib/git.rb', line 166 def apply_patch(patch_content) input_stream = ByteArrayInputStream.new(patch_content.to_java_bytes) apply(input_stream) end |
#branch_list ⇒ Object
41 42 43 44 45 46 47 48 |
# File 'lib/git.rb', line 41 def branch_list branch = @jgit.branch_list array = Array.new branch.call.each do |b| array << b.get_name end array end |
#checkout(branch_name = "master", options = {}) ⇒ Object
138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 |
# File 'lib/git.rb', line 138 def checkout(branch_name = "master", = {}) checkout_command = @jgit.checkout.set_name(branch_name) checkout_command.set_start_point([:commit]) [:paths].each {|path| checkout_command.add_path(path)} if [:paths] checkout_command.set_create_branch(true) if [:create] checkout_command.set_force(true) if [:force] result = {} begin checkout_command.call result[:success] = true result[:result] = @jgit.get_repository.get_full_branch rescue Java::OrgEclipseJgitApiErrors::CheckoutConflictException => conflict result[:success] = false result[:result] = conflict.get_conflicting_paths end result end |
#clean(options = {}) ⇒ Object
176 177 178 179 180 181 |
# File 'lib/git.rb', line 176 def clean( = {}) clean_command = @jgit.clean clean_command.set_dry_run(true) if [:dryrun] clean_command.set_paths(java.util.Arrays.asList([:paths])) if [:paths] clean_command.call end |
#clone(remote, local, options = {}) ⇒ Object
62 63 64 |
# File 'lib/git.rb', line 62 def clone(remote, local, = {}) RubyGit.clone(remote, local, ) end |
#commit(message, options = {}) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/git.rb', line 50 def commit(, = {}) commit_cmd = @jgit.commit.() commit_cmd.set_all([:all]) unless [:all].nil? commit_cmd.set_amend([:amend]) unless [:amend].nil? commit_cmd.([:author].person_ident) unless [:author].nil? commit_cmd.set_committer([:committer].person_ident) unless [:committer].nil? commit_cmd.set_insert_change_id([:insert_change_id]) unless [:insert_change_id].nil? [:only_paths].each {|path| commit_cmd.set_only(path)} unless [:only_paths].nil? commit_cmd.set_reflog_comment([:reflog_comment]) unless [:reflog_comment].nil? Commit.new(jrepo, commit_cmd.call) end |
#create_branch(name) ⇒ Object
126 127 128 |
# File 'lib/git.rb', line 126 def create_branch(name) @jgit.branch_create.setName(name).call end |
#delete_branch(name) ⇒ Object
130 131 132 |
# File 'lib/git.rb', line 130 def delete_branch(name) @jgit.branch_delete.set_branch_names(name).call end |
#log(path = nil, revstring = Constants::HEAD, options = {}) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/git.rb', line 27 def log(path = nil, revstring = Constants::HEAD, = {}) logs = @jgit.log ref = jrepo.resolve(revstring) logs.add(ref) logs.addPath(path) if path logs.setMaxCount([:max_count]) if [:max_count] logs.setSkip([:skip]) if [:skip] commits = Array.new logs.call.each do |jcommit| commits << Commit.new(jrepo, jcommit) end commits end |
#merge(commit) ⇒ Object
93 94 95 96 97 98 99 100 101 102 |
# File 'lib/git.rb', line 93 def merge(commit) merge_command = @jgit.merge merge_command.include(commit.jcommit) result = merge_command.call if result.get_merge_status.to_string == 'Conflicting' return result.get_conflicts.to_hash.keys else return result end end |
#pull(options = {}) ⇒ Object
234 235 236 237 238 239 240 241 242 |
# File 'lib/git.rb', line 234 def pull( = {}) pull_command = @jgit.pull pull_command.set_dry_run(true) if [:dryrun] pull_command.set_rebase([:rebase]) if [:rebase] if [:username] pull_command.set_credentials_provider(UsernamePasswordCredentialsProvider.new([:username], [:password])) end pull_command.call end |
#push(remote, refs = [], options = {}) ⇒ Object
220 221 222 223 224 225 226 227 228 229 230 231 232 |
# File 'lib/git.rb', line 220 def push(remote, refs = [], = {}) if(refs.size > 0) refs.map!{|ref| RefSpec.new(ref)} push_command = @jgit.push push_command.set_dry_run(true) if [:dryrun] push_command.set_remote(remote) push_command.set_ref_specs(refs) if [:username] push_command.set_credentials_provider(UsernamePasswordCredentialsProvider.new([:username], [:password])) end push_command.call end end |
#push_all(remote, options = {}) ⇒ Object
208 209 210 211 212 213 214 215 216 217 218 |
# File 'lib/git.rb', line 208 def push_all(remote, = {}) push_command = @jgit.push push_command.set_dry_run(true) if [:dryrun] push_command.set_remote(remote) push_command.set_push_all push_command. if [:username] push_command.set_credentials_provider(UsernamePasswordCredentialsProvider.new([:username], [:password])) end push_command.call end |
#remove(file_pattern) ⇒ Object
89 90 91 |
# File 'lib/git.rb', line 89 def remove(file_pattern) @jgit.rm.add_filepattern(file_pattern).call end |
#rename_branch(old_name, new_name) ⇒ Object
134 135 136 |
# File 'lib/git.rb', line 134 def rename_branch(old_name, new_name) @jgit.branch_rename.set_old_name(old_name).set_new_name(new_name).call end |
#reset(ref, mode = "HARD", paths = nil) ⇒ Object
183 184 185 186 187 188 189 190 191 192 193 194 |
# File 'lib/git.rb', line 183 def reset(ref, mode = "HARD", paths = nil) return nil if mode != nil && !RESET_MODES.include?(mode) reset_command = @jgit.reset if paths then paths.each do |path| reset_command.addPath(path) end end reset_command.setRef(ref.id) reset_command.setMode(org.eclipse.jgit.api.ResetCommand::ResetType.valueOf(mode)) unless mode == nil reset_command.call end |
#resolve_tag(tagref) ⇒ Object
117 118 119 120 121 122 123 124 |
# File 'lib/git.rb', line 117 def resolve_tag(tagref) begin walk = RevWalk.new(@jrepo) walk.parse_tag(tagref.get_object_id) rescue Java::OrgEclipseJgitErrors::IncorrectObjectTypeException nil end end |
#revert(commits) ⇒ Object
196 197 198 199 200 201 202 |
# File 'lib/git.rb', line 196 def revert(commits) revert_command = @jgit.revert commits.each do |commit| revert_command.include commit.jcommit end Commit.new(jrepo, revert_command.call) end |
#status ⇒ Object
204 205 206 |
# File 'lib/git.rb', line 204 def status @jgit.status.call end |
#tag(name, message = "", commit_or_revision = nil, actor = nil, force = false) ⇒ Object
104 105 106 107 108 109 110 111 112 113 114 115 |
# File 'lib/git.rb', line 104 def tag(name, = "", commit_or_revision = nil, actor = nil, force = false) tag_command = @jgit.tag tag_command.set_name(name) tag_command.set_force_update(force) tag_command.() tag_command.set_object_id(RJGit.commit_type(commit_or_revision)) if commit_or_revision if actor actor = RJGit.actor_type(actor) tag_command.set_tagger(actor) end tag_command.call end |