инкрементные пакеты репозиториев git

#bash #git

Вопрос:

Я создаю дополнительные пакеты своего репозитория git, используя:

 #!/bin/bash  if [ ! -f ./source0.bundle ]; then  git bundle create source0.bundle --all elif [ $(git rev-parse HEAD) != $(git bundle list-heads source0.bundle | head -1 | cut -d' ' -f1) ]; then  declare -i LARGEST_NUMBER=$(ls | grep "source.*.bundle" | tail -1 | grep -o '[0-9]*')  LARGEST_NUMBER_PLUS_ONE=$((LARGEST_NUMBER 1))   git bundle create source${LARGEST_NUMBER_PLUS_ONE}.bundle $(git bundle list-heads source${LARGEST_NUMBER}.bundle | head -1 | cut -d' ' -f1)..HEAD fi  

Это создает source0.bundle , source1.bundle , source2.bundle ….

Чтобы восстановить пакеты, мне нужно запустить:

 $ git clone source0.bundle extract $ cd extract $ for ((i = 1 ; i lt; 3 ; i   )); do git pull ../source${i}.bundle; done  

Это хороший подход или я все усложняю?

Комментарии:

1. Хорошо для какой цели?

2. Что такое пакет git ?!

3. @torek извините за задержку с ответом. Это для резервного копирования моего репозитория в один файл. например, заархивируйте папку .git.

4. Вы можете использовать пакет в качестве файла резервной копии Git, но на самом деле это не его основное предназначение: смысл git bundle в том, чтобы иметь возможность реализовывать git fetch по сетям с воздушным зазором и тому подобное. Если вы создадите пакет в виде файла, содержащего все фиксации (один начальный пакет «все»), вы получите файл, который работает как резервная копия. Но более типично просто иметь где-то хранилище резервных копий и использовать git push или git fetch или git clone для создания дополнительных резервных копий.

Ответ №1:

мужской мерзавец-бандл

ОПИСАНИЕ Создание, распаковка и управление файлами «связки». Пакеты используются для «автономной» передачи объектов Git без активного «сервера», расположенного по другую сторону сетевого подключения.

Это первый раз, когда я слышу о пакетах git. Если вам нужно где-то сохранить копию своего репозитория, вы можете создать удаленную локальную папку, например:

 git remote add secondary /backup/foo/bar.git  

Затем вы можете нажать на этот пульт дистанционного управления.

 git push secondary master  

Есть некоторые причуды, такие как невозможность нажать на удаленный удаленный, но вы можете сделать его «голым» удаленным, как в «серверном» удаленном.

 git init --bare /backup/foo/bar.git  

Переход в голый репозиторий-это то же самое, что переход на github или bitbucket.

На мой взгляд, вам не нужны пакеты, если вы не знаете, что вам это нужно. Если вы сомневаетесь, они вам не нужны.