Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以在单用户Mercurial工作流中的存储库中工作吗?_Mercurial_Workflow - Fatal编程技术网

我可以在单用户Mercurial工作流中的存储库中工作吗?

我可以在单用户Mercurial工作流中的存储库中工作吗?,mercurial,workflow,Mercurial,Workflow,我在单用户工作流中使用Mercurial,以便在编码或编写出现严重错误时可以选择回滚更改(我主要使用Stata和R统计软件包以及LaTeX)。虽然只在本地工作,但这很容易,因为我只有主回购协议 最近,我开始将ssh移植到Linux服务器中以获得更高的计算能力。到目前为止,我一直在手动来回复制文件,并仅在本地使用Mercurial,但我希望使用Mercurial来处理这一问题,并保持这两个工作流的同步。此外,我喜欢在本地(笔记本电脑或台式机上)和服务器上编写代码的能力 我是否需要在服务器上复制主r

我在单用户工作流中使用Mercurial,以便在编码或编写出现严重错误时可以选择回滚更改(我主要使用Stata和R统计软件包以及LaTeX)。虽然只在本地工作,但这很容易,因为我只有主回购协议

最近,我开始将ssh移植到Linux服务器中以获得更高的计算能力。到目前为止,我一直在手动来回复制文件,并仅在本地使用Mercurial,但我希望使用Mercurial来处理这一问题,并保持这两个工作流的同步。此外,我喜欢在本地(笔记本电脑或台式机上)和服务器上编写代码的能力

我是否需要在服务器上复制主repo并保持主repo不变?或者,当我在服务器上时,我可以直接在主回购中工作吗?在@gizmo中指向;“单一开发人员”的讨论是有帮助的,但我仍然不清楚,当我在服务器上时,我是否可以在主repo中工作,而不会导致一些我还不了解的重大问题

谢谢

编辑:我应该补充一点,我已经完成了Joel Spolsky的HgInit.com教程,我可以通过ssh轻松地推/拉/克隆/etc,但我仍然不确定我是否可以在主回购中工作,而不会在以后引起心痛。或者这更像是一个哲学问题?谢谢

  • Mercurial是DVCS,它意味着-在每个位置都有:本地工作副本和本地存储库
  • Mercurial是DVCS,它意味着——您可以在回购协议之间自由交换(拉|推)数据(如果它们提供远程访问方法)
如果你

通过ssh轻松地推/拉/克隆/等


不要忘记在家里工作时执行拉-推循环(为了避免在家里主机上运行hg serve并从服务器作为源同步),每个地方都有完美的线性聚合历史,你根本不会感到头痛。即使有时忘记同步repo,在最坏的情况下,也会得到两个head,可以轻松合并(不知道Stata和R数据文件的格式,但LaTeX作为文本是可合并的)

直接在服务器上的存储库中工作没有问题。从Myuri的观点来看,“主”存储库只是另一个随机存储库——Myali不认为它是特殊的。 你不会直接这么说,但有一件事人们会问,“当我推到服务器上时会发生什么?”答案是
hg push
只将数据发送到存储库(
.hg/
文件夹)。推送到服务器时,服务器上不会触及工作副本。由于您将新的变更集推送到服务器,因此下次在服务器上工作时可能需要运行
hg update
。这就像您在服务器上运行了
hgpull
,之后您还将在那里进行合并或更新

我经常遇到这种情况:我在家里创建一个存储库,然后在工作时将它克隆到我的计算机上。我更改任意位置的文件,并在两个存储库之间进行推/拉操作。如果我需要与他人共享我的工作,那么我会在Bitbucket上创建一个存储库,并将代码推送到那里。这样,Bitbucket就可以作为代码的标准存储库,我通常会在家里和工作中的存储库中将默认路径更改为Bitbucket。所以在家里我会:

[paths]
default = httsp://bitbucket.org/mg/<repo>/
work = ssh://mg@work/<repo>
[路径]
默认值=httsp://bitbucket.org/mg//
工作=ssh://mg@工作/

这样我就可以做
hg push
将东西发送到Bitbucket,并
hg pull work
直接从工作中抓取东西(以防我离开前忘记推到Bitbucket)。

好的,谢谢!阅读您的答案让我意识到,我对在主回购中工作的犹豫是,在示例中,他们从未
hg更新主回购。但是他们不必这样做,因为
hg push
提供了所有的差异,并且没有人在处理主回购,因此不需要生成更新的文件。谢谢谢谢第三段和代码块非常有用。我想我对“主要”回购的想法有点偏离了。“Main”真的不是一个选择。@richardh:没错,拥有一个“Main”存储库只是一个惯例。