#git #git-lfs #git-lfs-migrate
#git #git-lfs #git-lfs-перенос
Вопрос:
Я пытаюсь исправить проблему с отсутствующими указателями, используя git lfs migrate import --no-rewrite
сначала я перечисляю все файлы, в которых отсутствовали указатели, используя git reset --hard
:
new Promise((resolve, reject) => {
exec("git reset --hard", (error, stdout, stderr) => {
if (error) {
console.error(`exec error: ${error}`);
reject(error);
return;
}
const filesWithMissingPointers = Array.from(
stderr.matchAll(/t(.*)/g)
).map((m) => m[1]);
resolve(filesWithMissingPointers);
});
});
Затем я регистрирую вывод:
console.log(
`Problem files before lfs migrating: tn${problemFilesBefore.join("tn")}`
);
Вывод:
Problem files before lfs migrating:
IdleGame/Assets/Plugins/Fonts/Localization/Korean/NotoSansCJKkr-Medium.otf
IdleGame/Assets/Plugins/Fonts/Localization/Latin_Cyrillic_Greek/OctoberPro-Black.otf
IdleGame/Assets/Plugins/Fonts/Localization/Latin_Cyrillic_Greek/OctoberPro-HeavyItalic.otf
IdleGame/Assets/Plugins/Fonts/Localization/Persian/NotoNaskhArabicUI-Bold.ttf
IdleGame/Assets/Plugins/Fonts/Localization/Thai/NotoSansThaiUI-CondensedMedium.ttf
IdleGame/Assets/Plugins/Fonts/Oswald-Bold.ttf
IdleGame/Assets/Plugins/Fonts/PoetsenOneRegular/TrueType font file/PoetsenOne-Regular 1.ttf
IdleGame/Assets/Plugins/Fonts/Roboto Medium/TrueType font file/roboto-medium.ttf
IdleGame/Assets/Plugins/Fonts/nevis.ttf
IdleGame/Assets/Plugins/LibrariesDesign/BeautifulDissolves/_Examples/_Assets/Textures/ZomBearSpecular.tif
IdleGame/Assets/Plugins/LibrariesDesign/BeautifulDissolves/_Examples/_Assets/Textures/ZomBunnySpecular.tif
Затем я пытаюсь запустить:
execSync(
`git lfs migrate import --no-rewrite -m "AutoCommit Bot: fix missing LFS points ${process.env.CI_PIPELINE_URL}" ${problemFilesBefore.join(" ")} --yes`
);
И я сталкиваюсь:
Error: unknown flag: --no-rewrite
Я сталкиваюсь с той же проблемой локально при запуске команды в powershell, но я не сталкиваюсь с ней при запуске в bash. Мои скрипты выполняются в контейнере docker (Linux) с установленным git lfs. Поскольку это Unix, он должен использовать bash в качестве командной строки по умолчанию, поэтому я не думаю, что проблема заключается в оболочке.
Примечание: я запускаю этот скрипт как задание в gitlab
Комментарии:
1. Что
git lfs version
дает?2. @bk2204 git-lfs/2.3.4 (GitHub; linux amd64; go 1.8.3)
Ответ №1:
--no-rewrite
Флаг недоступен в Git LFS 2.3.4. Git LFS имеет довольно агрессивный процесс выпуска, и поэтому между версиями добавляется множество новых функций, которые обычно выходят каждые 3 месяца.
Если вы используете Ubuntu 18.04, вы, вероятно, захотите обновиться до 20.04 или, по крайней мере, использовать более новую версию. Проект Git LFS предоставляет дополнительные двоичные файлы и пакеты, которые вы можете использовать, если вам неудобно обновлять свою ОС.
Если вы используете Windows для определенных целей, вам следует просто обновить свою версию Git для Windows. Git LFS поставляется с Git для Windows, и самый простой способ получить более новую версию — обновить Git. Установить более новую версию вручную сложно, потому что сложно переопределить встроенную версию.