2010-01-21 95 views
3

Mercurial的网站有关创建一个项目这样说:Mercurial在创建本地存储库时是否创建服务器进程?

创建一个项目,并承诺

$ hg init (project-directory) 
$ cd (project-directory) 
$ (add some files) 
$ hg add 
$ hg commit -m 'Initial commit' 

我需要一个单一的用户,本地仓库。我认为这是诀窍,对吧?我不明白的是:它会打开一个服务器进程,还是每次调用它时都会执行所有工作?

+0

您可能需要更改帖子的标题以反映您的实际问题,以便稍后人们搜索时更容易找到它。 – Omnifarious 2010-01-21 07:38:04

+0

如果您能想到更好的标题,请随时更改。我想不出一个。 – Geo 2010-01-21 07:39:26

+0

“Mercurial在创建本地存储库时是否创建服务器进程?” – Omnifarious 2010-01-21 07:40:50

回答

10

hg二进制文件每次调用时都会执行所有的工作。

hg并不需要服务器。您可以使用hg serve命令轻松创建一个命令,但这与其他人进行交互的意义更强,默认情况下它不允许写入权限。

Mercurial很长一段时间没有写权限的服务器存活下来。一个分散的VC系统实际上并不需要一个,或者至少它不是靠中央系统的绝对要求。每个人都只是写信给他们的本地存储库,然后将他们的更改通告给其他人(比如'官方'树的维护者)。

事实上,即使您有一个中央服务器可以推送到,您仍然会在推送它们之前将更改提交到本地存储库。推送更像是同步数据库,而不是像您如果习惯Subversion或Perforce之类的事情那样提交。

Mercurial在当前目录或父目录或父级的父级等中查找名为.hg的目录以确定它是否位于Mercurial存储库中。 hg init命令将适用于没有任何管理权限的用户。

0

这几乎是诀窍。但是,你指的是什么服务器进程?

+0

我知道例如SVN有一个服务器,每个人都在提交。我只想知道我是否可以开始工作,不用担心服务器。 – Geo 2010-01-21 07:40:04

3

没有服务器进程,二进制确实在做所有的工作。那是DVCS:你在本地工作;您的项目目录同时在工作目录存储库中。

直到你开始分享你的代码,没有服务器的任何地方。

+0

所以没有额外的设置要做?如果我以这种方式创建项目,hg将始终知道我正在处理本地存储库?顺便说一句,这项工作将在用户没有管理权限的计算机上工作吗? – Geo 2010-01-21 07:38:57

+1

@Geo:是的,是的。在Mercurial中,你总是在本地回购。与其他人共享代码只是两个存储库的同步(“推”和“拉”)。您总是*首先*提交给您自己的本地存储库,然后*(也许)将回购更新推送到别处。至于管理权限:所有内容都保存在'project-directory'下的目录结构中,所以只要你有写入权限,你就可以。 – balpha 2010-01-21 07:48:14

相关问题