Резервное копирование и восстановление 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 необходима для толчка.

Другие вопросы по тегам