#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 можно было бы делать.

    [оставить комментарий]