Method: Chef::Provider::Git#remote_resolve_reference
- Defined in:
- lib/chef/provider/git.rb
#remote_resolve_reference ⇒ Object
293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 |
# File 'lib/chef/provider/git.rb', line 293 def remote_resolve_reference logger.trace("#{new_resource} resolving remote reference") # The sha pointed to by an annotated tag is identified by the # '^{}' suffix appended to the tag. In order to resolve # annotated tags, we have to search for "revision*" and # post-process. Special handling for 'HEAD' to ignore a tag # named 'HEAD'. @resolved_reference = git_ls_remote(rev_search_pattern) refs = @resolved_reference.split("\n").map { |line| line.split("\t") } # First try for ^{} indicating the commit pointed to by an # annotated tag. # It is possible for a user to create a tag named 'HEAD'. # Using such a degenerate annotated tag would be very # confusing. We avoid the issue by disallowing the use of # annotated tags named 'HEAD'. if rev_search_pattern != "HEAD" found = find_revision(refs, new_resource.revision, "^{}") else found = refs_search(refs, "HEAD") end found = find_revision(refs, new_resource.revision) if found.empty? found.size == 1 ? found.first[0] : nil end |