Я часто использую git 'guerrilla-style', вкладывая git-репо в песочницу Subversion, Perforce или CVS.Когда я работаю таким образом, мне нравится создавать «удаленное» репо на USB-накопителе, чтобы у меня была резервная копия на случай, если мой жесткий диск умрет:
$ git --bare init /f/projects/myproj.git
$ git remote add origin /f/projects/myproj.git
$ git push -u origin master
Тогда мне просто нужно запомнитьвремя от времени набираю git push
, чтобы сделать резервную копию моей работы.Если мой репо будет закрыт, я могу получить его обратно:
$ git clone /f/projects/myproj.git
В последнее время я поддерживаю стек патчей для репозитория Perforce вышестоящего уровня, используя StGit.Моя простая стратегия резервного копирования больше не работает в этом случае.Похоже, что ни git clone
, ни stg clone
не работают: если я наберу stg series
после клонирования, это скажет мне stg series: master: branch not initialized
.
Возникнув, я видел, что stgit создает ветку master.git
и несколько других временных (??) веток для хранения метаданных.Похоже, что можно настроить все так, чтобы все эти ветви были перенесены в резервное хранилище, но я не уверен, как это сделать.
Обновление [12/ 15/2011]: Глядя на репозиторий, управляемый stgit, для которого я хочу создать резервную копию в qgit, я вижу, что это выглядит так:
![enter image description here](https://i.stack.imgur.com/DwrLd.png)
Я попробовал предложение Джефроми об использованииpush --all
:
$ git --bare init luasand_stg_bak
Initialized empty Git repository in c:/d/projects/luasand_stg_bak/
$ cd luasand_stg
$ git remote add backup ../luasand_stg_bak
$ git push -u --all backup
Counting objects: 369, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (364/364), done.
Writing objects: 100% (369/369), 467.79 KiB, done.
Total 369 (delta 73), reused 0 (delta 0)
To ../luasand_stg_bak
* [new branch] master -> master
* [new branch] master.stgit -> master.stgit
Branch master set up to track remote branch master from backup.
Branch master.stgit set up to track remote branch master.stgit from backup.
Это выдвигает ветку master.stgit
, но не выдвигает некоторые другие необходимые метаданные:
![enter image description here](https://i.stack.imgur.com/qqZ7J.png)
Из вышеприведенногоНа снимке экрана вы видите папку верхнего уровня patches
и папку refs/patches
, которые присутствуют в исходном репо, но отсутствуют в резервной копии.Все это заставляет меня поверить, что я лаю не на том дереве.Есть ли нет способа резервного копирования метаданных StGit с помощью стандартных команд git?Если нет, то как лучше всего выполнить резервное копирование моей незавершенной серии сложных исправлений на случай повторной перезагрузки или сбоя жесткого диска?