Создать локальный pu sh для удаленного использования nodegit - PullRequest
1 голос
/ 18 января 2020

Итак, я пытаюсь сделать следующее программным путем, используя библиотеку узла git:

Оформить ветку исправлений Get head commmit из ветви исправлений Создайте ветку topi c, голова которой указана на ветку исправлений head Установите восходящую ветку topi c на удаленную Cherry, выберите коммит из master и примените к ветке topi c. Pause Разработчик исправляет слияние вишневого пика и фиксирует локальные изменения. Код затем нажимает. Автоматически создает запрос на извлечение. путь к # 4. Когда я выполняю эти шаги удаленно, используя VSO Rest SDK для узла, и нет никаких конфликтов, все работает на VSO просто отлично. Это просто локально с использованием узла git.

Похоже, что все объекты, возвращаемые из узла git, являются нативными объектами, поэтому не могут видеть какие-либо данные с использованием отладочной оценки. Просто получите прототип. Итак, вот код узла git. Каждый раз, когда я пытаюсь установить ветку upstream, я получаю ошибки о недействительности ссылки. Вот код Видите что-нибудь?

let hotfixBranch = conflict.parameters.ontoRefName.substr(conflict.parameters.ontoRefName.indexOf("hotfix"));
let topicBranch = conflict.parameters.generatedRefName.substr(conflict.parameters.generatedRefName.indexOf("hotfix"));

await this.checkoutRemoteBranch(this.repo, hotfixBranch)
    .then(() => {
        log.info(`Getting head commit for ${hotfixBranch}}`);
        return this.repo.getHeadCommit()
    })
    .then(commit => {
        log.info(`Creating local topic branch ${topicBranch} with head commit pointed to ${commit.id().tostrS()}`);
        return this.repo.createBranch(topicBranch, commit, true);
    })
    .then((ref) => {
        return git.Branch.setUpstream(ref, "origin")
    })
    .then(() => this.repo.checkoutBranch(topicBranch))
    .then(() => {
        log.info(`Performing cherry pick with id ${this.hotfixCommit.id().tostrS().cyan} ${"on branch".green} ${topicBranch.cyan}`);
        return git.Cherrypick.cherrypick(this.repo, this.hotfixCommit, {});
    })
    .then(result => {
        if (result === -1) {
            log.section("Found cherry pick conflicts");
            log.error("IMPORTANT");
            log.instruction("---------");
            log.instruction("You must now open the local enlistment and resolve the conflict. Perform the following steps");
            log.instruction("1) Open the repo at: " + args.cloneRepoTo);
            log.instruction("2) Fix any merge conflicts");
            log.instruction("3) Stage the changes");
            log.error("DO NOT PUSH THE CHANGES TO THE UPSTREAM BRANCH");
            log.instruction("4) Come back to this window and PRESS ANY KEY TO CONTINUE");
            return this.pressKeyToContinue();
        }

        return null;
    })
    .catch(err => {
        log.error(`Error cherry picking to local branch ${err}`);
    });

В приведенном выше коде конфликты являются объектами VSO, которые я использую для создания локального узла git объектов.

...