UNPKG

pj-nodegit

Version:

Node.js libgit2 asynchronous native bindings

58 lines (52 loc) 2.45 kB
"use strict"; var NodeGit = require("../"); var Merge = NodeGit.Merge; var _commits = Merge.commits; var _merge = Merge.merge; var _file = Merge.file; /** * Merge two files as they exist in the in-memory data structures, using * the given common ancestor as the baseline. (git_merge_file) * * @param {MergeFileInput} ancestor The contents of the ancestor file * @param {MergeFileInput} ours The contents of the file in "our" side * @param {MergeFileInput} theirs The contents of the file in "theirs" side * @param {MergeFileOptions} [options] The merge file options * or `NULL` for defaults */ Merge.file = function (ancestor, ours, theirs, options) { ancestor = normalizeOptions(ancestor, NodeGit.MergeFileInput); ours = normalizeOptions(ours, NodeGit.MergeFileInput); theirs = normalizeOptions(theirs, NodeGit.MergeFileInput); options = normalizeOptions(options || {}, NodeGit.MergeFileOptions); return _file.call(this, ancestor, ours, theirs, options); }; /** * Merge 2 commits together and create an new index that can * be used to create a merge commit. * * @param {Repository} repo Repository that contains the given commits * @param {Commit} ourCommit The commit that reflects the destination tree * @param {Commit} theirCommit The commit to merge into ourCommit * @param {MergeOptions} [options] The merge tree options (null for default) */ Merge.commits = function (repo, ourCommit, theirCommit, options) { return Promise.all([repo.getCommit(ourCommit), repo.getCommit(theirCommit)]).then(function (commits) { return _commits.call(this, repo, commits[0], commits[1], options); }); }; /** * Merge a commit into HEAD and writes the results to the working directory. * * @param {Repository} repo Repository that contains the given commits * @param {AnnotatedCommit} theirHead The annotated commit to merge into HEAD * @param {MergeOptions} [mergeOpts] The merge tree options (null for default) * @param {CheckoutOptions} [checkoutOpts] The checkout options * (null for default) */ Merge.merge = function (repo, theirHead, mergeOpts, checkoutOpts) { // Even though git_merge takes an array of annotated_commits, it expects // exactly one to have been passed in or it will throw an error... ¯\_(ツ)_/¯ var theirHeads = [theirHead]; return _merge.call(this, repo, theirHeads, theirHeads.length, mergeOpts, checkoutOpts); };