From 7548684f193af1b1878c16f98cb464a3c74a016c Mon Sep 17 00:00:00 2001 From: Ian Hattendorf Date: Wed, 17 Apr 2019 09:29:29 -0700 Subject: [PATCH 1/3] Support signing in Repository#mergeBranches --- lib/repository.js | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/lib/repository.js b/lib/repository.js index 22f10668f..f7ad2de5b 100644 --- a/lib/repository.js +++ b/lib/repository.js @@ -1686,6 +1686,7 @@ Repository.prototype.refreshIndex = function(callback) { * @param {Signature} signature * @param {Merge.PREFERENCE} mergePreference * @param {MergeOptions} mergeOptions + * @param {MergeBranchOptions} mergeBranchOptions * @return {Oid|Index} A commit id for a succesful merge or an index for a * merge with conflicts */ @@ -1695,13 +1696,19 @@ Repository.prototype.mergeBranches = function( signature, mergePreference, mergeOptions, - processMergeMessageCallback + mergeBranchOptions ) { const repo = this; let fromBranch; let toBranch; - processMergeMessageCallback = processMergeMessageCallback || + // Support old parameter `processMergeMessageCallback` + const isOldOptionParameter = typeof mergeBranchOptions === "function"; + const processMergeMessageCallback = mergeBranchOptions && + (isOldOptionParameter ? + mergeBranchOptions : + mergeBranchOptions.processMergeMessageCallback) || function (message) { return message; }; + const signingCallback = mergeBranchOptions && mergeBranchOptions.signingCb; mergePreference = mergePreference || NodeGit.Merge.PREFERENCE.NONE; mergeOptions = normalizeOptions(mergeOptions, NodeGit.MergeOptions); @@ -1819,6 +1826,17 @@ Repository.prototype.mergeBranches = function( return Promise.all([oid, processMergeMessageCallback(message)]); }) .then(([oid, message]) => { + if (signingCallback) { + return repo.createCommitWithSignature( + toBranch.name(), + signature, + signature, + message, + oid, + [toCommitOid, fromCommitOid], + signingCallback + ); + } return repo.createCommit( toBranch.name(), signature, From 4259208f653abfc48e4cad8581fbc9f5ee35e196 Mon Sep 17 00:00:00 2001 From: Ian Hattendorf Date: Wed, 17 Apr 2019 15:23:07 -0700 Subject: [PATCH 2/3] Add deprecation warning for Repository#mergeBranches parameter --- lib/repository.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/repository.js b/lib/repository.js index f7ad2de5b..f311900eb 100644 --- a/lib/repository.js +++ b/lib/repository.js @@ -1703,6 +1703,10 @@ Repository.prototype.mergeBranches = function( let toBranch; // Support old parameter `processMergeMessageCallback` const isOldOptionParameter = typeof mergeBranchOptions === "function"; + if (isOldOptionParameter) { + console.error("DeprecationWarning: Repository#mergeBranches parameter " + + "processMergeMessageCallback, use MergeBranchOptions"); + } const processMergeMessageCallback = mergeBranchOptions && (isOldOptionParameter ? mergeBranchOptions : From 17aca8c2cb4983288c925dff278d8a9b3e86178e Mon Sep 17 00:00:00 2001 From: Ian Hattendorf Date: Wed, 17 Apr 2019 15:23:42 -0700 Subject: [PATCH 3/3] Don't use newly deprecated parameter in tests --- test/tests/merge.js | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/test/tests/merge.js b/test/tests/merge.js index 80bb0589d..00387da82 100644 --- a/test/tests/merge.js +++ b/test/tests/merge.js @@ -646,9 +646,11 @@ describe("Merge", function() { ourSignature, NodeGit.Merge.PREFERENCE.NO_FASTFORWARD, null, - function(message) { - assert(message === "Merge branch 'theirs' into ours"); - return "We manipulated the message, HAH."; + { + processMergeMessageCallback: function(message) { + assert(message === "Merge branch 'theirs' into ours"); + return "We manipulated the message, HAH."; + } } ); }) @@ -803,9 +805,11 @@ describe("Merge", function() { ourSignature, NodeGit.Merge.PREFERENCE.NO_FASTFORWARD, null, - function(message) { - assert(message === "Merge branch 'theirs' into ours"); - return Promise.resolve("We manipulated the message, HAH."); + { + processMergeMessageCallback: function(message) { + assert(message === "Merge branch 'theirs' into ours"); + return Promise.resolve("We manipulated the message, HAH."); + } } ); })