Class FileRepository


  • public class FileRepository
    extends Repository
    Represents a Git repository. A repository holds all objects and refs used for managing source code (could by any type of file, but source code is what SCM's are typically used for). In Git terms all data is stored in GIT_DIR, typically a directory called .git. A work tree is maintained unless the repository is a bare repository. Typically the .git directory is located at the root of the work dir.
    • GIT_DIR
      • objects/ - objects
      • refs/ - tags and heads
      • config - configuration
      • info/ - more configurations

    This class is thread-safe.

    This implementation only handles a subtly undocumented subset of git features.

    • Constructor Detail

      • FileRepository

        public FileRepository​(java.io.File gitDir)
                       throws java.io.IOException
        Construct a representation of a Git repository.

        The work tree, object directory, alternate object directories and index file locations are deduced from the given git directory and the default rules by running FileRepositoryBuilder. This constructor is the same as saying:

         new FileRepositoryBuilder().setGitDir(gitDir).build()
         
        Parameters:
        gitDir - GIT_DIR (the location of the repository metadata).
        Throws:
        java.io.IOException - the repository appears to already exist but cannot be accessed.
        See Also:
        FileRepositoryBuilder
      • FileRepository

        public FileRepository​(java.lang.String gitDir)
                       throws java.io.IOException
        A convenience API for FileRepository(File).
        Parameters:
        gitDir - GIT_DIR (the location of the repository metadata).
        Throws:
        java.io.IOException - the repository appears to already exist but cannot be accessed.
        See Also:
        FileRepositoryBuilder
      • FileRepository

        public FileRepository​(BaseRepositoryBuilder options)
                       throws java.io.IOException
        Create a repository using the local file system.
        Parameters:
        options - description of the repository's important paths.
        Throws:
        java.io.IOException - the user configuration file or repository configuration file cannot be accessed.
    • Method Detail

      • create

        public void create​(boolean bare)
                    throws java.io.IOException
        Create a new Git repository initializing the necessary files and directories.
        Specified by:
        create in class Repository
        Parameters:
        bare - if true, a bare repository is created.
        Throws:
        java.io.IOException - in case of IO problem
      • getObjectsDirectory

        public java.io.File getObjectsDirectory()
        Returns:
        the directory containing the objects owned by this repository.
      • getRefDatabase

        public RefDatabase getRefDatabase()
        Specified by:
        getRefDatabase in class Repository
        Returns:
        the reference database which stores the reference namespace.
      • getAdditionalHaves

        public java.util.Set<ObjectId> getAdditionalHaves()
        Objects known to exist but not expressed by Repository.getAllRefs().

        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.

        Overrides:
        getAdditionalHaves in class Repository
        Returns:
        unmodifiable collection of other known objects.
      • openPack

        public void openPack​(java.io.File pack)
                      throws java.io.IOException
        Add a single existing pack to the list of available pack files.
        Parameters:
        pack - path of the pack file to open.
        Throws:
        java.io.IOException - index file could not be opened, read, or is not recognized as a Git pack file index.
      • scanForRepoChanges

        public void scanForRepoChanges()
                                throws java.io.IOException
        Description copied from class: Repository
        Force a scan for changed refs.
        Specified by:
        scanForRepoChanges in class Repository
        Throws:
        java.io.IOException
      • getReflogReader

        public ReflogReader getReflogReader​(java.lang.String refName)
                                     throws java.io.IOException
        Specified by:
        getReflogReader in class Repository
        Parameters:
        refName -
        Returns:
        a ReflogReader for the supplied refname, or null if the named ref does not exist.
        Throws:
        java.io.IOException - the ref could not be accessed.