В настоящее время я работаю над несколькими различными проектами. Я использую Mercurial для контроля версий (через BitBucket) и SpiderOak для автоматического резервного копирования. Я работаю на двух машинах, на рабочем столе дома и ноутбуке, когда я на улице. Я установил SpiderOak для автоматической синхронизации моих /home
каталогов (которые содержат различные репозитории для моих проектов) между двумя компьютерами.
В настоящее время SpiderOak также синхронизирует подпапку .hg
для каждого репозитория. Но я думаю, что это вызывает проблемы. Я просто зафиксировал и перенес репозиторий в BitBucket со своего рабочего стола. Затем я начал работать над проектом на своем ноутбуке после того, как SpiderOak синхронизировал файлы, но без извлечения и обновления из BitBucket. Затем, когда я попытался зафиксировать и нажать с моего ноутбука, я получил следующее сообщение об ошибке:
abort: push creates new remote head 7f6bf2d3292b!
(you should pull and merge or use push -f to force)
С другой стороны, я использовал SpiderOak просто для синхронизации папок проекта без синхронизации папок .hg
. Это также вызывало проблемы при использовании Mercurial. Например, если бы я работал над проектом на своем рабочем столе и создал новый файл, скажем, newfile.tex
, то он был бы синхронизирован с ноутбуком через SpiderOak, и (на рабочем столе) я бы добавил его в репозиторий Mercurial. через hg add newfile.tex
. Но поскольку папка .hg
не синхронизировалась между двумя компьютерами, хранилище на ноутбуке не будет знать о newfile.tex
, даже если я добавлю его в хранилище на рабочем столе. Я не хочу добавлять файлы в репозитории на обеих машинах по отдельности.
Я вижу, что это несколько бессмысленно, поэтому вопрос сводится к следующему:
- Должен ли я синхронизировать папки
.hg
или нет? - Какой рабочий процесс я должен использовать, чтобы убедиться, что все правильно синхронизировано и Mercurial не рассердился на меня?