isomorphic-git, инициализирующий репо, делает локальное репо поврежденным

У меня очень странная проблема. Я создал максимально простую репродукцию номера.

package.json

{
  "scripts": {
    "start": "node index.js"
  },
  "dependencies": {
    "isomorphic-git": "^1.3.1",
    "rimraf": "^3.0.2"
  }
}

index.js

const fs = require("fs"),
  git = require("isomorphic-git"),
  rimraf = require("rimraf"),
  path = require("path"),
  http = require("isomorphic-git/http/node");

async function main() {
  const dirPath = path.join(process.cwd(), "small-test-repo");
  const gitPath = path.join(dirPath, ".git");
  const source = path.join(dirPath, "EXAMPLE");
  const dest = path.join(dirPath, "SAMPLE.txt");

  if (fs.existsSync(dirPath)) {
    rimraf.sync(dirPath);
  }
  await git.clone({
    fs,
    http,
    dir: dirPath,
    url: "https://github.com/rtyley/small-test-repo.git"
  });
  rimraf.sync(gitPath);

  fs.renameSync(source, dest);

  await git.init({ fs, dir: dirPath });
  await git.add({ fs, dir: dirPath, filepath: "SAMPLE.txt" });
}

(async () => {
  try {
    await main();
  } catch (e) {
    console.log(e);
  }
})();

После запуска кода выше, если я перейду к small-test-repo каталог и запустить git status происходит самое странное -

On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   EXAMPLE
        new file:   SAMPLE.txt

Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        deleted:    EXAMPLE

К моему неверию, я вижу, что EXAMPLE файл каким-то образом появляется в статусе, даже если .git папка была загружена до переименования файла и инициализации репозитория git.

Любой, кто проливает свет на это загадочное поведение, навсегда заслужит мою благодарность.

0 ответов

Другие вопросы по тегам