Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.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 HG时,如何获取最新的代码?_Mercurial - Fatal编程技术网

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

使用Mercurial HG时,如何获取最新的代码?,mercurial,Mercurial,我是Mercurial HG的新手。我的朋友创建了回购协议,我将使用它。 我安装了Ortoisehg并试图获取最新的代码。我发现当使用克隆操作时,它会将所有代码拉到本地,包括历史记录(对吗?)。我不需要这个。我只想知道最新的密码。是否有此操作?克隆存储库后,要获取“tip”的代码(当前分支的最新版本-如果没有精确,则为默认版本),只需更新 您在Ortoisehg中有一个更新操作。完成后,您可以查看文件夹中的文件 如果您想要存储库的另一个状态(旧版本或旧标记状态),那么它仍然是update命令,带

我是Mercurial HG的新手。我的朋友创建了回购协议,我将使用它。
我安装了Ortoisehg并试图获取最新的代码。我发现当使用克隆操作时,它会将所有代码拉到本地,包括历史记录(对吗?)。我不需要这个。我只想知道最新的密码。是否有此操作?

克隆存储库后,要获取“tip”的代码(当前分支的最新版本-如果没有精确,则为默认版本),只需
更新

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


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

如果您只想要最新的代码,而不打算使用它来执行与存储库相关的任何操作,如提交,或者与旧版本不同,或者诸如此类,那么这取决于您从何处获得代码以及如何获得代码

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

例如,如果你去的话,右边有一个“Get source”链接,它为你提供了一些文件格式的选择(zip或其他格式)

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

简而言之,没有

再过一段时间:Mercurial还不支持“浅层”克隆,因为您只能获得部分历史。因此,每次克隆时,都会拉入包含所有变更集的整个存储库


此外,与Subversion不同的是,没有办法在只签出存储库的一部分的情况下创建“窄”克隆。例如,如果存储库具有目录
foo/
bar/
,则无法仅获取
bar/
目录。换句话说,Mercurial总是在项目范围内的快照上运行。

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

实现所需的最简单方法:

hg archive [destination folder]

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

[extensions]
hgext.convert= 
现在,您可以从指定的修订版开始使用convert extension to“clone”only变更集

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

如果您要在“中央服务器”上使用这个缩小的存储库,请记住,在继续工作之前,要注意每个人都要克隆它。存储库之间不再兼容。

Mercurial现在支持使用
remotefilelog
扩展进行浅层克隆。mercurial可能从4.9版开始就与该扩展捆绑在一起。旧版本需要下载扩展,例如从github下载

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

[extensions]
remotefilelog =

[remotefilelog]
server = True
serverexpiration = 14
客户

[extensions]
remotefilelog =

[remotefilelog]
cachepath = /some/path
cachelimit = 5 GB
相比之下,您可以使用更小的占地面积和更快的克隆速度进行浅克隆:


hg克隆——浅层ssh://user@服务器/repo

问题是,克隆整个repo仍然需要花费大量时间。看来必须…谢谢你们所有的人!虽然我仍然要克隆整个回购协议,但我确实从每个答案中了解到更多有关Mercurial HG的信息!我确实需要执行签入和添加文件等操作。不过我还是把Mercurial当作SVN来对待……看来历史对Mercurial来说很重要。它将始终包括整个历史。我将答案中的术语更改为我们在Mercurial中通常使用的术语:当您只获得部分历史时,我们谈论“浅”克隆,而当您只获得部分文件树时,我们谈论“窄”克隆。人们已经为浅克隆制作了原型,但是它们还不是主要发行版的一部分。谢谢你的澄清,Martin。Git赢了!这可能是我开始迁移的充分理由。这个答案假设可以获得一次完整克隆,从那时起只使用部分克隆。如果您确实需要一些历史记录,但只需要回到某个版本,那么这是一个很好的解决方案。如果你想在没有任何历史的情况下重新开始:1。从完整克隆开始。2.运行hg清单并将结果保存到文件中。3.删除.hg文件夹。4.运行hgint。5.在保存的文件列表上运行hg add。