Interface BranchDetectionService

All Known Implementing Classes:
BranchDetectionServiceImpl

public interface BranchDetectionService
A service for polling VCS repositories for open branches and creating new branches for plans. This service is responsible for throttling the detection requests.
  • Method Details

    • scheduleBranchDetectionForRepository

      boolean scheduleBranchDetectionForRepository(long repositoryId)
      Schedules branch detection for given repository
    • detectBranchesForRepository

      void detectBranchesForRepository(long repositoryId, boolean ignoreChainsConfig)
      Immediately executes branch detection for a given repository and creates new plan branches for chains using this repository as default. This method blocks until the detection is finished.
      Parameters:
      repositoryId - id of the repository
      ignoreChainsConfig - allows to force branch creation and cleanup for all related chains. If true branch detection will be executed even if a chain is not configured to automatically manage branches.
    • scheduleBranchListInitialisation

      boolean scheduleBranchListInitialisation(@NotNull @NotNull Chain chain)
      Schedules initialisation of existing vcs branch list. The next branch detection for the chain will only seek for existing branches but will not create any ChainBranches.
      Parameters:
      chain - chain which vcs branches list should be initialized
      Returns:
      false if another detection for this chain is already in progress or in queue
      Throws:
      IllegalStateException - if plan doesn't have default repository
    • getOpenBranches

      @NotNull @NotNull Optional<List<VcsBranch>> getOpenBranches(@NotNull @NotNull VariableSubstitutor variableSubstitutor, @NotNull @NotNull VcsRepositoryData vcsRepositoryData, @NotNull @NotNull VcsBranchDetector branchDetector, @Nullable @Nullable ErrorCollection errorCollection, @NotNull @NotNull Iterable<ImmutableChain> chains)
      Returns a list of currently open branches for given repository. List ordering determined by underlying repository (preference is for native ordering e.g. last updated first for hg)
      Parameters:
      variableSubstitutor - variable substitutor to use for substituting repository configuration
      vcsRepositoryData - the repository
      branchDetector - executor responsible for branch detection
      errorCollection - errors collection to add errors to
      chains - list of chains against which errors will be recorded
      Returns:
      list of branches open in VCS or nothing if there's been an error fetching branches
    • createChainBranch

      @Deprecated PlanKey createChainBranch(@NotNull @NotNull ImmutableChain chain, @NotNull @NotNull String branchName, @Nullable @Nullable VcsBranch vcsBranch, @Nullable @Nullable BuildConfiguration buildConfiguration, @NotNull PlanCreationService.EnablePlan enablePlan, boolean enableExpiry) throws PlanCreationDeniedException
      Deprecated.
      temporary workaround
      Temporary workaround for branchinator to work. Don't use! TODO jmajkutewicz BDEV-15595: remove after branchinator is adapted to new api
      Throws:
      PlanCreationDeniedException