UNPKG

bit-bin

Version:

<a href="https://opensource.org/licenses/Apache-2.0"><img alt="apache" src="https://img.shields.io/badge/License-Apache%202.0-blue.svg"></a> <a href="https://github.com/teambit/bit/blob/master/CONTRIBUTING.md"><img alt="prs" src="https://img.shields.io/b

111 lines (86 loc) 2.62 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; function _bluebird() { const data = require("bluebird"); _bluebird = function () { return data; }; return data; } function _execa() { const data = _interopRequireDefault(require("execa")); _execa = function () { return data; }; return data; } function _gitNotFound() { const data = _interopRequireDefault(require("./git/exceptions/git-not-found")); _gitNotFound = function () { return data; }; return data; } function _gitExecutable() { const data = _interopRequireDefault(require("./git/git-executable")); _gitExecutable = function () { return data; }; return data; } function _logger() { const data = _interopRequireDefault(require("../logger/logger")); _logger = function () { return data; }; return data; } /** * use git `merge-file` command. From the command help: * `git merge-file <current-file> <base-file> <other-file> * git merge-file incorporates all changes that lead from the <base-file> to <other-file> into * <current-file>. The result ordinarily goes into <current-file>.` * * Here, we are not going to write the result into current-file. Instead, we'll use the "-p" flag, * to just return the results. */ var _default = /*#__PURE__*/function () { var _mergeFiles = (0, _bluebird().coroutine)(function* ({ filePath, currentFile, baseFile, otherFile }) { const mergeResult = { filePath, output: null, conflict: null }; const gitExecutablePath = (0, _gitExecutable().default)(); try { const result = yield (0, _execa().default)('git', ['merge-file', '-L', currentFile.label, '-L', 'Base File', '-L', otherFile.label, currentFile.path, baseFile.path, otherFile.path, '-p']); mergeResult.output = result.stdout; return mergeResult; } catch (err) { if (err.exitCode && Number.isInteger(err.exitCode) && err.stdout) { // merge has been succeeded, return the diff results. mergeResult.conflict = err.stdout; return mergeResult; } if (err.exitCodeName === 'ENOENT') { _logger().default.error(`failed running Git at ${gitExecutablePath}. full command: ${err.cmd}`); throw new (_gitNotFound().default)(gitExecutablePath, err); } throw err; } }); function mergeFiles(_x) { return _mergeFiles.apply(this, arguments); } return mergeFiles; }(); exports.default = _default;