Git Bundle с LFS
Мне нужно связать репозиторий git, на котором мы использовали git-lfs, но столкнулись с проблемой.
Это будет хорошо, но когда я клонирую его, эта ошибка происходит
Загрузка.../Dll's/DotNetZip.dll (458 КБ) Ошибка при загрузке объекта: .../Dll's/DotNetZip.dll (7dd20a2): Ошибка смазывания: Ошибка при загрузке.../Dll's/DotNetZip.dll (7dd20a2291b05323bba04be4ae656d7635ae5e68a5a631e46b646468188f868468188644618188646188641886418188641886418188641886418864188641818868818469188869188649188641818864818864818864818468188648188688188648188649188649188648188648188649188649 запрос: отсутствует протокол: "C:/...bundleName.bundle.git/info/lfs"
Ошибки записываются в C:/.../. Git\lfs\logs\20180831T093319.3979074.log Использование
git lfs logs last
просмотреть журнал. ошибка: внешний фильтр 'git-lfs filter-process' потерпел неудачу фатально: ../Dll's/DotNetZip.dll: smudge filter lfs Ошибка предупреждение: клонирование выполнено успешно, но проверка не выполнена. Вы можете проверить, что было извлечено с помощью "git status", и повторить попытку с "git checkout -f HEAD".
Я не могу найти документацию о том, как lfs должен работать с git bundle. Все, что мне действительно нужно для моего файла lfs, - это хранить последнюю версию в комплекте, но, похоже, не могу найти, где это может быть.
2 ответа
Полагаю
git bundle
не поддерживается . Однако с последними версиями
git-lfs
вы можете использовать локальные репозитории git «голого» типа вместо веб-менеджера репозиториев, такого как GitHub или GitLab.
Чтобы создать «комплект» репозитория git, включая его данные lfs из GitHub, с использованием локального репозитория:
Сначала клонируйте репозиторий с GitHub и скачайте все:
git clone https://github.com/some-user/lfs-repo
cd lfs-repo
git fetch --all
git fetch --tags
git lfs install
git lfs fetch --all
Затем создайте новое голое репо:
cd ..
mkdir bare-repo
cd bare-repo
git init --bare
Затем добавьте новое голое репо в качестве удаленного к вашему клонированному репо и отправьте в него все:
cd ../lfs-repo
git remote add bare file://$(pwd)/../bare-repo
git push --all bare
git push --tags bare
git lfs push --all bare
Теперь у вас есть все данные (включая данные lfs) в вашем
bare-repo
. Вы можете заархивировать его сейчас:
cd ..
tar -czvf bundle.tar.gz bare-repo
Если вы хотите получить данные из «связки», просто скопируйте файл на нужный хост, извлеките его и клонируйте с него с помощью
file://
URL.
Получил ту же ошибку в Ubuntu-20.04.1-LTS, которая все еще поставляется со старой версией git-lfs 2.9.
Ошибка упоминается на github.com/git-lfs , а исправление находится в git-lfs 2.10 или новее (на данный момент последняя версия — 2.13.2), и для ее установки необходимо выполнить следующие шаги (см. также вики):
sudo apt install curl
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
sudo apt-get install git-lfs
git lfs install
git clone git@bitbucket.org:project/repo.git --recursive
cd repo/
git lfs install
git checkout some_branch
После этого ошибка исчезла.