Class LfsFactory

java.lang.Object
org.eclipse.jgit.util.LfsFactory
Direct Known Subclasses:
BuiltinLFS

public class LfsFactory extends Object
Represents an optionally present LFS support implementation
Since:
4.11
  • Field Details

  • Constructor Details

    • LfsFactory

      protected LfsFactory()
      Constructor
  • Method Details

    • getInstance

      public static LfsFactory getInstance()
      Returns:
      the current LFS implementation
    • setInstance

      public static void setInstance(LfsFactory instance)
      Parameters:
      instance - register a LfsFactory instance as the LfsFactory implementation to use.
    • isAvailable

      public boolean isAvailable()
      Returns:
      whether LFS support is available
    • applyCleanFilter

      public LfsFactory.LfsInputStream applyCleanFilter(Repository db, InputStream input, long length, Attribute attribute) throws IOException
      Apply clean filtering to the given stream, writing the file content to the LFS storage if required and returning a stream to the LFS pointer instead.
      Parameters:
      db - the repository
      input - the original input
      length - the expected input stream length
      attribute - the attribute used to check for LFS enablement (i.e. "merge", "diff", "filter" from .gitattributes).
      Returns:
      a stream to the content that should be written to the object store along with the expected length of the stream. the original stream is not applicable.
      Throws:
      IOException - in case of an error
    • applySmudgeFilter

      public ObjectLoader applySmudgeFilter(Repository db, ObjectLoader loader, Attribute attribute) throws IOException
      Apply smudge filtering to a given loader, potentially redirecting it to a LFS blob which is downloaded on demand.
      Parameters:
      db - the repository
      loader - the loader for the blob
      attribute - the attribute used to check for LFS enablement (i.e. "merge", "diff", "filter" from .gitattributes).
      Returns:
      a loader for the actual data of a blob, or the original loader in case LFS is not applicable.
      Throws:
      IOException
    • getPrePushHook

      @Nullable public PrePushHook getPrePushHook(Repository repo, PrintStream outputStream)
      Retrieve a pre-push hook to be applied using the default error stream.
      Parameters:
      repo - the Repository the hook is applied to.
      outputStream -
      Returns:
      a PrePushHook implementation or null
    • getPrePushHook

      @Nullable public PrePushHook getPrePushHook(Repository repo, PrintStream outputStream, PrintStream errorStream)
      Retrieve a pre-push hook to be applied.
      Parameters:
      repo - the Repository the hook is applied to.
      outputStream -
      errorStream -
      Returns:
      a PrePushHook implementation or null
      Since:
      5.6
    • getInstallCommand

      @Nullable public LfsFactory.LfsInstallCommand getInstallCommand()
      Retrieve an LfsFactory.LfsInstallCommand which can be used to enable LFS support (if available) either per repository or for the user.
      Returns:
      a command to install LFS support.
    • isEnabled

      public boolean isEnabled(Repository db)
      Parameters:
      db - the repository to check
      Returns:
      whether LFS is enabled for the given repository locally or globally.
    • getAttributesForPath

      public static Attributes getAttributesForPath(Repository db, String path) throws IOException
      Parameters:
      db - the repository
      path - the path to find attributes for
      Returns:
      the Attributes for the given path.
      Throws:
      IOException - in case of an error
    • getAttributesForPath

      public static Attributes getAttributesForPath(Repository db, String path, RevCommit commit) throws IOException
      Get attributes for given path and commit
      Parameters:
      db - the repository
      path - the path to find attributes for
      commit - the commit to inspect.
      Returns:
      the Attributes for the given path.
      Throws:
      IOException - in case of an error