установить отслеживание ветки в восходящем направлении после перемещения и повторного добавления удаленного URL-адреса просто- git - PullRequest
0 голосов
/ 03 марта 2020

Следующий фрагмент кода проверяет, существует ли локальный репозиторий, и синхронизирует c изменения из удаленного репозитория, используя simple- git. У меня были некоторые проблемы с истечением токена JWT через 24 часа, это было исправлено путем удаления и повторного добавления URL удаленного хранилища.

if (fs.existsSync(cachePath)) {
      debug(`Local Path ${cachePath} Exists`);
      // debug('Checking `git status` on local repo');
      // Fetch
      // FIXME: no upstream branch is set -> no tracking information for the current branch
      // await git(cachePath).removeRemote('origin');
      // await git(cachePath).addRemote('origin', gitURL);
      // go into file and replace tocken
      // FIXME: fatal branch 'master' doesn't exist
      // execSync('git branch --set-upstream-to=origin/master master');
      // await git(cachePath).branch(['--set-upstream-to=origin/master', 'master'], (err, data) => {
      //   if (err) throw new Error(err);
      // });

      // Show all branches
      // debug('SHOW ALL BRANCHES');
      // await git(cachePath).branch(['-a'], (err, data) => {
      //   if (err) throw new Error(err);
      // });

      /* CMDs
      -------------------------------------------------- */
      try {
        execSync(`cd ${cachePath}`, { stdio: 'inherit' });
        execSync('git remote -v', { stdio: 'inherit' });
        execSync('git remote remove origin', { stdio: 'inherit' });
        execSync(`git remote add origin ${gitURL}`, { stdio: 'inherit' });
        execSync('git remote -v', { stdio: 'inherit' });
        // execSync('git branch --set-upstream-to=origin/master master', { stdio: 'inherit' });
        git(cachePath).branch(['-u', 'origin/master'], (err, data) => {
          if (err) throw new Error(err);
          console.log(data);
        });
        execSync('cd /home/ystanev/menlolab/runner', { stdio: 'inherit' });
      } catch (e) {
        throw new Error(e);
      }
      /* End of CMDs
      -------------------------------------------------- */

      debug('GIT PULL');
      await git(cachePath)
        .outputHandler(outputHandler)
        .pull();

Похоже, что предыдущая операция отключила отслеживание ветки в восходящем направлении, и я не могу git fetch/pull. После вывода git, который я установил для отслеживания, выполнив git branch --set-upstream-to=origin/master master, проблема, кажется, исправлена.

Я пытался сделать все это, хотя команды bash, я получаю сообщение об ошибке :

error: the requested upstream branch 'origin/master' does not exist

Кажется, что есть проблемы со связью с удаленным репо, так как те же команды прекрасно запускаются из оболочки bash в локальном репо.

Любой совет относительно возможной причины?

1 Ответ

0 голосов
/ 04 марта 2020

Как упомянуто @torek в комментариях, мне пришлось запустить git fetch перед установкой апстрима.

Финальный код ниже:

if (fs.existsSync(cachePath)) {
      debug(`Local Path ${cachePath} Exists`);

      // Fetch
      await git(cachePath).removeRemote('origin');
      await git(cachePath).addRemote('origin', gitURL);
      await git(cachePath).fetch('origin');
      await git(cachePath).branch(['-u', 'origin/master']);

      debug('GIT PULL');
      await git(cachePath)
        .outputHandler(outputHandler)
        .pull();
    }
...