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

Вариант использования

  • Скопируйте папку вместе с ее файлами, используя 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 Ответ

0 голосов
/ 11 октября 2019

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

await git.remove({
    dir,
    filepath: relativePath
  }).catch(error => console.log(error))
...