@@ -70,7 +70,14 @@ class Feature {
7070 * @return {Commit } The commit created by finishing the feature
7171 */
7272 static finishFeature ( repo , featureName , options = { } ) {
73- const { keepBranch, isRebase, processMergeMessageCallback} = options ;
73+ const {
74+ keepBranch,
75+ isRebase,
76+ preRebaseCallback = ( ) => { } ,
77+ processMergeMessageCallback,
78+ postMergeCallback = ( ) => { } ,
79+ beforeRebaseFinishCallback = ( ) => { }
80+ } = options ;
7481
7582 if ( ! repo ) {
7683 return Promise . reject ( new Error ( 'Repo is required' ) ) ;
@@ -86,10 +93,11 @@ class Feature {
8693 let featureCommit ;
8794 let cancelDevelopMerge ;
8895 let mergeCommit ;
96+ let developBranchName ;
8997 let featureBranchName ;
9098 return Config . getConfig ( repo )
9199 . then ( ( config ) => {
92- const developBranchName = config [ 'gitflow.branch.develop' ] ;
100+ developBranchName = config [ 'gitflow.branch.develop' ] ;
93101 featureBranchName = config [ 'gitflow.prefix.feature' ] + featureName ;
94102
95103 return Promise . all (
@@ -113,9 +121,11 @@ class Feature {
113121 cancelDevelopMerge = isSameCommit || isRebase ;
114122
115123 if ( ! cancelDevelopMerge ) {
116- return utils . Repo . merge ( developBranch , featureBranch , repo , processMergeMessageCallback ) ;
124+ return utils . Repo . merge ( developBranch , featureBranch , repo , processMergeMessageCallback )
125+ . then ( utils . InjectIntermediateCallback ( postMergeCallback ) ) ;
117126 } else if ( isRebase && ! isSameCommit ) {
118- return utils . Repo . rebase ( developBranch , featureBranch , repo ) ;
127+ return Promise . resolve ( preRebaseCallback ( developBranchName , featureBranchName ) )
128+ . then ( ( ) => utils . Repo . rebase ( developBranch , featureBranch , repo , beforeRebaseFinishCallback ) ) ;
119129 }
120130 return Promise . resolve ( ) ;
121131 } )
0 commit comments