Class FileResolver<C>

  • Type Parameters:
    C - type of connection
    All Implemented Interfaces:
    RepositoryResolver<C>

    public class FileResolver<C>
    extends Object
    implements RepositoryResolver<C>
    Default resolver serving from the local filesystem.
    • Constructor Detail

      • FileResolver

        public FileResolver()
        Initialize an empty file based resolver.
      • FileResolver

        public FileResolver​(File basePath,
                            boolean exportAll)
        Create a new resolver for the given path.
        Parameters:
        basePath - the base path all repositories are rooted under.
        exportAll - if true, exports all repositories, ignoring the check for the git-daemon-export-ok files.
    • Method Detail

      • isExportAll

        public boolean isExportAll()
        Whether git-daemon-export-ok is required to export a repository
        Returns:
        false if git-daemon-export-ok is required to export a repository; true if git-daemon-export-ok is ignored.
        See Also:
        setExportAll(boolean)
      • setExportAll

        public void setExportAll​(boolean export)
        Set whether or not to export all repositories.

        If false (the default), repositories must have a git-daemon-export-ok file to be accessed through this daemon.

        If true, all repositories are available through the daemon, whether or not git-daemon-export-ok exists.

        Parameters:
        export - a boolean.
      • exportRepository

        public void exportRepository​(String name,
                                     Repository db)
        Add a single repository to the set that is exported by this daemon.

        The existence (or lack-thereof) of git-daemon-export-ok is ignored by this method. The repository is always published.

        Parameters:
        name - name the repository will be published under.
        db - the repository instance.
      • exportDirectory

        public void exportDirectory​(File dir)
        Recursively export all Git repositories within a directory.
        Parameters:
        dir - the directory to export. This directory must not itself be a git repository, but any directory below it which has a file named git-daemon-export-ok will be published.
      • isExportOk

        protected boolean isExportOk​(C req,
                                     String repositoryName,
                                     Repository db)
                              throws IOException
        Check if this repository can be served.

        The default implementation of this method returns true only if either isExportAll() is true, or the git-daemon-export-ok file is present in the repository's directory.

        Parameters:
        req - the current HTTP request.
        repositoryName - name of the repository, as present in the URL.
        db - the opened repository instance.
        Returns:
        true if the repository is accessible; false if not.
        Throws:
        IOException - the repository could not be accessed, the caller will claim the repository does not exist.