У меня есть более 200 проектов на моей рабочей станции, каждый из которых является git-репозиторием. Большинство из них заменены или иным образом заброшены. Я все еще храню код на случай, если мне что-нибудь понадобится от них.
В настоящее время активные проекты являются не-голыми Git-репозиториями ~/Projects
, а неактивные проекты - это .tar.gz
архивы, которые просто содержат весь не-голый Git-репозиторий в одной и той же папке. Итак, я получил следующее:
~/Projects/some-active/.git
~/Projects/some-inactive.tar.gz
Преимущество этого заключается в том, что резервные копии выполняются очень быстро, неактивные проекты - это всего лишь один файл, который необходимо проверить / скопировать. Всякий раз, когда я хочу просмотреть проекты, я должен извлечь папку, просмотреть ее и сжать через некоторое время, когда я думаю, что проект снова неактивен.
Есть ли лучший способ для этого?
rsync
, поэтому мне нужно будет исключить их там. Но я хочу, чтобы резервная копия была последовательной, поэтому я хотел бы избежать добавления чего-либо в файл игнорирования резервной копии. В папке ~ / Projects нет супер-репозитория.obsolete
каталог. Я не думаю, что на самом деле есть причина обращаться с ними особенно в ином случае. Я не удаляю их, потому что когда-нибудь код может пригодиться.obsolete
затем каждый устаревший проект как субмодуль?Ответы:
Первое предложение: просто сохраняйте их так же, как активные репозитории, за исключением того, что убедитесь, что все объекты находятся в одном пакете (это
git gc
будет сделано). rsync в основном просто проверяет время модификации; он не читает весь файл, если все остальное совпадает; это не должно быть медленным. (Моя резервная копия состоит из rsyncing более 1M файлов, многие из которых являются репозиториями Git, и это все еще приемлемо быстро ...)Второе предложение: храните их как открытые хранилища. Всякий раз, когда вы хотите просмотреть файлы, используйте
tig
режим «древовидного браузера» или клонируйте в / tmp (напримерgit clone -s ~/Projects/foo.git /tmp/foo
). Таким образом, в каждом репо будет всего около 5 файлов (packfile, pack index, config, pack-refs).источник
git gc --aggressive
на них регулярно можно с помощью скрипта. «Простое лучше, чем сложное».git gc
всего один раз ...git gc --aggressive
на всех репозиториях git каждый месяц или около того. Таким образом, я не должен помнить, чтобы сделать это вручную.