Резервное копирование и восстановление gitosis и других git-репозиториев
Я пытаюсь выполнить резервное копирование Gitosis и репозитория в архивный архив, а затем восстановить и протестировать на пустой системе, чтобы в случае полного отказа сервера я смог быстро запустить новую систему.
У меня есть две директории, использующие
git clone --mirror gitosis@localhost:gitosis-admin.git gitosis-backup.repo
git clone --mirror gitosis@localhost:test1.git test1-backup.repo
А потом таращится
На моей чисто установленной машине я извлек тарболы и сделал
git clone gitosis-backup.repo gitosis-admin
git clone test1-backup.repo test1
Зайдя в две директории и выполнив git log, вы увидите историю.
Но это не относится к новому серверу. Но мастер git push origin не работает, и он претендует на актуальность.
Но любая попытка сделать клон с моего нового сервера терпит неудачу, так как, вполне справедливо, репо на самом деле не является частью сервера.
Итак, как мне закончить работу? Я не смог найти ответ о восстановлении гитоза на этом сайте или любом другом.
Результат тестирования с помощью VoC выглядит следующим образом
mkdir git_restore
cd git_restore
mkdir tarballs
cd tarballs
cp ~/backup/*.tgz
tar -zxf gitosis-admin.repo.tgz
tar -zxf test1-backup.repo.tgz
cd ..
mkdir local_repo
cd local_repo
ssh-keygen
sudo apt-get install gitosis
sudo -H -u gitosis gitosis-init < /home/ian/.ssh/id_rsa.pub
ls /srv/gitosis/git # check that this is not a broken sym link
git clone gitosis@localhost:gitosis-admin
cd gitosis-admin
git log # Has the initialise entry
cd ../..
mkdir restore
cd restore
git clone ../tarballs/gitosis-admin.repo gitosis-admin
git clone ../tarballs/test1-backup.repo test1
cd gitosis-admin
git log # Full log is present
git push gitosis@localhost:gitosis-admin master
To gitosis@localhost:gitosis-admin
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'gitosis@localhost:gitosis-admin'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes before pushing again. See the 'Note about
fast-forwards' section of 'git push --help' for details.
git status
# On branch master
nothing to commit (working directory clean)
git fetch
git merge origin master
Already up-to-date. Yeeah!
git push gitosis@localhost:gitosis-admin master
To gitosis@localhost:gitosis-admin
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'gitosis@localhost:gitosis-admin'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes before pushing again. See the 'Note about
fast-forwards' section of 'git push --help' for details.
В дополнение к выполнению git push gitosis @ localhost: gitosis-admin origin / master кажется push, но потом, если я затем сделаю клон gitosis-admin в отдельном каталоге, а затем создаю git log, у меня просто будет запись инициализации.
2 ответа
Если вы используете ssh-адреса, как описано в " Безопасной и простой настройке git с помощью gitosis", вам необходимо убедиться, что учетная запись администратора gitosis имеет право ~gitosis/.ssh/authorized_keys
на вашем первом сервере, плюс открытый и закрытый ключи, которые первоначально использовались для клонирования gitosis-admin.git
Сделки РЕПО.
Подводя итог комментариям ниже:
- установить гитоз на сервере
- убедитесь, что ваш ssh-демон работает на указанном сервере
- создать новый ключ (все еще на сервере), который позволит вам клонировать
gitosis-admin
Сделки рЕПО - распакуйте ваши резервные копии на локальную рабочую станцию
git push --force
ваш местныйgitosis-admin
вернуться на сервер, используя новую учетную запись с новым ключом.
Решено VonC, указав, что (а) мне нужно инициализировать гитоз, прежде чем я смогу что-либо делать, и (б) что команда --force необходима для толчка.