Class PreBuildMerge
- java.lang.Object
-
- hudson.model.AbstractDescribableImpl<GitSCMExtension>
-
- hudson.plugins.git.extensions.GitSCMExtension
-
- hudson.plugins.git.extensions.impl.PreBuildMerge
-
- All Implemented Interfaces:
Describable<GitSCMExtension>
public class PreBuildMerge extends GitSCMExtension
Speculatively merge the selected commit with another branch before the build to answer the "what happens if I were to integrate this feature branch back to the master?" question.- Author:
- Nigel Magney, Nicolas Deloof, Andrew Bayer, Kohsuke Kawaguchi
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
PreBuildMerge.DescriptorImpl
-
Constructor Summary
Constructors Constructor Description PreBuildMerge(UserMergeOptions options)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
decorateMergeCommand(GitSCM scm, Run<?,?> build, org.jenkinsci.plugins.gitclient.GitClient git, TaskListener listener, org.jenkinsci.plugins.gitclient.MergeCommand cmd)
Called before aMergeCommand
is executed to allow extensions to alter its behaviour.hudson.plugins.git.Revision
decorateRevisionToBuild(GitSCM scm, Run<?,?> build, org.jenkinsci.plugins.gitclient.GitClient git, TaskListener listener, hudson.plugins.git.Revision marked, hudson.plugins.git.Revision rev)
Called afterBuildChooser
selects the revision to pick for this build, but beforeboolean
equals(Object o)
UserMergeOptions
getOptions()
GitClientType
getRequiredClient()
Let extension declare required GitClient implementation.int
hashCode()
String
toString()
-
Methods inherited from class hudson.plugins.git.extensions.GitSCMExtension
beforeCheckout, beforeCheckout, decorate, decorateCheckoutCommand, decorateCheckoutCommand, decorateCloneCommand, decorateCloneCommand, decorateFetchCommand, decorateFetchCommand, decorateMergeCommand, decorateRevisionToBuild, determineSupportForJGit, enableMultipleRevisionDetection, getDescriptor, getWorkingDirectory, getWorkingDirectory, isRevExcluded, onCheckoutCompleted, onCheckoutCompleted, onClean, populateEnvironmentVariables, requiresWorkspaceForPolling
-
-
-
-
Constructor Detail
-
PreBuildMerge
@DataBoundConstructor public PreBuildMerge(UserMergeOptions options)
-
-
Method Detail
-
getOptions
public UserMergeOptions getOptions()
-
decorateRevisionToBuild
public hudson.plugins.git.Revision decorateRevisionToBuild(GitSCM scm, Run<?,?> build, org.jenkinsci.plugins.gitclient.GitClient git, TaskListener listener, hudson.plugins.git.Revision marked, hudson.plugins.git.Revision rev) throws hudson.plugins.git.GitException, IOException, InterruptedException
Description copied from class:GitSCMExtension
Called afterBuildChooser
selects the revision to pick for this build, but beforeThis allows extensions to select a derived revision (for example by merging another branch into the chosen revision and returning it) or manipulate the state of the working tree (such as running git-clean.)
GitSCMExtension.decorateRevisionToBuild(GitSCM, Run, GitClient, TaskListener, Revision, Revision)
vsBuildChooser
BuildChooser
and this method are similar in the sense that they both participate in the process of determining what commits to build. So when a plugin wants to control the commit to be built, you have a choice of these two approaches. The rule of the thumb is to ask yourself if your process takes another commit as an input.BuildChooser
is suitable when you do not take any commit as a parameter, and need to precisely control what commit to build. For example the gerrit-trigger plugin looks at a specific build parameter, then retrieves that commit from Gerrit and builds that.GitSCMExtension.decorateRevisionToBuild(GitSCM, Run, GitClient, TaskListener, Revision, Revision)
is suitable when you accept arbitrary revision as an input and then create some derivative commits and then build that result. The primary example is for speculative merge with another branch (people use this to answer the question of "what happens if I were to integrate this feature branch back to the master branch?")- Overrides:
decorateRevisionToBuild
in classGitSCMExtension
- Parameters:
scm
- GitSCM objectbuild
- run contextgit
- GitClient objectlistener
- build logmarked
- The revision that started this build. (e.g. pre-merge)rev
- The revision selected for this build.- Returns:
- The revision selected for this build. Unless you are decorating the given
rev
, return the value given in therev
parameter. - Throws:
hudson.plugins.git.GitException
- on git errorIOException
- on input or output errorInterruptedException
- when interrupted
-
decorateMergeCommand
public void decorateMergeCommand(GitSCM scm, Run<?,?> build, org.jenkinsci.plugins.gitclient.GitClient git, TaskListener listener, org.jenkinsci.plugins.gitclient.MergeCommand cmd) throws IOException, InterruptedException, hudson.plugins.git.GitException
Description copied from class:GitSCMExtension
Called before aMergeCommand
is executed to allow extensions to alter its behaviour.- Overrides:
decorateMergeCommand
in classGitSCMExtension
- Parameters:
scm
- GitSCM objectbuild
- run contextgit
- GitClientlistener
- build logcmd
- merge command to be decorated- Throws:
IOException
- on input or output errorInterruptedException
- when interruptedhudson.plugins.git.GitException
- on git error
-
getRequiredClient
public GitClientType getRequiredClient()
Description copied from class:GitSCMExtension
Let extension declare required GitClient implementation. git-plugin will then detect conflicts, and fallback to globally configured default git client- Overrides:
getRequiredClient
in classGitSCMExtension
- Returns:
- git client type required for this extension
-
-