Skip to content

Commit 1a2404a

Browse files
committed
Fire a callback describe merge operations before they occur
Used to inform caller that a merge will be taking place since a merge may or may not occur in hotfix/release
1 parent 10b63de commit 1a2404a

File tree

4 files changed

+12
-4
lines changed

4 files changed

+12
-4
lines changed

docs/Hotfix.md

+1
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ Finishes a git flow "hotfix"
4545
| keepBranch | Boolean | Keep the branch after merge |
4646
| message | String | Tag will be created with this message |
4747
| processMergeMessageCallback | Function | Callback that is fired before merge occurs. If the callback returns a Promise, the **processMergeMessageCallback** promise must succeed before the merge occurs. The result of the **processMergeMessageCallback** must be a string or a promise that resolves to a string, as that message will be used for the merge message. the **processMergeMessageCallback** will be called with the generated merge message as a parameter. |
48+
| beforeMergeCallback | Function | Callback fired immediately before a merge occurs. Is parameterized by targetBranchName and hotFixBranchName |
4849
| postDevelopMergeCallback | Function | Callback fired after a successful merge with development occurs. |
4950
| postMasterMergeCallback | Function | Callback fired after a successful merge with master occurs. |
5051

docs/Release.md

+1
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ Finishes a git flow "release"
4545
| keepBranch | Boolean | Keep the branch after merge |
4646
| message | String | Tag will be created with this message |
4747
| processMergeMessageCallback | Function | Callback that is fired before merge occurs. If the callback returns a Promise, the **processMergeMessageCallback** promise must succeed before the merge occurs. The result of the **processMergeMessageCallback** must be a string or a promise that resolves to a string, as that message will be used for the merge message. the **processMergeMessageCallback** will be called with the generated merge message as a parameter. |
48+
| beforeMergeCallback | Function | Callback fired immediately before a merge occurs. Is parameterized by targetBranchName and releaseBranchName |
4849
| postDevelopMergeCallback | Function | Callback fired after a successful merge with development occurs. |
4950
| postMasterMergeCallback | Function | Callback fired after a successful merge with master occurs. |
5051

src/Hotfix.js

+5-2
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ class Hotfix {
6767
keepBranch,
6868
message,
6969
processMergeMessageCallback,
70+
beforeMergeCallback = () => {},
7071
postDevelopMergeCallback = () => {},
7172
postMasterMergeCallback = () => {}
7273
} = options;
@@ -122,7 +123,8 @@ class Hotfix {
122123

123124
// Merge hotfix into develop
124125
if (!cancelDevelopMerge) {
125-
return utils.Repo.merge(developBranch, hotfixBranch, repo, processMergeMessageCallback)
126+
return Promise.resolve(beforeMergeCallback(developBranch, hotfixBranch))
127+
.then(() => utils.Repo.merge(developBranch, hotfixBranch, repo, processMergeMessageCallback))
126128
.then(utils.InjectIntermediateCallback(postDevelopMergeCallback));
127129
}
128130
return Promise.resolve();
@@ -133,7 +135,8 @@ class Hotfix {
133135
const tagName = versionPrefix + hotfixVersion;
134136
// Merge the hotfix branch into master
135137
if (!cancelMasterMerge) {
136-
return utils.Repo.merge(masterBranch, hotfixBranch, repo, processMergeMessageCallback)
138+
return Promise.resolve(beforeMergeCallback(masterBranch, hotfixBranch))
139+
.then(() => utils.Repo.merge(masterBranch, hotfixBranch, repo, processMergeMessageCallback))
137140
.then(utils.InjectIntermediateCallback(postMasterMergeCallback))
138141
.then((oid) => utils.Tag.create(oid, tagName, message, repo));
139142
}

src/Release.js

+5-2
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ class Release {
7474
keepBranch,
7575
message,
7676
processMergeMessageCallback,
77+
beforeMergeCallback = () => {},
7778
postDevelopMergeCallback = () => {},
7879
postMasterMergeCallback = () => {}
7980
} = options;
@@ -129,7 +130,8 @@ class Release {
129130

130131
// Merge release into develop
131132
if (!cancelDevelopMerge) {
132-
return utils.Repo.merge(developBranch, releaseBranch, repo, processMergeMessageCallback)
133+
return Promise.resolve(beforeMergeCallback(developBranch, releaseBranch))
134+
.then(() => utils.Repo.merge(developBranch, releaseBranch, repo, processMergeMessageCallback))
133135
.then(utils.InjectIntermediateCallback(postDevelopMergeCallback));
134136
}
135137
return Promise.resolve();
@@ -140,7 +142,8 @@ class Release {
140142
const tagName = versionPrefix + releaseVersion;
141143
// Merge the release branch into master
142144
if (!cancelMasterMerge) {
143-
return utils.Repo.merge(masterBranch, releaseBranch, repo, processMergeMessageCallback)
145+
return Promise.resolve(beforeMergeCallback(masterBranch, releaseBranch))
146+
.then(() => utils.Repo.merge(masterBranch, releaseBranch, repo, processMergeMessageCallback))
144147
.then(utils.InjectIntermediateCallback(postMasterMergeCallback))
145148
.then((oid) => utils.Tag.create(oid, tagName, message, repo));
146149
}

0 commit comments

Comments
 (0)