Skip to content

Commit

Permalink
Allow normal merge to operates on bare and half opened repos
Browse files Browse the repository at this point in the history
  • Loading branch information
shijinglu committed Feb 6, 2019
1 parent b1e6513 commit e9f78c8
Show file tree
Hide file tree
Showing 23 changed files with 1,489 additions and 623 deletions.
20 changes: 13 additions & 7 deletions node/lib/cmd/merge.js
Expand Up @@ -107,12 +107,14 @@ exports.executeableSubcommand = co.wrap(function *(args) {

const colors = require("colors");

const MergeUtil = require("../util/merge_util");
const GitUtil = require("../util/git_util");
const Hook = require("../util/hook");
const UserError = require("../util/user_error");
const MergeUtil = require("../util/merge_util");
const MergeCommon = require("../util/merge_common");
const GitUtil = require("../util/git_util");
const Hook = require("../util/hook");
const Open = require("../util/open");
const UserError = require("../util/user_error");

const MODE = MergeUtil.MODE;
const MODE = MergeCommon.MODE;
let mode = MODE.NORMAL;

if (args.ff + args.continue + args.abort + args.no_ff + args.ff_only > 1) {
Expand Down Expand Up @@ -167,8 +169,12 @@ Merge of '${commitName}'
return GitUtil.editMessage(repo, message);
};
const commit = yield repo.getCommit(commitish.id());
const result =
yield MergeUtil.merge(repo, commit, mode, args.message, editMessage);
const result = yield MergeUtil.merge(repo,
commit,
mode,
Open.SUB_OPEN_OPTION.ALLOW_BARE,
args.message,
editMessage);
if (null !== result.errorMessage) {
throw new UserError(result.errorMessage);
}
Expand Down
23 changes: 13 additions & 10 deletions node/lib/cmd/merge_bare.js
Expand Up @@ -88,17 +88,19 @@ exports.executeableSubcommand = co.wrap(function *(args) {

const colors = require("colors");

const MergeBareUtil = require("../util/merge_bare_util");
const MergeUtil = require("../util/merge_util");
const MergeCommon = require("../util/merge_common");
const GitUtil = require("../util/git_util");
const Hook = require("../util/hook");
const Open = require("../util/open");
const UserError = require("../util/user_error");

const repo = yield GitUtil.getCurrentRepo();
const mode = args.no_ff ?
MergeBareUtil.MODE.NORMAL :
MergeBareUtil.MODE.FORCE_COMMIT;
let ourCommitName = args.ourCommit;
let theirCommitName = args.theirCommit;
MergeCommon.MODE.NORMAL :
MergeCommon.MODE.FORCE_COMMIT;
let ourCommitName = args.ourCommit[0];
let theirCommitName = args.theirCommit[0];
if (null === ourCommitName || null === theirCommitName) {
throw new UserError("Two commits must be given.");
}
Expand All @@ -117,11 +119,12 @@ Could not resolve ${colors.red(theirCommitName)} to a commit.`);

const ourCommit = yield repo.getCommit(ourCommitish.id());
const theirCommit = yield repo.getCommit(theirCommitish.id());
const result = yield MergeBareUtil.merge(repo,
ourCommit,
theirCommit,
mode,
args.message);
const result = yield MergeUtil.merge(repo,
ourCommit,
theirCommit,
mode,
Open.SUB_OPEN_OPTION.FORCE_BARE,
args.message);
if (null !== result.errorMessage) {
throw new UserError(result.errorMessage);
}
Expand Down
3 changes: 2 additions & 1 deletion node/lib/cmd/submodule.js
Expand Up @@ -236,7 +236,8 @@ Could not find ${colors.red(metaCommittish)} in the meta-repo.`);

const subName = paths[0];
const opener = new Open.Opener(repo, null);
const subRepo = yield opener.getSubrepo(subName, false);
const subRepo = yield opener.getSubrepo(subName,
Open.SUB_OPEN_OPTION.FORCE_OPEN);
const metaCommit = yield repo.getCommit(metaAnnotated.id());

// Now that we have an open submodule, we can attempt to resolve
Expand Down
3 changes: 2 additions & 1 deletion node/lib/util/add_submodule.js
Expand Up @@ -75,7 +75,8 @@ exports.addSubmodule = co.wrap(function *(repo, url, filename, importArg) {
repo,
filename,
url,
templatePath);
templatePath,
false);
if (null === importArg) {
return subRepo; // RETURN
}
Expand Down
7 changes: 5 additions & 2 deletions node/lib/util/cherry_pick_util.js
Expand Up @@ -116,7 +116,9 @@ exports.changeSubmodules = co.wrap(function *(repo,
yield rmrf(name);
}
else if (yield opener.isOpen(name)) {
const subRepo = yield opener.getSubrepo(name, false);
const subRepo =
yield opener.getSubrepo(name,
Open.SUB_OPEN_OPTION.FORCE_OPEN);
yield fetcher.fetchSha(subRepo, name, sub.sha);
const commit = yield subRepo.getCommit(sub.sha);
yield GitUtil.setHeadHard(subRepo, commit);
Expand Down Expand Up @@ -446,7 +448,8 @@ exports.pickSubs = co.wrap(function *(metaRepo, opener, metaIndex, subs) {
};
const fetcher = yield opener.fetcher();
const pickSub = co.wrap(function *(name) {
const repo = yield opener.getSubrepo(name, false);
const repo = yield opener.getSubrepo(name,
Open.SUB_OPEN_OPTION.FORCE_OPEN);
const change = subs[name];
const commitText = "(" + GitUtil.shortSha(change.oldSha) + ".." +
GitUtil.shortSha(change.newSha) + "]";
Expand Down
4 changes: 3 additions & 1 deletion node/lib/util/commit.js
Expand Up @@ -1021,7 +1021,9 @@ exports.getAmendStatus = co.wrap(function *(repo, options) {
old = new Submodule(commit.url, commit.sha);
}
}
const getRepo = () => opener.getSubrepo(name, false);
const getRepo =
() => opener.getSubrepo(name,
Open.SUB_OPEN_OPTION.FORCE_OPEN);

const result = yield exports.getSubmoduleAmendStatus(currentSub,
old,
Expand Down

0 comments on commit e9f78c8

Please sign in to comment.