Class FileResolver<C>

java.lang.Object
org.eclipse.jgit.transport.resolver.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.
  • Field Details

  • Constructor Details

    • 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 Details

    • open

      Locate and open a reference to a Repository.

      The caller is responsible for closing the returned Repository.

      Specified by:
      open in interface RepositoryResolver<C>
      Parameters:
      req - the current request, may be used to inspect session state including cookies or user authentication.
      name - name of the repository, as parsed out of the URL.
      Returns:
      the opened repository instance, never null.
      Throws:
      RepositoryNotFoundException - the repository does not exist or the name is incorrectly formatted as a repository name.
      ServiceNotEnabledException - the repository may exist, but HTTP access is not allowed on the target repository, for the current user.
    • 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

      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.
    • nameWithDotGit

      private static String nameWithDotGit(String name)
    • isUnreasonableName

      private static boolean isUnreasonableName(String name)