Как удалить / добавить на сцену файл, который удален / не отслеживается из-за переименования папки

Пример использования

  • Скопируйте папку вместе с файлами, используя fs.copyFile путем перебора путей к файлам в папке.
  • Удалите файлы в папке, скопированные с помощью fs.unlinkSync
  • Удалите теперь удаленные файлы из индекса git, используя git.remove
  • Добавьте скопированные файлы в постановку, используя git.add и совершить.

Текущее состояние

  • Удаленные файлы отображаются при использовании git status, помечено как удаленное.
  • Скопированные файлы также помечаются как неотслеживаемые.
fs.copyFile(oldPath, newPath, async err => {
  if (err) 
    return console.log(err)

  // Delete the old file
  await fs.unlinkSync(oldPath)
  // Remove the old file from git index
  await git.remove({
    dir,
    filepath: path.basename(oldPath)
  }).catch(error => console.log(error))
})

Проблема

  • Поскольку теперь есть удаленный и неотслеживаемый файл с тем же именем, передается только имя файла в filepath не сработает (предположение), так как теперь есть два файла с одинаковым именем.

Ожидаемое решение

  • При использовании git mv команда удаляет удаленный файл из индекса и добавляет скопированный файл в постановку, как я могу реплицировать эту функциональность с помощью isomorphic-git

1 ответ

Решением было бы передать относительный путь к полю filepath, чтобы относительный путь к файлу из каталога репозитория

await git.remove({
    dir,
    filepath: relativePath
  }).catch(error => console.log(error))
Другие вопросы по тегам