使用Mercurial HG时,如何获取最新代码?

时间:2010-11-17 14:09:05

标签: mercurial

我是Mercurial HG的新手。我的朋友创建了一个回购,我将使用它。 我安装了TortoiseHG并尝试获取最新代码。我发现在使用克隆操作时,它会将所有代码拉到我的本地,包括历史记录(我是不是?)。这不是我需要的。我只是想得到最新的代码。这是否有操作?

7 个答案:

答案 0 :(得分:18)

简而言之,没有。

稍长一点:Mercurial还不支持“浅层”克隆,你只能获得历史的一部分。因此,每次克隆时,都会使用所有更改集拉入整个存储库。

此外,与Subversion不同,没有办法制作一个“窄”克隆,只能检出存储库的一部分。例如,如果存储库具有目录foo/bar/,则无法仅获取bar/目录。换句话说,Mercurial始终在项目范围的快照上运行。

答案 1 :(得分:5)

实现目标的最简单方法:

hg archive [destination folder]

答案 2 :(得分:4)

克隆存储库后,要获取“提示”的代码(当前分支的最后一个版本 - 如果没有预先准备,则为默认代码),您只需要update

您在TortoiseHG中有更新操作。完成后,您可以查看文件夹中的文件。

如果您想要存储库的另一个状态(旧版本或旧标记状态),那么它仍然是update命令,以及其他参数(请参阅文档或TortoiseHG接口)。

答案 3 :(得分:3)

如果你只想要最新的代码,并且你不打算用它做任何与存储库相关的事情,比如提交,或者差异到旧版本,或者其他什么,那么你取决于你从哪里得到代码以及如何。

如果他正在使用托管服务之一,比如bitbucket,通常会有一个下载链接,只提供源代码。

例如,如果你去here,就会在右边有一个“获取源”链接,它会为你提供一些文件格式选择(zip或诸如此类的。)

如果您在其他地方获得了文件,则需要探索从中获取的界面。尝试将您克隆的链接粘贴到浏览器中,看看你得到了什么。

答案 4 :(得分:2)

不确定。克隆存储库,然后删除.hg子目录。

答案 5 :(得分:2)

我可能会有点迟,但实际上有可能忘记Mercurial的一些历史。您只需要从您的mercurial.ini文件或.hgrc文件启用转换扩展。

[extensions]
hgext.convert= 

现在您可以将转换扩展名用于"克隆"仅从指定的修订开始的更改集。

hg convert --config convert.hg.startrev=[wheretostart] path_to_full_history_repo path_to_new_repo

请注意,这与hg clone的操作不同。这就是源存储库必须是本地存储库的原因。例如,如果我们在文件夹MyProject中有一个存储库,我们想要忘记在修订版100之前完成的所有更改。我们可以使用以下命令:

hg convert --config convert.hg.startrev=[100] MyProject MyShrinkedProject

如果您打算在中央服务器上使用这个缩小的存储库"记得要注意每个人在继续工作之前克隆它。存储库不再相互兼容。

答案 6 :(得分:1)

Mercurial现在支持使用remotefilelog扩展名的浅表克隆。自4.9版本起,扩展与Mercurial捆绑在一起。较旧的版本需要下载扩展程序,例如来自github。

您必须在服务器上启用它,例如:

[extensions]
remotefilelog =

[remotefilelog]
server = True
serverexpiration = 14

并在客户端上

[extensions]
remotefilelog =

[remotefilelog]
cachepath = /some/path
cachelimit = 5 GB

比您可以用更小的足迹a和更快的克隆速度进行浅克隆:

hg clone --shallow ssh://user@server/repo