public class HgRepository extends AbstractStandaloneRepository implements AdvancedConfigurationAwareRepository, BranchInformationProvider, BranchMergingAwareRepository, CacheHandler, CachingAwareRepository, CommitIsolationAwareRepository, CustomSourceDirectoryAwareRepository, CustomVariableProviderRepository, DeploymentAwareRepository, EditActionAwareRepository, HgRepositoryFacade, MavenPomAccessorCapableRepository, PushCapableRepository, RequirementsAwareRepository, SharedCredentialDepender, ScmTypePublishingRepository, TestConnectionAwareRepository, UniqueRevisionIdRepository
ContainerAccessor.createBean(Class)
and can't use autowired dependencies yet.CachingAwareRepository.CachableOperation| Modifier and Type | Field and Description |
|---|---|
HgRepositoryAccessData |
accessData |
static Pattern |
branchesPattern |
static String |
DEFAULT_BRANCH |
static Duration |
DEFAULT_COMMAND_TIMEOUT |
administrationConfigurationAccessor, BUILD_TRIGGER_IP, buildDirectoryManager, buildLoggerManager, customVariableContext, featureManager, REPO_PREFIX, repositoryModuleDescriptor, templateRenderer, textProvidermoduleDescriptorSELECTED_REPOSITORY, UNKNOWN_HOSTCOMMIT_ISOLATION_OPTIONHOST_KEYFILTER_PATTERN_EXCLUDE, FILTER_PATTERN_INCLUDE, FILTER_PATTERN_NONE, FILTER_PATTERN_OPTION, FILTER_PATTERN_REGEXCHANGESET_FILTER_PATTERN_REGEX, MAVEN_RELEASE_PLUGIN_EXCLUSION_PATTERN| Constructor and Description |
|---|
HgRepository() |
| Modifier and Type | Method and Description |
|---|---|
void |
addDefaultValues(BuildConfiguration buildConfiguration)
Extension point for adding default values to the form for
RenderableBuildConfiguration.getEditHtml(com.atlassian.bamboo.ww2.actions.build.admin.create.BuildConfiguration, com.atlassian.bamboo.plan.Plan) |
void |
beforeEditPageRendering(org.apache.commons.configuration.HierarchicalConfiguration configuration)
Action to be taken before rendering the edit page.
|
ErrorCollection |
beforeSave(org.apache.commons.configuration.HierarchicalConfiguration configuration)
Action to be taken before repository is saved from the UI.
|
static String |
branchOrDefault(String branch) |
BuildRepositoryChanges |
collectChangesForRevision(PlanKey planKey,
String targetRevision)
Collects the changes for the targetRevision.
|
BuildRepositoryChanges |
collectChangesSinceLastBuild(String planKey,
String lastVcsRevisionKey)
Collects the changes since the lastVcsRevisionKey.
|
String |
commit(File sourceDirectory,
String message)
Perform a commit (dvcs commit).
|
void |
deleteCaches(Collection<String> keys,
com.opensymphony.xwork.ValidationAware feedback)
Delete the specified caches, handling internal data updates etc.
|
void |
deleteUnusedCaches(com.opensymphony.xwork.ValidationAware feedback)
Delete all unused caches.
|
HgRepositoryAccessData |
getAccessData()
Returns raw access data: - repositoryUrl/branch/username are not substituted - password/sshKey/sshPassphrase are
not decrypted
|
static File |
getCacheBaseDirectory(BuildDirectoryManager buildDirectoryManager)
Separate static method so we can define the cache base directory in one place
|
Collection<CacheDescription> |
getCacheDescriptions()
Collection of cache descriptions to be displayed in the admin UI.
|
File |
getCacheDirectory() |
static File |
getCacheDirectory(File baseDirectory,
String repositoryUrl,
String username) |
CacheId |
getCacheId(CachingAwareRepository.CachableOperation cachableOperation)
Cache id has to fulfill the following:
Given two Repository objects A and B, returning equal CacheId (in terms of equals()) and a cachable operation foo(),
in the following sequence of calls made in a short time period:
1.
|
Map<String,String> |
getCustomVariables()
Return a map containing name->value mapping of the variables.
|
CommitContext |
getFirstCommit()
Retrieve the commit that created the Branch.
|
String |
getHandlerDescription()
Additional information about this cache type that would be displayed in UI.
|
String |
getHgExeCapability() |
HgRepository |
getHgRepository() |
String |
getHost()
What's the repository server host
|
CommitContext |
getLastCommit()
Retrieve last commit on the branch set on this Repository.
|
String |
getLocationIdentifier()
A string representing the location of the repository
|
MavenPomAccessor |
getMavenPomAccessor() |
protected int |
getMaxCommitsToReturn() |
String |
getName()
The display name for the repository type
|
List<VcsBranch> |
getOpenBranches(String context)
Set of open branches that are discovered in the repository. |
String |
getOptionDescription() |
List<ImmutablePlan> |
getOtherPlansSharingCache(Plan current) |
Map<String,String> |
getPlanRepositoryVariables()
Return a map containing name->value mapping of the plan repository format variables.
|
URI |
getRemoteUri() |
Set<Requirement> |
getRequirements() |
String |
getScm()
Get a string representing the name of the repository type.
|
Iterable<Long> |
getSharedCredentialIds()
Returns a list of shared credential ids used by this class.
|
String |
getSshExeCapability() |
HgRepositoryAccessData |
getSubstitutedAccessData()
Returns processed access data: - repositoryUrl/branch/username are substituted - password/sshKey/sshPassphrase
are decrypted - username/password are extracted from repositoryUrl if not set explicitly
|
HgRepositoryUIHelper |
getUIHelper()
Implementation of
AbstractStandaloneRepository.getAdvancedEditHtml(org.apache.commons.configuration.HierarchicalConfiguration) prevents us from customizing the context |
VcsBranch |
getVcsBranch() |
void |
init(com.atlassian.plugin.ModuleDescriptor moduleDescriptor)
Initialises the Plugin with the plugin module descriptor
|
boolean |
isCachingSupportedFor(CachingAwareRepository.CachableOperation cachableOperation) |
boolean |
isCommitIsolationEnabled()
Whether or not commits will be broken up into individual builds
|
boolean |
isHgExecutableSet()
For configuration screens
|
boolean |
isMergingSupported() |
List<BuildRepositoryChanges> |
isolateCommits(BuildRepositoryChanges buildChanges)
Break the single build changes object into a list of
BuildRepositoryChanges. |
boolean |
isRepositoryDifferent(Repository repository)
Checks if the current repo is the same as the given repository
|
boolean |
isSharedCredentialsDeleted() |
protected boolean |
isWorkspaceEmpty(File sourceCodeDirectory) |
boolean |
mergeWorkspaceWith(BuildContext buildContext,
File workspace,
String targetRevision)
Merges a workspace located in checkout directory with the target revision.
|
void |
populateFromConfig(org.apache.commons.configuration.HierarchicalConfiguration hierarchicalConfiguration)
Update the current object with data in the
HierarchicalConfiguration |
void |
prepareConfigObject(BuildConfiguration buildConfiguration)
Do any preprocessing work before validation occurs.
|
void |
pushRevision(File sourceDirectory,
String vcsRevisionKey)
Push the specified revision to the remote directory.
|
String |
retrieveSourceCode(BuildContext buildContext,
String vcsRevisionKey,
File sourceDirectory)
Checks out the latest source code from an appropriate repository to specified directory
|
String |
retrieveSourceCode(BuildContext buildContext,
String vcsRevisionKey,
File sourceDirectory,
int depth)
So far mercurial cannot retrieve a "shallow" clone of repository so we're ignoring depth argument
|
void |
setBranchIntegrationHelper(VcsBranchIntegrationHelper branchIntegrationHelper) |
void |
setCapabilityContext(CapabilityContext capabilityContext) |
void |
setCommitIsolationEnabled(boolean commitIsolationEnabled) |
void |
setCredentialsAccessor(CredentialsAccessor credentialsAccessor) |
void |
setHgCacheHandler(HgCacheHandler hgCacheHandler) |
void |
setHgRepositoryUIHelper(HgRepositoryUIHelper hgRepositoryUIHelper) |
void |
setHgRepositoryValidator(HgRepositoryValidator hgRepositoryValidator) |
void |
setI18nResolver(com.atlassian.sal.api.message.I18nResolver i18nResolver) |
void |
setScopedExclusionService(ScopedExclusionService scopedExclusionService) |
void |
setSshProxyService(SshProxyService sshProxyService) |
void |
setTrustedKeyHelper(TrustedKeyHelper trustedKeyHelper) |
void |
setVcsBranch(VcsBranch branch)
Set and prepare the repository for using an arbitrary branch.
|
ErrorCollection |
testConnection(long timeout,
TimeUnit unit)
Test connection to the repository within the given timeout.
|
org.apache.commons.configuration.HierarchicalConfiguration |
toConfiguration()
Generate a
HierarchicalConfiguration from the current state of the object |
boolean |
usePollingForBranchDetection()
If Bamboo generic detection polling should be used for this repository
|
ErrorCollection |
validate(BuildConfiguration buildConfiguration)
Validates the properties in the
BuildConfiguration object. |
ErrorCollection |
validateForConnectionTesting(BuildConfiguration buildConfiguration)
A method similar to
BuildConfigurationAwarePlugin.validate(BuildConfiguration) used to validate repository configuration
before connection testing. |
getAdvancedEditHtml, getAdvancedViewHtml, getEditHtml, getViewHtml, getViewHtmlcheckConnection, customizeBuildRequirements, getAdvancedEditHtml, getAdvancedViewHtml, getBranchIntegrationEditHtml, getChangesetFilterPatternRegex, getDefaultTriggerModule, getDescription, getEditHtml, getFilterFilePatternOption, getFilterFilePatternRegex, getKey, getMavenPomCheckoutAccessEditHtml, getMaxRetries, getMinimalEditHtml, getPollingTriggerModule, getQuietPeriod, getShortKey, getSourceCodeDirectory, getSystemWideExclusionPatterns, getViewHtml, getWorkingDirectory, isAdvancedOptionEnabled, isQuietPeriodEnabled, removeBuildRequirements, setAdministrationConfigurationAccessor, setBuildDirectoryManager, setBuildLoggerManager, setChangesetFilterPatternRegex, setCustomVariableContext, setFeatureManager, setFilterFilePatternOption, setFilterFilePatternRegex, setTemplateRenderer, setTextProvider, setWorkingDir, substituteString, toMergeCapableRepositorypopulateContextForEdit, populateContextForViewclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitgetAdvancedEditHtml, getAdvancedViewHtmlcheckConnection, getKey, getMinimalEditHtml, getShortKeygetSourceCodeDirectorycustomizeBuildRequirements, removeBuildRequirementsisConfigurationMissinggetEditHtml, getViewHtmlgetDescriptiongetBranchIntegrationEditHtmlgetKeypublic static final String DEFAULT_BRANCH
public static final Duration DEFAULT_COMMAND_TIMEOUT
public static final Pattern branchesPattern
public HgRepositoryAccessData accessData
public void init(@NotNull
com.atlassian.plugin.ModuleDescriptor moduleDescriptor)
InitablePluginModuleinit in interface InitablePluginModuleinit in class AbstractRepositorymoduleDescriptor - Plugin module descriptor@NotNull public String getName()
RepositorygetName in interface CacheHandlergetName in interface RepositorygetName in interface DescriptionProvidergetName in interface NameProviderpublic String getHost()
RepositorygetHost in interface Repository@NotNull public String getLocationIdentifier()
RepositorygetLocationIdentifier in interface RepositorygetLocationIdentifier in class AbstractRepositorypublic boolean isRepositoryDifferent(@NotNull
Repository repository)
RepositoryV2isRepositoryDifferent in interface RepositoryV2repository - to compare against@NotNull public File getCacheDirectory()
public static File getCacheBaseDirectory(BuildDirectoryManager buildDirectoryManager)
buildDirectoryManager - buildDirectoryManager to get the locations fromDeleteHgCacheDirectoryOnAgentMessage@NotNull public static File getCacheDirectory(File baseDirectory, String repositoryUrl, @Nullable String username)
@NotNull public String commit(@NotNull File sourceDirectory, @NotNull String message) throws RepositoryException
PushCapableRepositorycommit in interface PushCapableRepositorysourceDirectory - - which workspace directory to perform the commitmessage - - what message use for commitRepositoryException - - when something goes wrongpublic void pushRevision(@NotNull
File sourceDirectory,
@Nullable
String vcsRevisionKey)
throws RepositoryException
PushCapableRepositorypushRevision in interface PushCapableRepositorysourceDirectory - - the working directory of the repository we want to push fromvcsRevisionKey - - the revisionKey (usually a branch name) to pushRepositoryException - - when something goes wrong@NotNull public List<VcsBranch> getOpenBranches(@Nullable String context) throws RepositoryException
BranchDetectionCapableRepositorySet of open branches that are discovered in the repository. Returns empty collection if no branches at
all (can that happen?). Used for monitoring repositories for new branches.
An open branch is a branch that is considered 'open' by underlying VCS - it has nothing to do with the actual
development on that branch (recent commits or so).getOpenBranches in interface BranchDetectionCapableRepositoryList of branch names. May be empty.RepositoryExceptionpublic CacheId getCacheId(@NotNull CachingAwareRepository.CachableOperation cachableOperation)
CachingAwareRepositorygetCacheId in interface CachingAwareRepositorypublic boolean isCachingSupportedFor(@NotNull
CachingAwareRepository.CachableOperation cachableOperation)
isCachingSupportedFor in interface CachingAwareRepository@NotNull public VcsBranch getVcsBranch()
getVcsBranch in interface BranchAwareRepositorypublic void setVcsBranch(@NotNull
VcsBranch branch)
BranchAwareRepositorysetVcsBranch in interface BranchAwareRepositorypublic CommitContext getLastCommit() throws RepositoryException
BranchDetectionCapableRepositorygetLastCommit in interface BranchDetectionCapableRepositoryRepositoryExceptionpublic CommitContext getFirstCommit() throws RepositoryException
BranchDetectionCapableRepositorygetFirstCommit in interface BranchDetectionCapableRepositoryRepositoryExceptionprotected int getMaxCommitsToReturn()
getMaxCommitsToReturn in class AbstractRepository@NotNull public BuildRepositoryChanges collectChangesSinceLastBuild(@NotNull String planKey, @Nullable String lastVcsRevisionKey) throws RepositoryException
RepositoryV2collectChangesSinceLastBuild in interface RepositoryV2lastVcsRevisionKey - can be null, if null you should ensure the correct vcsrevisionkey is returned in the BuildChanges object.RepositoryException - if something goes wrong@NotNull public BuildRepositoryChanges collectChangesForRevision(@NotNull PlanKey planKey, @NotNull String targetRevision) throws RepositoryException
OnceOffCapableRepositorycollectChangesForRevision in interface OnceOffCapableRepositorycollectChangesForRevision in class AbstractRepositoryRepositoryException - if something goes wrong@NotNull public String retrieveSourceCode(@NotNull BuildContext buildContext, @Nullable String vcsRevisionKey, @NotNull File sourceDirectory) throws RepositoryException
CustomSourceDirectoryAwareRepositoryretrieveSourceCode in interface CustomSourceDirectoryAwareRepositoryvcsRevisionKey - - may be null if you want latest codesourceDirectory - - directory to checkout toRepositoryException@NotNull public String retrieveSourceCode(@NotNull BuildContext buildContext, @Nullable String vcsRevisionKey, @NotNull File sourceDirectory, int depth) throws RepositoryException
retrieveSourceCode in interface BranchMergingAwareRepositoryvcsRevisionKey - - may be null if you want latest codesourceDirectory - - directory to checkout todepth - - how many historical revisions we'd like to check out (-1 means all revisions)RepositoryExceptionpublic boolean mergeWorkspaceWith(@NotNull
BuildContext buildContext,
@NotNull
File workspace,
@NotNull
String targetRevision)
throws RepositoryException
BranchMergingAwareRepositorymergeWorkspaceWith in interface BranchMergingAwareRepositorybuildContext - the build context of build doing the mergeworkspace - the workspace to use for mergetargetRevision - the revision to merge withRepositoryExceptionpublic boolean isMergingSupported()
isMergingSupported in interface BranchMergingAwareRepository@NotNull public Set<Requirement> getRequirements()
getRequirements in interface RequirementsAwareRepositorypublic void addDefaultValues(@NotNull
BuildConfiguration buildConfiguration)
BuildConfigurationAwarePluginRenderableBuildConfiguration.getEditHtml(com.atlassian.bamboo.ww2.actions.build.admin.create.BuildConfiguration, com.atlassian.bamboo.plan.Plan)addDefaultValues in interface BuildConfigurationAwarePluginaddDefaultValues in class AbstractRepositorybuildConfiguration - -public void prepareConfigObject(@NotNull
BuildConfiguration buildConfiguration)
BuildConfigurationAwarePluginprepareConfigObject in interface BuildConfigurationAwarePluginprepareConfigObject in class BaseBuildConfigurationAwarePluginbuildConfiguration - -public void beforeEditPageRendering(@NotNull
org.apache.commons.configuration.HierarchicalConfiguration configuration)
EditActionAwareRepositorybeforeEditPageRendering in interface EditActionAwareRepositoryconfiguration - configuration to be loaded into the UIpublic ErrorCollection beforeSave(@NotNull org.apache.commons.configuration.HierarchicalConfiguration configuration)
EditActionAwareRepositorybeforeSave in interface EditActionAwareRepositorypublic void populateFromConfig(@NotNull
org.apache.commons.configuration.HierarchicalConfiguration hierarchicalConfiguration)
ConvertibleFromConfigHierarchicalConfigurationpopulateFromConfig in interface ConvertibleFromConfigpopulateFromConfig in class AbstractRepository@NotNull public org.apache.commons.configuration.HierarchicalConfiguration toConfiguration()
ConvertibleFromConfigHierarchicalConfiguration from the current state of the objecttoConfiguration in interface ConvertibleFromConfigtoConfiguration in class AbstractRepositoryHierarchicalConfiguration. Never null@NotNull public Map<String,String> getCustomVariables()
CustomVariableProviderRepositoryNull values will be filtered out so it's safe to put them in the map.
getCustomVariables in interface CustomVariableProviderRepository@NotNull public Map<String,String> getPlanRepositoryVariables()
CustomVariableProviderRepositoryNull values will be filtered out so it's safe to put them in the map.
getPlanRepositoryVariables in interface CustomVariableProviderRepository@NotNull public ErrorCollection validateForConnectionTesting(@NotNull BuildConfiguration buildConfiguration)
TestConnectionAwareRepositoryBuildConfigurationAwarePlugin.validate(BuildConfiguration) used to validate repository configuration
before connection testing.
This method may be more relaxed than normal validation. Additionally, different error messages may be displayed
(e.g. related to impossibility of transferring files).validateForConnectionTesting in interface TestConnectionAwareRepositorybuildConfiguration - repository configuration to validate@NotNull public ErrorCollection validate(@NotNull BuildConfiguration buildConfiguration)
BuildConfigurationAwarePluginBuildConfiguration object. The name of the properties match those passed
in through the form fragments in RenderableBuildConfiguration.getEditHtml(com.atlassian.bamboo.ww2.actions.build.admin.create.BuildConfiguration, com.atlassian.bamboo.plan.Plan) template.validate in interface BuildConfigurationAwarePluginvalidate in class AbstractRepositorybuildConfiguration - -ErrorCollection keyed by the field name.@NotNull public ErrorCollection testConnection(long timeout, @NotNull TimeUnit unit)
TestConnectionAwareRepositorytestConnection in interface TestConnectionAwareRepositorytimeout - the maximum time to waitunit - the time unit of the timeout argument@NotNull public MavenPomAccessor getMavenPomAccessor()
getMavenPomAccessor in interface MavenPomAccessorCapableRepositoryprotected boolean isWorkspaceEmpty(File sourceCodeDirectory)
isWorkspaceEmpty in class AbstractRepository@NotNull public String getHandlerDescription()
CacheHandlerThis should include information about any non-obvious details like scheduling remote agent operations.
getHandlerDescription in interface CacheHandler@NotNull public Collection<CacheDescription> getCacheDescriptions()
CacheHandlergetCacheDescriptions in interface CacheHandlerpublic void deleteCaches(@NotNull
Collection<String> keys,
@NotNull
com.opensymphony.xwork.ValidationAware feedback)
CacheHandlerdeleteCaches in interface CacheHandlerkeys - keys from CacheDescription.getKey()feedback - consumer of UI messagespublic void deleteUnusedCaches(@NotNull
com.opensymphony.xwork.ValidationAware feedback)
CacheHandlerIt's the responsibility of the implementing class to figure out which caches are currently unused and optionally delete such caches on remote agents.
deleteUnusedCaches in interface CacheHandlerfeedback - consumer of UI messages@NotNull public List<BuildRepositoryChanges> isolateCommits(@NotNull BuildRepositoryChanges buildChanges)
CommitIsolationAwareRepositoryBuildRepositoryChanges. Must not be null. May return an empty
list but that doesn't actually make any sense. BuildRepositoryChanges
will be more likely to be built than lower changes, which may be discarded.isolateCommits in interface CommitIsolationAwareRepositorypublic boolean isCommitIsolationEnabled()
CommitIsolationAwareRepositoryisCommitIsolationEnabled in interface CommitIsolationAwareRepositorypublic void setCommitIsolationEnabled(boolean commitIsolationEnabled)
public HgRepositoryAccessData getAccessData()
public HgRepositoryAccessData getSubstitutedAccessData()
public boolean isHgExecutableSet()
@Nullable public String getHgExeCapability()
@Nullable public String getSshExeCapability()
@Nullable public URI getRemoteUri()
public List<ImmutablePlan> getOtherPlansSharingCache(Plan current)
public String getOptionDescription()
public void setBranchIntegrationHelper(VcsBranchIntegrationHelper branchIntegrationHelper)
public void setScopedExclusionService(ScopedExclusionService scopedExclusionService)
public boolean usePollingForBranchDetection()
BranchInformationProviderusePollingForBranchDetection in interface BranchInformationProvider@Nullable public HgRepository getHgRepository()
getHgRepository in interface HgRepositoryFacade@NotNull public Iterable<Long> getSharedCredentialIds()
SharedCredentialDependergetSharedCredentialIds in interface SharedCredentialDependerpublic boolean isSharedCredentialsDeleted()
public HgRepositoryUIHelper getUIHelper()
AbstractStandaloneRepository.getAdvancedEditHtml(org.apache.commons.configuration.HierarchicalConfiguration) prevents us from customizing the contextpublic void setCapabilityContext(CapabilityContext capabilityContext)
public void setCredentialsAccessor(CredentialsAccessor credentialsAccessor)
public void setHgCacheHandler(HgCacheHandler hgCacheHandler)
public void setHgRepositoryUIHelper(HgRepositoryUIHelper hgRepositoryUIHelper)
public void setHgRepositoryValidator(HgRepositoryValidator hgRepositoryValidator)
public void setI18nResolver(com.atlassian.sal.api.message.I18nResolver i18nResolver)
public void setSshProxyService(SshProxyService sshProxyService)
public void setTrustedKeyHelper(TrustedKeyHelper trustedKeyHelper)
public String getScm()
ScmTypePublishingRepositorygetScm in interface ScmTypePublishingRepositoryCopyright © 2018 Atlassian Software Systems Pty Ltd. All rights reserved.