#git
Переезд репозиториев на SHA256
Увидел тут в одном блоге тему про переконвертирование Git репозиториев
из допотопного формата с SHA1 хэшами. И снова подумал: а чего тормозить
и что-то откладывать?
git fast-export и git fast-import команды офигенно удобны оказались.
Просто сделать эксорт, импорт и вот и ветки и вся история восстановлены.
С этим проблем нет.
Но, конечно же, подписанные тэги работать уже не будут, ведь все хэши
разъехались. Решил задачу так, тоже вроде впервые применяя for-each-ref:
% git for-each-ref --format="
cat >/tmp/msg <<EOF
%(*subject)
%(*body)
EOF
GIT_COMMITTER_DATE=\"%(*authordate)\" git tag \
-f -s -F /tmp/msg %(*describe) %(*objectname)
" refs/tags >/tmp/eval
Дата commiter-а конечно поедет. Так же как и прежде я использовал PGP
подписи, а сейчас почти везде SSH. И сейчас я в репозиториях 10+ летней
давности переподписываю тэги на ключе, когда и в OpenSSH ещё не было
функционала подписей, и SHA256 в Git. Но да и ладно с этим.
В некоторых проектах есть или применялись git submodule. В одном я
просто отредактировал выхлоп git fast-export и удалил наличие
submodules. Конечно, это уже не совсем полноценная история будет,
но не оставаться же на SHA1. Ещё в паре проектов они остались, надо
будет аккуратно что-то с этим сделать.
Репозитории которые изначально были fork-ами другого софта -- не трогаю,
чтобы всё же merge/rebase можно было бы делать.
[оставить комментарий]