Как удалить / добавить на сцену файл, который удален / не отслеживается из-за переименования папки
Пример использования
- Скопируйте папку вместе с файлами, используя
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))