From 5fbb55ffa41a6549cef99567e902b5d379314049 Mon Sep 17 00:00:00 2001 From: Tim Branyen Date: Thu, 9 Apr 2015 10:58:51 -0400 Subject: [PATCH 1/2] Attempt remove the delete keyword --- lib/clone.js | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/clone.js b/lib/clone.js index b1388b589..6fb2dbade 100644 --- a/lib/clone.js +++ b/lib/clone.js @@ -18,7 +18,6 @@ Clone.clone = function(url, local_path, options) { if (options) { remoteCallbacks = options.remoteCallbacks; - delete options.remoteCallbacks; } options = normalizeOptions(options, NodeGit.CloneOptions); From c31ea4e3e5f2209e464f6d38d33752811801dee2 Mon Sep 17 00:00:00 2001 From: Tim Date: Mon, 20 Apr 2015 16:31:16 -0400 Subject: [PATCH 2/2] Shallow clone before mutating the options object --- lib/clone.js | 3 +++ lib/utils/shallow_clone.js | 10 ++++++++++ 2 files changed, 13 insertions(+) create mode 100644 lib/utils/shallow_clone.js diff --git a/lib/clone.js b/lib/clone.js index 6fb2dbade..8efdae739 100644 --- a/lib/clone.js +++ b/lib/clone.js @@ -1,4 +1,5 @@ var NodeGit = require("../"); +var shallowClone = require("./utils/shallow_clone"); var normalizeOptions = NodeGit.Utils.normalizeOptions; var Clone = NodeGit.Clone; @@ -17,7 +18,9 @@ Clone.clone = function(url, local_path, options) { var remoteCallbacks; if (options) { + options = shallowClone(options); remoteCallbacks = options.remoteCallbacks; + delete options.remoteCallbacks; } options = normalizeOptions(options, NodeGit.CloneOptions); diff --git a/lib/utils/shallow_clone.js b/lib/utils/shallow_clone.js new file mode 100644 index 000000000..f93e67523 --- /dev/null +++ b/lib/utils/shallow_clone.js @@ -0,0 +1,10 @@ +module.exports = function(obj) { + var merges = Array.prototype.slice.call(arguments, 1); + + return merges.reduce(function(obj, merge) { + return Object.keys(merge).reduce(function(obj, key) { + obj[key] = merge[key]; + return obj; + }, obj); + }, obj || {}); +};