Class Repository
- All Implemented Interfaces:
AutoCloseable
- Direct Known Subclasses:
DfsRepository
,FileRepository
A repository holds all objects and refs used for managing source code (could be any type of file, but source code is what SCM's are typically used for).
The thread-safety of a Repository
very much
depends on the concrete implementation. Applications working with a generic
Repository
type must not assume the instance is thread-safe.
FileRepository
is thread-safe.DfsRepository
thread-safety is determined by its subclass.
-
Field Summary
FieldsModifier and TypeFieldDescription(package private) final AtomicLong
private static final Pattern
Branch names containing slashes should not have a name component that is one of the reserved device names on Windows.private final FS
File abstraction used to resolve paths.private final File
Metadata directory holding the repository's critical files.private static final ListenerList
private final File
If not bare, the index file caching the working file states.private final String
private static final org.slf4j.Logger
private final ListenerList
(package private) final AtomicInteger
Use counterprivate final File
If not bare, the top level directory of the working files. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
Repository
(BaseRepositoryBuilder options) Initialize a new repository instance. -
Method Summary
Modifier and TypeMethodDescriptionvoid
autoGC
(ProgressMonitor monitor) Check whether any housekeeping is required; if yes, run garbage collection; if not, exit without performing any work.void
close()
void
create()
Create a new Git repository.abstract void
create
(boolean bare) Create a new Git repository initializing the necessary files and directories.abstract AttributesNodeProvider
Create a newAttributesNodeProvider
.protected void
doClose()
Invoked when the use count drops to zero duringclose()
.final Ref
Get a ref by name.final Ref
Search for a ref by (possibly abbreviated) name.void
fireEvent
(RepositoryEvent<?> event) Fire an event to all registered listeners.Objects known to exist but not expressed bygetAllRefs()
.Deprecated.Map
<AnyObjectId, Set<Ref>> Get a map with all objects referenced by a peeled ref.Get the short name of the current branch thatHEAD
points to.abstract StoredConfig
Get the configuration of this repository.Get local metadata directorygetFS()
Get the used file system abstraction.Get the name of the reference thatHEAD
points to.Read theGIT_DIR/description
file for gitweb.static ListenerList
Get the global listener list observing all events in this JVM.abstract String
Get repository identifier.Get the index file location ornull
if repository isn't local.protected String
Get the initial branch name of a new repositoryGet listeners observing only events on this repository.abstract ObjectDatabase
Get the object database which stores this repository's data.abstract RefDatabase
Get the reference database which stores the reference namespace.abstract ReflogReader
getReflogReader
(String refName) Get the reflog readergetRemoteName
(String refName) Get remote nameGet the names of all known remotesGet the repository stategetTags()
Deprecated.usegetRefDatabase().getRefsByPrefix(R_TAGS)
insteadGet the root directory of the working tree, where files are checked out for viewing and editing.boolean
hasObject
(AnyObjectId objectId) Deprecated.usegetObjectDatabase().has(objectId)
void
Increment the use counter by one, requiring a matchedclose()
.private static boolean
boolean
isBare()
Whether this repository is bareprivate static boolean
isHex
(char c) static boolean
isValidRefName
(String refName) Check validity of a ref name.Create a new in-core index representation, lock it, and read from disk.Create a new inserter to create objects ingetObjectDatabase()
.Create a new reader to read objects fromgetObjectDatabase()
.static String
normalizeBranchName
(String name) Normalizes the passed branch name into a possible valid branch name.abstract void
notifyIndexChanged
(boolean internal) Notify that the index changed by firing an IndexChangedEvent.open
(AnyObjectId objectId) Open an object from this repository.open
(AnyObjectId objectId, int typeHint) Open an object from this repository.Locate a reference to a commit and immediately parse its content.private RevObject
parseSimple
(RevWalk rw, String revstr) Deprecated.usegetRefDatabase().peel(ref)
instead.Return the information stored in the file $GIT_DIR/CHERRY_PICK_HEAD.Return the information stored in the file $GIT_DIR/COMMIT_EDITMSG.private String
readCommitMsgFile
(String msgFilename) Create a new in-core index representation and read an index from disk.private byte[]
readGitDirectoryFile
(String filename) Read a file from the git directory.Return the information stored in the file $GIT_DIR/MERGE_MSG.Return the information stored in the file $GIT_DIR/MERGE_HEAD.Return the information stored in the file $GIT_DIR/ORIG_HEAD.readRebaseTodo
(String path, boolean includeComments) Read a file formatted like the git-rebase-todo file.Return the information stored in the file $GIT_DIR/REVERT_HEAD.Return the information stored in the file $GIT_DIR/SQUASH_MSG.Create a command to rename a ref in this repositoryParse a git revision string and return an object id.private Object
private ObjectId
resolveAbbreviation
(String revstr) private RevCommit
resolveReflog
(RevWalk rw, Ref ref, String time) private String
resolveReflogCheckout
(int checkoutNo) private ObjectId
resolveSimple
(String revstr) abstract void
Force a scan for changed refs.void
setGitwebDescription
(String description) Set theGIT_DIR/description
file for gitweb.static String
shortenRefName
(String refName) Get a shortened more user friendly ref nameshortenRemoteBranchName
(String refName) Get a shortened more user friendly remote tracking branch nameSimplify an expression, but unlikeresolve(String)
it will not resolve a branch passed or resulting from the expression, such as @{-}.static String
stripWorkDir
(File workDir, File file) Strip work dir and return normalized repository path.toString()
Create a command to update, create or delete a ref in this repository.Create a command to update, create or delete a ref in this repository.void
writeCherryPickHead
(ObjectId head) Write cherry pick commit into $GIT_DIR/CHERRY_PICK_HEAD.void
writeCommitEditMsg
(String msg) Write new content to the file $GIT_DIR/COMMIT_EDITMSG.private void
writeCommitMsg
(File msgFile, String msg) private void
writeHeadsFile
(List<? extends ObjectId> heads, String filename) Write the given heads to a file in the git directory.void
Write new content to the file $GIT_DIR/MERGE_MSG.void
writeMergeHeads
(List<? extends ObjectId> heads) Write new merge-heads into $GIT_DIR/MERGE_HEAD.void
writeOrigHead
(ObjectId head) Write original HEAD commit into $GIT_DIR/ORIG_HEAD.void
writeRebaseTodoFile
(String path, List<RebaseTodoLine> steps, boolean append) Write a file formatted like a git-rebase-todo file.void
writeRevertHead
(ObjectId head) Write revert commit into $GIT_DIR/REVERT_HEAD.void
Write new content to the file $GIT_DIR/SQUASH_MSG.
-
Field Details
-
LOG
private static final org.slf4j.Logger LOG -
globalListeners
-
FORBIDDEN_BRANCH_NAME_COMPONENTS
Branch names containing slashes should not have a name component that is one of the reserved device names on Windows.- See Also:
-
useCnt
Use counter -
closedAt
-
gitDir
Metadata directory holding the repository's critical files. -
fs
File abstraction used to resolve paths. -
myListeners
-
workTree
If not bare, the top level directory of the working files. -
indexFile
If not bare, the index file caching the working file states. -
initialBranch
-
-
Constructor Details
-
Repository
Initialize a new repository instance.- Parameters:
options
- options to configure the repository.
-
-
Method Details
-
getGlobalListenerList
Get the global listener list observing all events in this JVM.- Returns:
- the global listener list observing all events in this JVM.
-
getListenerList
Get listeners observing only events on this repository.- Returns:
- listeners observing only events on this repository.
-
fireEvent
Fire an event to all registered listeners.The source repository of the event is automatically set to this repository, before the event is delivered to any listeners.
- Parameters:
event
- the event to deliver.
-
create
Create a new Git repository.Repository with working tree is created using this method. This method is the same as
create(false)
.- Throws:
IOException
- See Also:
-
create
Create a new Git repository initializing the necessary files and directories.- Parameters:
bare
- if true, a bare repository (a repository without a working directory) is created.- Throws:
IOException
- in case of IO problem
-
getDirectory
Get local metadata directory- Returns:
- local metadata directory;
null
if repository isn't local.
-
getIdentifier
Get repository identifier.- Returns:
- repository identifier. The returned identifier has to be unique within a given Git server.
- Since:
- 5.4
-
getObjectDatabase
Get the object database which stores this repository's data.- Returns:
- the object database which stores this repository's data.
-
newObjectInserter
Create a new inserter to create objects ingetObjectDatabase()
.- Returns:
- a new inserter to create objects in
getObjectDatabase()
.
-
newObjectReader
Create a new reader to read objects fromgetObjectDatabase()
.- Returns:
- a new reader to read objects from
getObjectDatabase()
.
-
getRefDatabase
Get the reference database which stores the reference namespace.- Returns:
- the reference database which stores the reference namespace.
-
getConfig
Get the configuration of this repository.- Returns:
- the configuration of this repository.
-
createAttributesNodeProvider
Create a newAttributesNodeProvider
.- Returns:
- a new
AttributesNodeProvider
. ThisAttributesNodeProvider
is lazy loaded only once. It means that it will not be updated after loading. Prefer creating new instance for each use. - Since:
- 4.2
-
getFS
Get the used file system abstraction.- Returns:
- the used file system abstraction, or
null
if repository isn't local.
-
hasObject
Deprecated.usegetObjectDatabase().has(objectId)
Whether the specified object is stored in this repo or any of the known shared repositories.- Parameters:
objectId
- aAnyObjectId
object.- Returns:
- true if the specified object is stored in this repo or any of the known shared repositories.
-
open
Open an object from this repository.This is a one-shot call interface which may be faster than allocating a
newObjectReader()
to perform the lookup.- Parameters:
objectId
- identity of the object to open.- Returns:
- a
ObjectLoader
for accessing the object. - Throws:
MissingObjectException
- the object does not exist.IOException
- the object store cannot be accessed.
-
open
@NonNull public ObjectLoader open(AnyObjectId objectId, int typeHint) throws MissingObjectException, IncorrectObjectTypeException, IOException Open an object from this repository.This is a one-shot call interface which may be faster than allocating a
newObjectReader()
to perform the lookup.- Parameters:
objectId
- identity of the object to open.typeHint
- hint about the type of object being requested, e.g.Constants.OBJ_BLOB
;ObjectReader.OBJ_ANY
if the object type is not known, or does not matter to the caller.- Returns:
- a
ObjectLoader
for accessing the object. - Throws:
MissingObjectException
- the object does not exist.IncorrectObjectTypeException
- typeHint was not OBJ_ANY, and the object's actual type does not match typeHint.IOException
- the object store cannot be accessed.
-
updateRef
Create a command to update, create or delete a ref in this repository.- Parameters:
ref
- name of the ref the caller wants to modify.- Returns:
- an update command. The caller must finish populating this command and then invoke one of the update methods to actually make a change.
- Throws:
IOException
- a symbolic ref was passed in and could not be resolved back to the base ref, as the symbolic ref could not be read.
-
updateRef
Create a command to update, create or delete a ref in this repository.- Parameters:
ref
- name of the ref the caller wants to modify.detach
- true to create a detached head- Returns:
- an update command. The caller must finish populating this command and then invoke one of the update methods to actually make a change.
- Throws:
IOException
- a symbolic ref was passed in and could not be resolved back to the base ref, as the symbolic ref could not be read.
-
renameRef
Create a command to rename a ref in this repository- Parameters:
fromRef
- name of ref to rename fromtoRef
- name of ref to rename to- Returns:
- an update command that knows how to rename a branch to another.
- Throws:
IOException
- the rename could not be performed.
-
resolve
@Nullable public ObjectId resolve(String revstr) throws AmbiguousObjectException, IncorrectObjectTypeException, RevisionSyntaxException, IOException Parse a git revision string and return an object id. Combinations of these operators are supported:- HEAD, MERGE_HEAD, FETCH_HEAD
- SHA-1: a complete or abbreviated SHA-1
- refs/...: a complete reference name
- short-name: a short reference name under
refs/heads
,refs/tags
, orrefs/remotes
namespace - tag-NN-gABBREV: output from describe, parsed by treating
ABBREV
as an abbreviated SHA-1. - id^: first parent of commit id, this is the same
as
id^1
- id^0: ensure id is a commit
- id^n: n-th parent of commit id
- id~n: n-th historical ancestor of id, by first
parent.
id~3
is equivalent toid^1^1^1
orid^^^
. - id:path: Lookup path under tree named by id
- id^{commit}: ensure id is a commit
- id^{tree}: ensure id is a tree
- id^{tag}: ensure id is a tag
- id^{blob}: ensure id is a blob
The following operators are specified by Git conventions, but are not supported by this method:
- ref@{n}: n-th version of ref as given by its reflog
- ref@{time}: value of ref at the designated time
- Parameters:
revstr
- A git object references expression- Returns:
- an ObjectId or
null
if revstr can't be resolved to any ObjectId - Throws:
AmbiguousObjectException
-revstr
contains an abbreviated ObjectId and this repository contains more than one object which match to the input abbreviation.IncorrectObjectTypeException
- the id parsed does not meet the type required to finish applying the operators in the expression.RevisionSyntaxException
- the expression is not supported by this implementation, or does not meet the standard syntax.IOException
- on serious errors
-
simplify
Simplify an expression, but unlikeresolve(String)
it will not resolve a branch passed or resulting from the expression, such as @{-}. Thus this method can be used to process an expression to a method that expects a branch or revision id.- Parameters:
revstr
- aString
object.- Returns:
- object id or ref name from resolved expression or
null
if given expression cannot be resolved - Throws:
AmbiguousObjectException
IOException
-
resolve
- Throws:
IOException
-
isHex
private static boolean isHex(char c) -
isAllHex
-
parseSimple
- Throws:
IOException
-
resolveSimple
- Throws:
IOException
-
resolveReflogCheckout
- Throws:
IOException
-
resolveReflog
- Throws:
IOException
-
resolveAbbreviation
@Nullable private ObjectId resolveAbbreviation(String revstr) throws IOException, AmbiguousObjectException - Throws:
IOException
AmbiguousObjectException
-
incrementOpen
public void incrementOpen()Increment the use counter by one, requiring a matchedclose()
. -
close
public void close()Decrement the use count, and maybe close resources.
- Specified by:
close
in interfaceAutoCloseable
-
doClose
protected void doClose()Invoked when the use count drops to zero duringclose()
.The default implementation closes the object and ref databases.
-
toString
-
getFullBranch
Get the name of the reference thatHEAD
points to.This is essentially the same as doing:
return exactRef(Constants.HEAD).getTarget().getName()
Except when HEAD is detached, in which case this method returns the current ObjectId in hexadecimal string format.- Returns:
- name of current branch (for example
refs/heads/master
), an ObjectId in hex format if the current branch is detached, ornull
if the repository is corrupt and has no HEAD reference. - Throws:
IOException
-
getBranch
Get the short name of the current branch thatHEAD
points to.This is essentially the same as
getFullBranch()
, except the leading prefixrefs/heads/
is removed from the reference before it is returned to the caller.- Returns:
- name of current branch (for example
master
), an ObjectId in hex format if the current branch is detached, ornull
if the repository is corrupt and has no HEAD reference. - Throws:
IOException
-
getInitialBranch
Get the initial branch name of a new repository- Returns:
- the initial branch name of a new repository
- Since:
- 5.11
-
getAdditionalHaves
Objects known to exist but not expressed bygetAllRefs()
.When a repository borrows objects from another repository, it can advertise that it safely has that other repository's references, without exposing any other details about the other repository. This may help a client trying to push changes avoid pushing more than it needs to.
- Returns:
- unmodifiable collection of other known objects.
-
exactRef
Get a ref by name.- Parameters:
name
- the name of the ref to lookup. Must not be a short-hand form; e.g., "master" is not automatically expanded to "refs/heads/master".- Returns:
- the Ref with the given name, or
null
if it does not exist - Throws:
IOException
- Since:
- 4.2
-
findRef
Search for a ref by (possibly abbreviated) name.- Parameters:
name
- the name of the ref to lookup. May be a short-hand form, e.g. "master" which is automatically expanded to "refs/heads/master" if "refs/heads/master" already exists.- Returns:
- the Ref with the given name, or
null
if it does not exist - Throws:
IOException
- Since:
- 4.2
-
getAllRefs
Deprecated.usegetRefDatabase().getRefs()
instead.Get mutable map of all known refs, including symrefs like HEAD that may not point to any object yet.- Returns:
- mutable map of all known refs (heads, tags, remotes).
-
getTags
Deprecated.usegetRefDatabase().getRefsByPrefix(R_TAGS)
insteadGet mutable map of all tags- Returns:
- mutable map of all tags; key is short tag name ("v1.0") and value of the entry contains the ref with the full tag name ("refs/tags/v1.0").
-
peel
Deprecated.usegetRefDatabase().peel(ref)
instead.Peel a possibly unpeeled reference to an annotated tag.If the ref cannot be peeled (as it does not refer to an annotated tag) the peeled id stays null, but
Ref.isPeeled()
will be true.- Parameters:
ref
- The ref to peel- Returns:
ref
ifref.isPeeled()
is true; else a new Ref object representing the same data as Ref, but isPeeled() will be true and getPeeledObjectId will contain the peeled object (or null).
-
getAllRefsByPeeledObjectId
Get a map with all objects referenced by a peeled ref.- Returns:
- a map with all objects referenced by a peeled ref.
-
getIndexFile
Get the index file location ornull
if repository isn't local.- Returns:
- the index file location or
null
if repository isn't local. - Throws:
NoWorkTreeException
- if this is bare, which implies it has no working directory. SeeisBare()
.
-
parseCommit
public RevCommit parseCommit(AnyObjectId id) throws IncorrectObjectTypeException, IOException, MissingObjectException Locate a reference to a commit and immediately parse its content.This method only returns successfully if the commit object exists, is verified to be a commit, and was parsed without error.
- Parameters:
id
- name of the commit object.- Returns:
- reference to the commit object. Never null.
- Throws:
MissingObjectException
- the supplied commit does not exist.IncorrectObjectTypeException
- the supplied id is not a commit or an annotated tag.IOException
- a pack file or loose object could not be read.- Since:
- 4.8
-
readDirCache
@NonNull public DirCache readDirCache() throws NoWorkTreeException, CorruptObjectException, IOExceptionCreate a new in-core index representation and read an index from disk.The new index will be read before it is returned to the caller. Read failures are reported as exceptions and therefore prevent the method from returning a partially populated index.
- Returns:
- a cache representing the contents of the specified index file (if it exists) or an empty cache if the file does not exist.
- Throws:
NoWorkTreeException
- if this is bare, which implies it has no working directory. SeeisBare()
.IOException
- the index file is present but could not be read.CorruptObjectException
- the index file is using a format or extension that this library does not support.
-
lockDirCache
@NonNull public DirCache lockDirCache() throws NoWorkTreeException, CorruptObjectException, IOExceptionCreate a new in-core index representation, lock it, and read from disk.The new index will be locked and then read before it is returned to the caller. Read failures are reported as exceptions and therefore prevent the method from returning a partially populated index.
- Returns:
- a cache representing the contents of the specified index file (if it exists) or an empty cache if the file does not exist.
- Throws:
NoWorkTreeException
- if this is bare, which implies it has no working directory. SeeisBare()
.IOException
- the index file is present but could not be read, or the lock could not be obtained.CorruptObjectException
- the index file is using a format or extension that this library does not support.
-
getRepositoryState
Get the repository state- Returns:
- the repository state
-
isValidRefName
Check validity of a ref name. It must not contain character that has a special meaning in a Git object reference expression. Some other dangerous characters are also excluded. For portability reasons '\' is excluded- Parameters:
refName
- aString
object.- Returns:
- true if refName is a valid ref name
-
normalizeBranchName
Normalizes the passed branch name into a possible valid branch name. The validity of the returned name should be checked by a subsequent call toisValidRefName(String)
.Future implementations of this method could be more restrictive or more lenient about the validity of specific characters in the returned name.
The current implementation returns the trimmed input string if this is already a valid branch name. Otherwise it returns a trimmed string with special characters not allowed by
isValidRefName(String)
replaced by hyphens ('-') and blanks replaced by underscores ('_'). Leading and trailing slashes, dots, hyphens, and underscores are removed.- Parameters:
name
- to normalize- Returns:
- The normalized name or an empty String if it is
null
or empty. - Since:
- 4.7
- See Also:
-
stripWorkDir
Strip work dir and return normalized repository path.- Parameters:
workDir
- Work dirfile
- File whose path shall be stripped of its workdir- Returns:
- normalized repository relative path or the empty string if the file is not relative to the work directory.
-
isBare
public boolean isBare()Whether this repository is bare- Returns:
- true if this is bare, which implies it has no working directory.
-
getWorkTree
Get the root directory of the working tree, where files are checked out for viewing and editing.- Returns:
- the root directory of the working tree, where files are checked out for viewing and editing.
- Throws:
NoWorkTreeException
- if this is bare, which implies it has no working directory. SeeisBare()
.
-
scanForRepoChanges
Force a scan for changed refs. Fires an IndexChangedEvent(false) if changes are detected.- Throws:
IOException
-
notifyIndexChanged
public abstract void notifyIndexChanged(boolean internal) Notify that the index changed by firing an IndexChangedEvent.- Parameters:
internal
-true
if the index was changed by the same JGit process- Since:
- 5.0
-
shortenRefName
Get a shortened more user friendly ref name- Parameters:
refName
- aString
object.- Returns:
- a more user friendly ref name
-
shortenRemoteBranchName
Get a shortened more user friendly remote tracking branch name- Parameters:
refName
- aString
object.- Returns:
- the remote branch name part of
refName
, i.e. without therefs/remotes/<remote>
prefix, ifrefName
represents a remote tracking branch; otherwisenull
. - Since:
- 3.4
-
getRemoteName
Get remote name- Parameters:
refName
- aString
object.- Returns:
- the remote name part of
refName
, i.e. without therefs/remotes/<remote>
prefix, ifrefName
represents a remote tracking branch; otherwisenull
. - Since:
- 3.4
-
getGitwebDescription
Read theGIT_DIR/description
file for gitweb.- Returns:
- description text; null if no description has been configured.
- Throws:
IOException
- description cannot be accessed.- Since:
- 4.6
-
setGitwebDescription
Set theGIT_DIR/description
file for gitweb.- Parameters:
description
- new description; null to clear the description.- Throws:
IOException
- description cannot be persisted.- Since:
- 4.6
-
getReflogReader
Get the reflog reader- Parameters:
refName
- aString
object.- Returns:
- a
ReflogReader
for the supplied refname, ornull
if the named ref does not exist. - Throws:
IOException
- the ref could not be accessed.- Since:
- 3.0
-
readMergeCommitMsg
Return the information stored in the file $GIT_DIR/MERGE_MSG. In this file operations triggering a merge will store a template for the commit message of the merge commit.- Returns:
- a String containing the content of the MERGE_MSG file or
null
if this file doesn't exist - Throws:
IOException
NoWorkTreeException
- if this is bare, which implies it has no working directory. SeeisBare()
.
-
writeMergeCommitMsg
Write new content to the file $GIT_DIR/MERGE_MSG. In this file operations triggering a merge will store a template for the commit message of the merge commit. Ifnull
is specified as message the file will be deleted.- Parameters:
msg
- the message which should be written ornull
to delete the file- Throws:
IOException
-
readCommitEditMsg
Return the information stored in the file $GIT_DIR/COMMIT_EDITMSG. In this file hooks triggered by an operation may read or modify the current commit message.- Returns:
- a String containing the content of the COMMIT_EDITMSG file or
null
if this file doesn't exist - Throws:
IOException
NoWorkTreeException
- if this is bare, which implies it has no working directory. SeeisBare()
.- Since:
- 4.0
-
writeCommitEditMsg
Write new content to the file $GIT_DIR/COMMIT_EDITMSG. In this file hooks triggered by an operation may read or modify the current commit message. Ifnull
is specified as message the file will be deleted.- Parameters:
msg
- the message which should be written ornull
to delete the file- Throws:
IOException
- Since:
- 4.0
-
readMergeHeads
Return the information stored in the file $GIT_DIR/MERGE_HEAD. In this file operations triggering a merge will store the IDs of all heads which should be merged together with HEAD.- Returns:
- a list of commits which IDs are listed in the MERGE_HEAD file or
null
if this file doesn't exist. Also if the file exists but is emptynull
will be returned - Throws:
IOException
NoWorkTreeException
- if this is bare, which implies it has no working directory. SeeisBare()
.
-
writeMergeHeads
Write new merge-heads into $GIT_DIR/MERGE_HEAD. In this file operations triggering a merge will store the IDs of all heads which should be merged together with HEAD. Ifnull
is specified as list of commits the file will be deleted- Parameters:
heads
- a list of commits which IDs should be written to $GIT_DIR/MERGE_HEAD ornull
to delete the file- Throws:
IOException
-
readCherryPickHead
Return the information stored in the file $GIT_DIR/CHERRY_PICK_HEAD.- Returns:
- object id from CHERRY_PICK_HEAD file or
null
if this file doesn't exist. Also if the file exists but is emptynull
will be returned - Throws:
IOException
NoWorkTreeException
- if this is bare, which implies it has no working directory. SeeisBare()
.
-
readRevertHead
Return the information stored in the file $GIT_DIR/REVERT_HEAD.- Returns:
- object id from REVERT_HEAD file or
null
if this file doesn't exist. Also if the file exists but is emptynull
will be returned - Throws:
IOException
NoWorkTreeException
- if this is bare, which implies it has no working directory. SeeisBare()
.
-
writeCherryPickHead
Write cherry pick commit into $GIT_DIR/CHERRY_PICK_HEAD. This is used in case of conflicts to store the cherry which was tried to be picked.- Parameters:
head
- an object id of the cherry commit ornull
to delete the file- Throws:
IOException
-
writeRevertHead
Write revert commit into $GIT_DIR/REVERT_HEAD. This is used in case of conflicts to store the revert which was tried to be picked.- Parameters:
head
- an object id of the revert commit ornull
to delete the file- Throws:
IOException
-
writeOrigHead
Write original HEAD commit into $GIT_DIR/ORIG_HEAD.- Parameters:
head
- an object id of the original HEAD commit ornull
to delete the file- Throws:
IOException
-
readOrigHead
Return the information stored in the file $GIT_DIR/ORIG_HEAD.- Returns:
- object id from ORIG_HEAD file or
null
if this file doesn't exist. Also if the file exists but is emptynull
will be returned - Throws:
IOException
NoWorkTreeException
- if this is bare, which implies it has no working directory. SeeisBare()
.
-
readSquashCommitMsg
Return the information stored in the file $GIT_DIR/SQUASH_MSG. In this file operations triggering a squashed merge will store a template for the commit message of the squash commit.- Returns:
- a String containing the content of the SQUASH_MSG file or
null
if this file doesn't exist - Throws:
IOException
NoWorkTreeException
- if this is bare, which implies it has no working directory. SeeisBare()
.
-
writeSquashCommitMsg
Write new content to the file $GIT_DIR/SQUASH_MSG. In this file operations triggering a squashed merge will store a template for the commit message of the squash commit. Ifnull
is specified as message the file will be deleted.- Parameters:
msg
- the message which should be written ornull
to delete the file- Throws:
IOException
-
readCommitMsgFile
- Throws:
IOException
-
writeCommitMsg
- Throws:
IOException
-
readGitDirectoryFile
Read a file from the git directory.- Parameters:
filename
-- Returns:
- the raw contents or
null
if the file doesn't exist or is empty - Throws:
IOException
-
writeHeadsFile
private void writeHeadsFile(List<? extends ObjectId> heads, String filename) throws FileNotFoundException, IOException Write the given heads to a file in the git directory.- Parameters:
heads
- a list of object ids to write or null if the file should be deleted.filename
-- Throws:
FileNotFoundException
IOException
-
readRebaseTodo
@NonNull public List<RebaseTodoLine> readRebaseTodo(String path, boolean includeComments) throws IOException Read a file formatted like the git-rebase-todo file. The "done" file is also formatted like the git-rebase-todo file. These files can be found in .git/rebase-merge/ or .git/rebase-append/ folders.- Parameters:
path
- path to the file relative to the repository's git-dir. E.g. "rebase-merge/git-rebase-todo" or "rebase-append/done"includeComments
-true
if also comments should be reported- Returns:
- the list of steps
- Throws:
IOException
- Since:
- 3.2
-
writeRebaseTodoFile
public void writeRebaseTodoFile(String path, List<RebaseTodoLine> steps, boolean append) throws IOException Write a file formatted like a git-rebase-todo file.- Parameters:
path
- path to the file relative to the repository's git-dir. E.g. "rebase-merge/git-rebase-todo" or "rebase-append/done"steps
- the steps to be writtenappend
- whether to append to an existing file or to write a new file- Throws:
IOException
- Since:
- 3.2
-
getRemoteNames
Get the names of all known remotes- Returns:
- the names of all known remotes
- Since:
- 3.4
-
autoGC
Check whether any housekeeping is required; if yes, run garbage collection; if not, exit without performing any work. Some JGit commands run autoGC after performing operations that could create many loose objects.Currently this option is supported for repositories of type
FileRepository
only. SeeGC.setAuto(boolean)
for configuration details.- Parameters:
monitor
- to report progress- Since:
- 4.6
-
getRefDatabase().getRefs()
instead.