Version control Mercurial,有没有办法只存储对代码库的更改而不是整个代码库本身?

Version control Mercurial,有没有办法只存储对代码库的更改而不是整个代码库本身?,version-control,mercurial,Version Control,Mercurial,我的应用程序依赖于一个超过500兆的大型第三方库。我得到这个库的源代码是一个zip文件,一年发布几次。我需要能够对这个代码库进行更改,我希望这些更改能够保存在Mercurial存储库中,但我真的不想将一个500兆的代码库推送到远程存储库。首先,上传要花很长时间,它会占用我在远程服务器上的大部分空间,而且需要很长时间才能获取新的副本 所以我想知道的是:有没有办法只在远程存储库中存储对代码库所做的更改,而不推送整个代码库本身?因此,创建一个新的构建将包括从文件服务器下载的zip可再发行版本中安装原始

我的应用程序依赖于一个超过500兆的大型第三方库。我得到这个库的源代码是一个zip文件,一年发布几次。我需要能够对这个代码库进行更改,我希望这些更改能够保存在Mercurial存储库中,但我真的不想将一个500兆的代码库推送到远程存储库。首先,上传要花很长时间,它会占用我在远程服务器上的大部分空间,而且需要很长时间才能获取新的副本

所以我想知道的是:有没有办法只在远程存储库中存储对代码库所做的更改,而不推送整个代码库本身?因此,创建一个新的构建将包括从文件服务器下载的zip可再发行版本中安装原始代码库,将原始代码库初始化为Mercurial存储库,然后从远程存储库提取对该代码库所做的更改

还是有一种完全不同的方法来实现相同的目标?

Mercurial Queues(MQ)是处理对第三方代码的更改的建议方法。您可以将MQ修补程序存储在单独的存储库中

这里有一个例子。假设我们有第三方somelib.zip。我们第一次:

  • 把它取出来
  • 初始化存储库:
    hginit
    hgci-A-m'Init'
  • 启用MQ扩展
  • Init MQ:
    hg qinit——创建repo
  • 哈克
  • 创建修补程序:
    hg qnew first patch
  • 提交到修补程序存储库:
    hgci--mq-m“创建第一个修补程序”
  • 新版本的somelib.zip发布后,您可以使用
    hg qpop-a
    取消应用所有修补程序,抓取它并使用
    hg qpush-a
    再次应用所有修补程序

    假设现在我们想在另一台机器上使用somelib.zip。然后我们重复步骤1-3和下一步:

  • 克隆MQ存储库:`hg Clone./.hg/patches
  • 使用
    hg qpush-a
    应用所有修补程序
  • 关键特性是您拥有使用补丁库的所有Mercurial功能。许多命令都有选项
    --mq
    ,可以将它们切换到使用mq存储库。例如,您可以使用
    hgpush--mq
    推送提交


    下面是记录的演示:。

    稍微有点棘手的方法是,在存储库中存储的不是变更集本身,而是导出保存包补丁(由原始变更集生成)的结果。你想了解更多详情吗?是的,请了解更多详情。我还想知道是否有某种方法可以使用重定基来实现这一点。或者?