#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.
На мой взгляд, вам не нужны пакеты, если вы не знаете, что вам это нужно. Если вы сомневаетесь, они вам не нужны.