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