Как хранить git репозитории заброшенных проектов?

5

У меня есть более 200 проектов на моей рабочей станции, каждый из которых является git-репозиторием. Большинство из них заменены или иным образом заброшены. Я все еще храню код на случай, если мне что-нибудь понадобится от них.

В настоящее время активные проекты являются не-голыми Git-репозиториями ~/Projects, а неактивные проекты - это .tar.gzархивы, которые просто содержат весь не-голый Git-репозиторий в одной и той же папке. Итак, я получил следующее:

  • ~/Projects/some-active/.git
  • ~/Projects/some-inactive.tar.gz

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

Есть ли лучший способ для этого?

Мартин Уединг
источник
Вы можете поместить неактивные проекты в .gitignore, и их не нужно будет сжимать, потому что они не будут синхронизироваться. смотрите здесь
Raystafarian
Я делаю свои резервные копии с rsync, поэтому мне нужно будет исключить их там. Но я хочу, чтобы резервная копия была последовательной, поэтому я хотел бы избежать добавления чего-либо в файл игнорирования резервной копии. В папке ~ / Projects нет супер-репозитория.
Мартин Уединг,
Толкните их в битбакет.
инф
Я просто положил их в obsoleteкаталог. Я не думаю, что на самом деле есть причина обращаться с ними особенно в ином случае. Я не удаляю их, потому что когда-нибудь код может пригодиться.
simonzack
@simonzack, почему бы не иметь репозиторий, а obsoleteзатем каждый устаревший проект как субмодуль?
trysis,

Ответы:

5

Первое предложение: просто сохраняйте их так же, как активные репозитории, за исключением того, что убедитесь, что все объекты находятся в одном пакете (это git gcбудет сделано). rsync в основном просто проверяет время модификации; он не читает весь файл, если все остальное совпадает; это не должно быть медленным. (Моя резервная копия состоит из rsyncing более 1M файлов, многие из которых являются репозиториями Git, и это все еще приемлемо быстро ...)

Второе предложение: храните их как открытые хранилища. Всякий раз, когда вы хотите просмотреть файлы, используйте tigрежим «древовидного браузера» или клонируйте в / tmp (например git clone -s ~/Projects/foo.git /tmp/foo). Таким образом, в каждом репо будет всего около 5 файлов (packfile, pack index, config, pack-refs).

grawity
источник
1
Поддержание их всех как активных, вероятно, самое простое решение. Работать git gc --aggressiveна них регулярно можно с помощью скрипта. «Простое лучше, чем сложное».
Мартин Уединг,
@queueoverflow: Если вы не делаете коммит, то достаточно сделать git gcвсего один раз ...
grawity
1
У меня есть работа, которая работает git gc --aggressiveна всех репозиториях git каждый месяц или около того. Таким образом, я не должен помнить, чтобы сделать это вручную.
Мартин Уединг,