我目前正在从事几个不同的项目。我使用 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 不会对我生气?
答案1
为什么要同步源代码(使用 SpiderOak)?我只会使用您的版本控制(Mercurial)工具进行同步。如果您使用版本控制工具,它将知道所有文件更改,并且它将正常运行。