Class RefTree
- java.lang.Object
-
- org.eclipse.jgit.internal.storage.reftree.RefTree
-
public class RefTree extends Object
Tree of references in the reference graph.The root corresponds to the
"refs/"
subdirectory, for example the default reference"refs/heads/master"
is stored at path"heads/master"
in aRefTree
.Normal references are stored as
FileMode.GITLINK
tree entries. The ObjectId in the tree entry is the ObjectId the reference refers to.Symbolic references are stored as
FileMode.SYMLINK
entries, with the blob storing the name of the target reference.Annotated tags also store the peeled object using a
GITLINK
entry with the suffix" ^"
(space carrot), for example"tags/v1.0"
stores the annotated tag object, while"tags/v1.0 ^"
stores the commit the tag annotates.HEAD
is a special case and stored as"..HEAD"
.
-
-
Field Summary
Fields Modifier and Type Field Description static String
PEELED_SUFFIX
Suffix applied to GITLINK to indicate its the peeled value of a tag.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
apply(Collection<Command> cmdList)
Attempt a batch of commands against this RefTree.RefTree
copy()
Create a deep copy of this RefTree.Ref
exactRef(ObjectReader reader, String name)
Read one reference.static RefTree
newEmptyTree()
Create an empty reference tree.static RefTree
read(ObjectReader reader, RevTree tree)
Load a reference tree.static String
refName(String path)
Convert a path name in a RefTree to the reference name known by Git.ObjectId
writeTree(ObjectInserter inserter)
Write this reference tree.
-
-
-
Field Detail
-
PEELED_SUFFIX
public static final String PEELED_SUFFIX
Suffix applied to GITLINK to indicate its the peeled value of a tag.- See Also:
- Constant Field Values
-
-
Method Detail
-
newEmptyTree
public static RefTree newEmptyTree()
Create an empty reference tree.- Returns:
- a new empty reference tree.
-
read
public static RefTree read(ObjectReader reader, RevTree tree) throws MissingObjectException, IncorrectObjectTypeException, CorruptObjectException, IOException
Load a reference tree.- Parameters:
reader
- reader to scan the reference tree with.tree
- the tree to read.- Returns:
- the ref tree read from the commit.
- Throws:
IOException
- the repository cannot be accessed through the reader.CorruptObjectException
- a tree object is corrupt and cannot be read.IncorrectObjectTypeException
- a tree object wasn't actually a tree.MissingObjectException
- a reference tree object doesn't exist.
-
exactRef
@Nullable public Ref exactRef(ObjectReader reader, String name) throws IOException
Read one reference.References are always returned peeled (
Ref.isPeeled()
is true). If the reference points to an annotated tag, the returned reference will be peeled and containRef.getPeeledObjectId()
.If the reference is a symbolic reference and the chain depth is less than
RefDatabase.MAX_SYMBOLIC_REF_DEPTH
the returned reference is resolved. If the chain depth is longer, the symbolic reference is returned without resolving.- Parameters:
reader
- to access objects necessary to read the requested reference.name
- name of the reference to read.- Returns:
- the reference; null if it does not exist.
- Throws:
IOException
- cannot read a symbolic reference target.
-
apply
public boolean apply(Collection<Command> cmdList)
Attempt a batch of commands against this RefTree.The batch is applied atomically, either all commands apply at once, or they all reject and the RefTree is left unmodified.
On success (when this method returns
true
) the command results are left as-is (probablyNOT_ATTEMPTED
). Result fields are set only when this method returnsfalse
to indicate failure.- Parameters:
cmdList
- to apply. All commands should still have result NOT_ATTEMPTED.- Returns:
- true if the commands applied; false if they were rejected.
-
refName
public static String refName(String path)
Convert a path name in a RefTree to the reference name known by Git.- Parameters:
path
- name read from the RefTree structure, for example"heads/master"
.- Returns:
- reference name for the path,
"refs/heads/master"
.
-
writeTree
public ObjectId writeTree(ObjectInserter inserter) throws IOException
Write this reference tree.- Parameters:
inserter
- inserter to use when writing trees to the object database. Caller is responsible for flushing the inserter before trying to read the objects, or exposing them through a reference.- Returns:
- the top level tree.
- Throws:
IOException
- a tree could not be written.
-
copy
public RefTree copy()
Create a deep copy of this RefTree.- Returns:
- a deep copy of this RefTree.
-
-