Package com.atlassian.bamboo.plugins.git
Class JGitOperationHelper
- java.lang.Object
-
- com.atlassian.bamboo.plugins.git.AbstractGitOperationHelper
-
- com.atlassian.bamboo.plugins.git.JGitOperationHelper
-
- All Implemented Interfaces:
GitOperationHelper
public class JGitOperationHelper extends AbstractGitOperationHelper
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static interface
JGitOperationHelper.WithFetchConnectionCallback<E extends Throwable,T>
protected static interface
JGitOperationHelper.WithRepositoryCallback<E extends Throwable,V>
protected static interface
JGitOperationHelper.WithTransportCallback<E extends Throwable,T>
-
Field Summary
Fields Modifier and Type Field Description static String
PUSH_IS_NOT_SUPPORTED
-
Fields inherited from class com.atlassian.bamboo.plugins.git.AbstractGitOperationHelper
accessData, buildLogger, CHANGESET_LIMIT, DEFAULT_TRANSFER_TIMEOUT, FQREF_PREFIXES, i18nResolver, trustedKeyHelper
-
-
Constructor Summary
Constructors Constructor Description JGitOperationHelper(GitRepositoryAccessData accessData, @NotNull BuildLogger buildLogger, @NotNull com.atlassian.sal.api.message.I18nResolver i18nResolver, @NotNull TrustedKeyHelper trustedKeyHelper)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description @NotNull String
checkout(@Nullable File cacheDirectory, @NotNull File sourceDirectory, @NotNull String targetRevision, @Nullable String previousRevision)
@NotNull String
checkout(@Nullable File cacheDirectory, @NotNull File sourceDirectory, @NotNull String targetRevision, @Nullable String previousRevision, boolean fetchLfsFiles)
boolean
checkRevisionExistsInCacheRepository(@NotNull File repositoryDirectory, @NotNull String targetRevision)
@NotNull String
commit(@NotNull File sourceDirectory, @NotNull String message, @NotNull String committerName, @NotNull String committerEmail, boolean stageModifications)
void
createBranch(@NotNull File sourceDirectory, @NotNull String branchName)
void
createLightweightTag(@NotNull File sourceDirectory, @NotNull String tagName, @NotNull String revision)
protected org.eclipse.jgit.lib.Repository
createLocalRepository(File workingDirectory, @Nullable File cacheDirectory)
BuildRepositoryChanges
extractCommits(@NotNull File directory, @Nullable String startingRevision, @Nullable String endingRevision)
BuildRepositoryChanges
extractCommits(File cacheDirectory, @NotNull String startingRevision, String endingRevision, String path)
BuildRepositoryChanges
extractCommitsBetweenBranches(File cacheDirectory, VcsBranch otherBranch, boolean limitChangeList)
void
fetch(@NotNull File sourceDirectory, @NotNull HashAndSource refAndHash, boolean useShallow)
void
fetch(@NotNull File sourceDirectory, @NotNull HashAndSource refAndHash, boolean useShallow, boolean fetchTagsByDefault)
void
fetch(@NotNull File sourceDirectory, @NotNull HashAndSource refAndHash, boolean useShallow, boolean fetchTagsByDefault, boolean fetchLfsFiles)
void
fetch(@NotNull File sourceDirectory, @NotNull String targetRevision, boolean useShallow)
void
fetch(@NotNull File sourceDirectory, @NotNull String targetRevision, boolean useShallow, boolean fetchTagsByDefault)
void
fetch(@NotNull File sourceDirectory, @NotNull String targetRevision, boolean useShallow, boolean fetchTagsByDefault, boolean fetchLfsFiles)
@NotNull Optional<String>
getBranchForSha(@NotNull File sourceDirectory, String revision, String configuredBranch)
@NotNull CommitContext
getCommit(File directory, String targetRevision)
Gets the commit for the revision, given a working directory.String
getCurrentBranch(@NotNull File checkoutPath)
@NotNull String
getCurrentRevision(@NotNull File sourceDirectory)
@NotNull List<VcsBranch>
getOpenBranches(@NotNull GitRepositoryAccessData repositoryData, File workingDir)
protected String
getRevision(File sourceDirectory, @NotNull String revision)
@Nullable String
getShaOfRefIfExists(@NotNull File sourceDirectory, @NotNull String ref)
List<TagAndRevision>
getTagsForRepository(@NotNull GitRepositoryAccessData accessData)
boolean
isAncestor(@NotNull Path gitWorkspace, @NotNull GitHash rev1, @NotNull GitHash rev2)
Returns true if you can reach rev1 by following parent relationship starting from rev2.boolean
isClean(@NotNull File sourceDirectory)
boolean
merge(@NotNull File workspaceDir, @NotNull String targetRevision, @NotNull String committerName, @NotNull String committerEmail)
Pair<Boolean,String>
mergeAndReturnHead(@NotNull File workspaceDir, @NotNull String currentRevision, @NotNull String targetRevision, @NotNull String committerName, @NotNull String committerEmail)
@NotNull HashAndSource
obtainLatestRevision()
Optional<GitHash>
obtainLatestRevision(@NotNull File repositoryDirectory, GitRef ref, String path)
void
pushBranchOrTag(@NotNull File sourceDirectory, @NotNull String branchName)
void
pushRevision(@NotNull File sourceDirectory, @NotNull String revision, @Nullable String currentBranch)
Pushes arbitrary revision (refspec?) back to the upstream repo.void
stageChanges(@NotNull File sourceDirectory, @NotNull Collection<String> filePaths)
protected <E extends Throwable,T>
TwithFetchConnection(@NotNull org.eclipse.jgit.lib.Repository repository, @NotNull GitRepositoryAccessData accessData, @NotNull JGitOperationHelper.WithFetchConnectionCallback<E,T> callback)
protected <E extends Throwable,T>
TwithFetchConnection(@NotNull org.eclipse.jgit.transport.Transport transport, @NotNull JGitOperationHelper.WithFetchConnectionCallback<E,T> callback)
protected <E extends Throwable,T>
TwithTransport(@NotNull org.eclipse.jgit.lib.Repository repository, @NotNull GitRepositoryAccessData accessData, @NotNull JGitOperationHelper.WithTransportCallback<E,T> callback)
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.atlassian.bamboo.plugins.git.GitOperationHelper
commit
-
-
-
-
Field Detail
-
PUSH_IS_NOT_SUPPORTED
@VisibleForTesting public static final String PUSH_IS_NOT_SUPPORTED
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
JGitOperationHelper
public JGitOperationHelper(GitRepositoryAccessData accessData, @NotNull @NotNull BuildLogger buildLogger, @NotNull @NotNull com.atlassian.sal.api.message.I18nResolver i18nResolver, @NotNull @NotNull TrustedKeyHelper trustedKeyHelper)
-
-
Method Detail
-
commit
@NotNull public @NotNull String commit(@NotNull @NotNull File sourceDirectory, @NotNull @NotNull String message, @NotNull @NotNull String committerName, @NotNull @NotNull String committerEmail, boolean stageModifications) throws RepositoryException
- Throws:
RepositoryException
-
stageChanges
public void stageChanges(@NotNull @NotNull File sourceDirectory, @NotNull @NotNull Collection<String> filePaths) throws RepositoryException
- Throws:
RepositoryException
-
merge
public boolean merge(@NotNull @NotNull File workspaceDir, @NotNull @NotNull String targetRevision, @NotNull @NotNull String committerName, @NotNull @NotNull String committerEmail)
-
mergeAndReturnHead
public Pair<Boolean,String> mergeAndReturnHead(@NotNull @NotNull File workspaceDir, @NotNull @NotNull String currentRevision, @NotNull @NotNull String targetRevision, @NotNull @NotNull String committerName, @NotNull @NotNull String committerEmail) throws RepositoryException
- Throws:
RepositoryException
-
pushRevision
public void pushRevision(@NotNull @NotNull File sourceDirectory, @NotNull @NotNull String revision, @Nullable @Nullable String currentBranch) throws RepositoryException
Pushes arbitrary revision (refspec?) back to the upstream repo.- Throws:
RepositoryException
-
pushBranchOrTag
public void pushBranchOrTag(@NotNull @NotNull File sourceDirectory, @NotNull @NotNull String branchName) throws RepositoryException
- Throws:
RepositoryException
-
checkout
@NotNull public @NotNull String checkout(@Nullable @Nullable File cacheDirectory, @NotNull @NotNull File sourceDirectory, @NotNull @NotNull String targetRevision, @Nullable @Nullable String previousRevision, boolean fetchLfsFiles) throws RepositoryException
- Throws:
RepositoryException
-
checkout
@NotNull public @NotNull String checkout(@Nullable @Nullable File cacheDirectory, @NotNull @NotNull File sourceDirectory, @NotNull @NotNull String targetRevision, @Nullable @Nullable String previousRevision) throws RepositoryException
- Throws:
RepositoryException
-
fetch
public void fetch(@NotNull @NotNull File sourceDirectory, @NotNull @NotNull String targetRevision, boolean useShallow, boolean fetchTagsByDefault) throws RepositoryException
- Throws:
RepositoryException
-
fetch
public void fetch(@NotNull @NotNull File sourceDirectory, @NotNull @NotNull String targetRevision, boolean useShallow, boolean fetchTagsByDefault, boolean fetchLfsFiles) throws RepositoryException
- Throws:
RepositoryException
-
fetch
public void fetch(@NotNull @NotNull File sourceDirectory, @NotNull @NotNull HashAndSource refAndHash, boolean useShallow, boolean fetchTagsByDefault) throws RepositoryException
- Throws:
RepositoryException
-
fetch
public void fetch(@NotNull @NotNull File sourceDirectory, @NotNull @NotNull String targetRevision, boolean useShallow) throws RepositoryException
- Throws:
RepositoryException
-
fetch
public void fetch(@NotNull @NotNull File sourceDirectory, @NotNull @NotNull HashAndSource refAndHash, boolean useShallow) throws RepositoryException
- Throws:
RepositoryException
-
fetch
public void fetch(@NotNull @NotNull File sourceDirectory, @NotNull @NotNull HashAndSource refAndHash, boolean useShallow, boolean fetchTagsByDefault, boolean fetchLfsFiles) throws RepositoryException
- Throws:
RepositoryException
-
getCurrentRevision
@NotNull public @NotNull String getCurrentRevision(@NotNull @NotNull File sourceDirectory) throws RepositoryException
- Throws:
RepositoryException
-
getTagsForRepository
public List<TagAndRevision> getTagsForRepository(@NotNull @NotNull GitRepositoryAccessData accessData) throws RepositoryException
- Throws:
RepositoryException
-
getCurrentBranch
public String getCurrentBranch(@NotNull @NotNull File checkoutPath) throws RepositoryException
- Throws:
RepositoryException
-
isClean
public boolean isClean(@NotNull @NotNull File sourceDirectory) throws RepositoryException
- Throws:
RepositoryException
-
getRevision
protected String getRevision(File sourceDirectory, @NotNull @NotNull String revision) throws RepositoryException
- Throws:
RepositoryException
-
getShaOfRefIfExists
@Nullable public @Nullable String getShaOfRefIfExists(@NotNull @NotNull File sourceDirectory, @NotNull @NotNull String ref)
-
obtainLatestRevision
@NotNull public @NotNull HashAndSource obtainLatestRevision() throws RepositoryException
- Throws:
RepositoryException
-
getOpenBranches
@NotNull public @NotNull List<VcsBranch> getOpenBranches(@NotNull @NotNull GitRepositoryAccessData repositoryData, File workingDir) throws RepositoryException
- Throws:
RepositoryException
-
checkRevisionExistsInCacheRepository
public boolean checkRevisionExistsInCacheRepository(@NotNull @NotNull File repositoryDirectory, @NotNull @NotNull String targetRevision) throws IOException, RepositoryException
- Parameters:
repositoryDirectory
- directory where repository is fetchedtargetRevision
- revision to find in repository- Returns:
- true if revision found
- Throws:
IOException
- thrown when revision not found (MissingObjectException)RepositoryException
-
extractCommitsBetweenBranches
public BuildRepositoryChanges extractCommitsBetweenBranches(File cacheDirectory, VcsBranch otherBranch, boolean limitChangeList)
-
createLocalRepository
protected org.eclipse.jgit.lib.Repository createLocalRepository(File workingDirectory, @Nullable @Nullable File cacheDirectory) throws IOException
- Throws:
IOException
-
extractCommits
public BuildRepositoryChanges extractCommits(@NotNull @NotNull File directory, @Nullable @Nullable String startingRevision, @Nullable @Nullable String endingRevision) throws RepositoryException
- Throws:
RepositoryException
-
extractCommits
public BuildRepositoryChanges extractCommits(File cacheDirectory, @NotNull @NotNull String startingRevision, String endingRevision, String path) throws RepositoryException
- Throws:
RepositoryException
-
getBranchForSha
@NotNull public @NotNull Optional<String> getBranchForSha(@NotNull @NotNull File sourceDirectory, String revision, String configuredBranch) throws RepositoryException
- Returns:
- branch that contains sha and matches the name of configuredBranch
- Throws:
RepositoryException
-
obtainLatestRevision
public Optional<GitHash> obtainLatestRevision(@NotNull @NotNull File repositoryDirectory, GitRef ref, String path)
-
isAncestor
public boolean isAncestor(@NotNull @NotNull Path gitWorkspace, @NotNull @NotNull GitHash rev1, @NotNull @NotNull GitHash rev2) throws RepositoryException
Description copied from interface:GitOperationHelper
Returns true if you can reach rev1 by following parent relationship starting from rev2.- Throws:
RepositoryException
-
createBranch
public void createBranch(@NotNull @NotNull File sourceDirectory, @NotNull @NotNull String branchName) throws RepositoryException
- Throws:
RepositoryException
-
createLightweightTag
public void createLightweightTag(@NotNull @NotNull File sourceDirectory, @NotNull @NotNull String tagName, @NotNull @NotNull String revision) throws RepositoryException
- Throws:
RepositoryException
-
getCommit
@NotNull public @NotNull CommitContext getCommit(File directory, String targetRevision) throws RepositoryException
Description copied from interface:GitOperationHelper
Gets the commit for the revision, given a working directory.- Throws:
RepositoryException
- if the revision can't be found
-
withTransport
@Nullable protected <E extends Throwable,T> T withTransport(@NotNull @NotNull org.eclipse.jgit.lib.Repository repository, @NotNull @NotNull GitRepositoryAccessData accessData, @NotNull @NotNull JGitOperationHelper.WithTransportCallback<E,T> callback) throws E extends Throwable, RepositoryException
- Throws:
E extends Throwable
RepositoryException
-
withFetchConnection
protected <E extends Throwable,T> T withFetchConnection(@NotNull @NotNull org.eclipse.jgit.transport.Transport transport, @NotNull @NotNull JGitOperationHelper.WithFetchConnectionCallback<E,T> callback) throws E extends Throwable, org.eclipse.jgit.errors.NotSupportedException, org.eclipse.jgit.errors.TransportException
- Throws:
E extends Throwable
org.eclipse.jgit.errors.NotSupportedException
org.eclipse.jgit.errors.TransportException
-
withFetchConnection
protected <E extends Throwable,T> T withFetchConnection(@NotNull @NotNull org.eclipse.jgit.lib.Repository repository, @NotNull @NotNull GitRepositoryAccessData accessData, @NotNull @NotNull JGitOperationHelper.WithFetchConnectionCallback<E,T> callback) throws E extends Throwable, RepositoryException, org.eclipse.jgit.errors.NotSupportedException, org.eclipse.jgit.errors.TransportException
- Throws:
E extends Throwable
RepositoryException
org.eclipse.jgit.errors.NotSupportedException
org.eclipse.jgit.errors.TransportException
-
-