extensions/git/src/commands.ts/CommandCenter/openMergeEditor
class CommandCenter:	async openMergeEditor(uri: unknown) {
		if (!(uri instanceof Uri)) {
			return;
		}
		const repo = this.model.getRepository(uri);
		if (!repo) {
			return;
		}


		type InputData = { uri: Uri; title?: string; detail?: string; description?: string };
		const mergeUris = toMergeUris(uri);
		const ours: InputData = { uri: mergeUris.ours, title: localize('Yours', 'Yours') };
		const theirs: InputData = { uri: mergeUris.theirs, title: localize('Theirs', 'Theirs') };

		try {
			const [head, mergeHead] = await Promise.all([repo.getCommit('HEAD'), repo.getCommit('MERGE_HEAD')]);
			// ours (current branch and commit)
			ours.detail = head.refNames.map(s => s.replace(/^HEAD ->/, '')).join(', ');
			ours.description = head.hash.substring(0, 7);

			// theirs
			theirs.detail = mergeHead.refNames.join(', ');
			theirs.description = mergeHead.hash.substring(0, 7);

		} catch (error) {
			// not so bad, can continue with just uris
			console.error('FAILED to read HEAD, MERGE_HEAD commits');
			console.error(error);
		}

		const options = {
			base: mergeUris.base,
			input1: theirs,
			input2: ours,
			output: uri
		};

		await commands.executeCommand(
			'_open.mergeEditor',
			options
		);
	}