我在单用户工作流中使用Mercurial,以便能够在编码或编写出现严重错误时回滚更改(我主要使用Stata和R统计信息包和LaTeX)。虽然只在本地工作,但这很容易,因为我所拥有的只是主要的存储库。
最近,我开始在Linux服务器上使用ssh,以获得更强的计算能力。到目前为止,我一直在手动来回复制文件,只在本地使用Mercurial,但我想使用Mercurial来处理这一点,并保持这两个工作流的同步。此外,我喜欢在本地(在我的笔记本电脑或台式机上)和服务器上编写代码的能力。
我是否需要在服务器上处理主存储库的克隆,并保持主存储库不变?或者,当我在服务器上时,我可以直接在主存储库中工作吗?在this question @gizmo中,gizmo指向了this workflow guide;“单一开发人员”的讨论很有帮助,但我仍然不清楚,当我在服务器上时,我是否可以在主存储库中工作,而不会造成一些我还不了解的主要问题。
谢谢!
编辑:我应该补充说,我已经学习了Joel Spolsky的HgInit.com教程,并且我对在ssh上推/拉/克隆/等等很满意,但我仍然不确定我是否可以在主存储库中工作,而不会在以后引起心痛。或者这更多的是一个哲学问题?谢谢!
发布于 2012-03-21 03:40:33
如果你
通过ssh轻松地推送/拉取/克隆/等等
不要忘了在家里的工作中执行pull|push cycle (为了不在家中运行hg服务器,并从服务器作为源进行同步),在每个地方都有完美的线性聚合历史记录,你根本不会感到头疼。即使你有时忘记同步repo,在最坏的情况下,你会得到两个头之后,你可以很容易地合并(不知道Stata和R数据文件的格式,但LaTeX,作为文本,是可合并的)
发布于 2012-03-21 08:38:51
直接在服务器上的存储库中工作是没有问题的。从Mercurial的角度来看,“主”存储库只是另一个随机存储库-Mercurial并不认为它有什么特别之处。
您不会直接这么说,但人们会问“当我推送到服务器时会发生什么?”答案是hg push
只将数据发送到存储库( .hg/
文件夹)。当您推送到工作副本时,服务器上的工作副本不会被触及。由于您将新的变更集推送到服务器,因此下次在服务器上工作时可能需要运行hg update
。这就像你在服务器上运行了hg pull
一样--在那里,你还需要在之后进行合并或更新。
我一直都有这样的情况:我在家里创建了一个存储库,并将其克隆到我工作的计算机上。我在任一位置更改文件,并在两个存储库之间进行推送/拉取。如果我需要与其他人分享我的工作,那么我会在Bitbucket上创建一个存储库,并将代码推送到那里。这样,Bitbucket就可以作为代码的一个很好的规范存储库,我通常会在家里和公司的存储库中更改Bitbucket的默认路径。所以在家里我会说:
[paths]
default = httsp://bitbucket.org/mg/<repo>/
work = ssh://mg@work/<repo>
这样我就可以使用hg push
将东西发送到Bitbucket,并让hg pull work
直接从工作中获取东西(以防我在离开之前忘记推送到Bitbucket )。
https://stackoverflow.com/questions/9797751
复制