Package org.eclipse.jgit.util
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
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
LfsFactory.LfsInputStream
Encapsulate a potentially exchangedInputStream
along with the expected stream content length.static interface
LfsFactory.LfsInstallCommand
A command to enable LFS.
-
Constructor Summary
Constructors Modifier Constructor Description protected
LfsFactory()
Constructor
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description LfsFactory.LfsInputStream
applyCleanFilter(Repository db, InputStream input, long length, Attribute attribute)
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.ObjectLoader
applySmudgeFilter(Repository db, ObjectLoader loader, Attribute attribute)
Apply smudge filtering to a given loader, potentially redirecting it to a LFS blob which is downloaded on demand.static Attributes
getAttributesForPath(Repository db, String path)
static Attributes
getAttributesForPath(Repository db, String path, RevCommit commit)
Get attributes for given path and commitLfsFactory.LfsInstallCommand
getInstallCommand()
Retrieve anLfsFactory.LfsInstallCommand
which can be used to enable LFS support (if available) either per repository or for the user.static LfsFactory
getInstance()
PrePushHook
getPrePushHook(Repository repo, PrintStream outputStream)
Retrieve a pre-push hook to be applied using the default error stream.PrePushHook
getPrePushHook(Repository repo, PrintStream outputStream, PrintStream errorStream)
Retrieve a pre-push hook to be applied.boolean
isAvailable()
boolean
isEnabled(Repository db)
static void
setInstance(LfsFactory instance)
-
-
-
Method Detail
-
getInstance
public static LfsFactory getInstance()
- Returns:
- the current LFS implementation
-
setInstance
public static void setInstance(LfsFactory instance)
- Parameters:
instance
- register aLfsFactory
instance as theLfsFactory
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 repositoryinput
- the original inputlength
- the expected input stream lengthattribute
- 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 repositoryloader
- the loader for the blobattribute
- 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
- theRepository
the hook is applied to.outputStream
-- Returns:
- a
PrePushHook
implementation ornull
-
getPrePushHook
@Nullable public PrePushHook getPrePushHook(Repository repo, PrintStream outputStream, PrintStream errorStream)
Retrieve a pre-push hook to be applied.- Parameters:
repo
- theRepository
the hook is applied to.outputStream
-errorStream
-- Returns:
- a
PrePushHook
implementation ornull
- Since:
- 5.6
-
getInstallCommand
@Nullable public LfsFactory.LfsInstallCommand getInstallCommand()
Retrieve anLfsFactory.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 repositorypath
- 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 repositorypath
- the path to find attributes forcommit
- the commit to inspect.- Returns:
- the
Attributes
for the given path. - Throws:
IOException
- in case of an error
-
-