Что: 01b506180ad27c841d2fefed28cc3cffde06f3a7
Когда: 2023-08-12 14:45:12+03:00
Темы: git go hate
Go и SHA256 Git репозитории Мне казалось, что вроде бы Go без проблем работал с Git репозиториями в которых используется SHA256 (73555bc7b599082947d066015b3010be9a3e9c5f, 7a48b1fda8f0429e5d0e1c61d961891b83d97ffb). Сделал тут один модуль, тоже в подобном репозитории, но Go не в состоянии его был склонировать. Проблема в том, что Go делает "git init", а затем внутри этой директории "git fetch". Если просто выполнять "git clone", то проблем нет. А git-init уже фиксирует формат репозитория и поэтому с сервером клиент уже не может договориться. Смотрел как бы сделать отдачу модулей не через ссылку на Git репозиторий, а через отдачу модуля в виде tarball-а. github.com/goproxy/goproxy может помочь в создании GOPROXY сервера, который на файловой системе и нужные @v-like файлы наплодит, которые уже раздавать как готовые модули. Но геморройно как-то это всё пока. На данный момент решаю проблему так: при попытке go get он падает и выдаёт путь на экране до директории с репозиторием в который не удалось ничего склонировать. Перехожу туда, руками делаю: git config core.repositoryformatversion 1 git config extensions.objectformat sha256 и снова вызываю go get, который уже сможет выполнить fetch, а дальше уже будет использоваться закэшированная версия модуля. Менять тут формат репозитория можно безопасно, так как абсолютно ни одного объекта ещё не было скачано и ломаться нечему. Что-то предлагать или отправлять патчи разработчикам Go бесполезно. В рассылке патчи они игнорируют. А официально их можно отправить только через платформы которые недопускают россиян (типа GitHub).
Сгенерирован: SGBlog 0.34.0