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