Безопасно ли сжимать архив GIT в случае потери данных или повреждения архива? - PullRequest
1 голос
/ 06 декабря 2011

Я использую GIT GUI для отслеживания изменений, внесенных в наши ежедневные задачи разработки и изменения кода / файлов.

В настоящее время я занимаюсь веб-разработкой, прежде всего веб-сайтами. Я использую архив GIT для каждой папки сайта, которая содержит все файлы и документы, связанные с проектом.

Часто GIT жалуется на то, что в архиве много элементов, и чтобы сохранить архив быстрым и оптимизированным, он предлагает мне сжать архив.

Безопасно ли это делать? Превзойдут ли преимущества сжатия архива возможные проблемы, которые может вызвать сжатие (стоит ли оно того)?

Я особенно обеспокоен потенциальным повреждением архива или известными проблемами / ошибками, о которых я могу не знать.

Ответы [ 3 ]

3 голосов
/ 06 декабря 2011

Формат репозитория Git надежен и очень хорошо протестирован. Безопасно делать сжатие репозитория.

Сказав это, резервные копии всегда хорошая идея.

2 голосов
/ 06 декабря 2011

Если вы говорите о git gc, то это совершенно безопасно и данные не будут потеряны.

Git периодически выполняет это сам, но ничего не делает, пока репо не превысит определенный размер.

Как говорит Грег, всегда делайте резервную копию вашего репо.

git gc - другое дело. Это приведет к удалению всех объектов, на которые нет ссылок, из репозитория, что может оказаться не тем, что вам нужно (вы можете захотеть восстановить один из них позже).

0 голосов
/ 08 января 2016

TL; DR: Да, безопасно выполнять оптимизацию git-репозитория, но делать резервные копии и проверять их.

Я предполагаю, что под "сжатием" вы подразумеваете git gc.

Операция настолько безопасна, насколько это возможно для окружающей среды (стабильность машины, оперативная память и надежность хранения).

Тем не менее, имеет один недостаток во всех вычислительных машинах: пространство для хранения . Помните, что git gc может иногда (как это ни парадоксально) временно увеличивать размер хранилища (из-за распаковки объектов, которые могут быть удалены, но еще не удалены). Если на машине недостаточно места для хранения, это может помешать успешному выполнению операции или затруднить последовательную работу. Кроме того, git gc может потребовать огромного объема памяти (например, больше, чем размер хранилища на диске) и завершится ошибкой, если система не может справиться.

Тем не менее, я никогда не видел повреждения хранилища, казалось бы, вызванного git gc.

Если ваша резервная копия является репозиторием клонов, будьте осторожны: некоторые элементы (ветви, легкие теги, обычные теги, конфигурации, хуки и т. Д.) Не переносятся автоматически между репозиториями, некоторые частично или в некоторых случаях только со сложными правила.

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

...