class Agate::Reference

Overview

A git reference (branch, tag, or symbolic pointer).

Included Modules

Direct Known Subclasses

Defined in:

agate/reflog.cr
agate/refs.cr

Constructors

Class Method Summary

Instance Method Summary

Constructor Detail

def self.dwim(repo : Repository, shorthand : String) : Reference #

Looks up a reference using dwim (Do What I Mean) rules. E.g., "master" resolves to "refs/heads/master". Raises on failure.


[View source]
def self.lookup(repo : Repository, name : String) : Reference #

Looks up a reference by name. Raises on failure.


[View source]

Class Method Detail

def self.dwim?(repo : Repository, shorthand : String) : Reference | Nil #

Looks up a reference using dwim rules, returning nil if not found.


[View source]
def self.lookup?(repo : Repository, name : String) : Reference | Nil #

Looks up a reference by name, returning nil if not found.


[View source]
def self.valid_name?(name : String) : Bool #

Returns true if the given name is a valid reference name.


[View source]

Instance Method Detail

def <=>(other : Reference) : Int32 #

Compares two references.


[View source]
def ==(other : Reference) : Bool #

Equality comparison.


[View source]
def branch? : Bool #

Returns true if this reference is a local branch.


[View source]
def log : Array(ReflogEntry) #

Returns the reflog entries for this reference.

ref = repo.references["refs/heads/main"]
ref.log.each do |entry|
  puts "#{entry.old_id.to_s[..7]} -> #{entry.new_id.to_s[..7]}: #{entry.message}"
end

[View source]
def log? : Bool #

Returns true if this reference has a reflog.


[View source]
def name : String #

Returns the full reference name (e.g., "refs/heads/master").


[View source]
def note? : Bool #

Returns true if this reference is a note.


[View source]
def owner : Repository #

Returns the repository that owns this reference.


[View source]
def peel(target_type : Object::Type = Object::Type::Any) : Object #

Peels the reference to an object of the given type.


[View source]
def remote? : Bool #

Returns true if this reference is a remote tracking branch.


[View source]
def resolve : Reference #

Resolves a symbolic reference to a direct reference. For direct references, returns a copy.


[View source]
def shorthand : String #

Returns the short name (e.g., "master" from "refs/heads/master").


[View source]
def symbolic_target : String | Nil #

Returns the target name for symbolic references. Returns nil for direct references.


[View source]
def tag? : Bool #

Returns true if this reference is a tag.


[View source]
def target_id : OID #

Returns the target OID for direct references. Raises for symbolic references.


[View source]
def target_id? : OID | Nil #

Returns the target OID for direct references. Returns nil for symbolic references.


[View source]
def type : Type #

Returns the reference type (:direct or :symbolic).


[View source]
def update(target : OID, log_message : String = "") : Reference #

Updates the target of this direct reference. Returns the new reference.


[View source]