Сделайте резервную копию всех веток в репозитории git, сохранив то, что было перебазировано и принудительно - PullRequest
3 голосов
/ 14 января 2011

Я ищу решение для резервного копирования нескольких общих git-репозиториев, в каждом из которых есть несколько веток, и некоторые из ветвей перебираются и форсируются (я знаю, что это противоречит передовым методам, но сейчас я должен разобраться с этим)

Я думал, что простого git clone --mirror, а затем периодически git remote update будет достаточно, но от этого не останется ничего, что будет перебазировано силой толчка.

Я экспериментировал с git bundle и я не думаю, что это хорошее решение для того, что я пытаюсь сделать здесь.

В поисках чего-то постепенного, легкого и простого в использовании для восстановления, я думаю, возможно, git format-patch можно использовать дляСценарий записи каждого нового коммита, который происходит где угодно.Это слишком много для задачи?

1 Ответ

7 голосов
/ 14 января 2011

Я думаю, что подход clone --mirror стоит оглянуться назад.Если вы хотите восстановить предыдущую позицию ветви, которая была принудительно нажата, просто посмотрите на повторные журналы.Чтобы быть абсолютно уверенным в этом, вы можете установить gc.pruneExpire на never, и то же самое для gc.reflogExpireUnreachable, так что повторные флажки и недоступные объекты никогда не будут удалены.Это должно покрыть тебя.Важное примечание: рефлоги по умолчанию отключены в пустых репозиториях.Вы можете включить их, установив core.logAllRefUpdates.

. Обратите внимание, что повторные журналы в репозитории push-to будут содержать записи о любых принудительных изменениях, которые происходят.Если вы хотите быть еще более уверенным в этом, вы могли бы даже написать хук обновлений, который обнаруживает входящие принудительные обновления и записывает их где-то особенное, возможно, создавая ссылку, что-то вроде refs/backups/mybranch-{n}.

И действительнонет ничего плохого в том, что некоторые ветви часто перебазируют, если они четко определены, так что никто не будет застигнут врасплох.Ветвь pu в git.git является прекрасным примером этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...