【问题标题】:Git: clone/subtree/filter only sub-directory of 3rd party libGit:仅克隆/子树/过滤 3rd 方库的子目录
【发布时间】:2013-05-31 02:59:09
【问题描述】:

svn:externals "http://svn.3rdapp.com/project/subdir/subdir/ lib/mydir/subdir"

SVN 允许开发人员将 3rd 方库的子目录包含到他们自己的 repo 的子目录中。

我只想将第 3 方库的一个子目录包含到我的项目中,可能是一个可以编辑的子树,并且新的上游更改与我的编辑合并。

特别是 https://github.com/openid/php-openid/tree/master/Auth 包含在 Vendor/Auth 中,没有来自其他目录的任何文件或历史记录。

【问题讨论】:

标签: git subdirectory svn-externals git-subtree


【解决方案1】:

您可以使用 Git 的 sparseCheckout 功能,该功能在 1.7.0 版本中引入。它允许您在项目中包含存储库的特定子目录。请尝试以下步骤:

  1. git clone https://github.com/openid/php-openid.git Vendor/Auth
  2. cd 供应商/授权
  3. git config core.sparsecheckout true
  4. echo Auth/ > .git/info/sparse-checkout
  5. git read-tree -m -u HEAD

在上面的第 4 步中,Auth 子目录(您要使用的)被添加到 .git/info/sparse-checkout 文件中。

如果稍后您决定更改要使用的子目录,则只需编辑 sparse-checkout 文件并重做第 5 步。

【讨论】:

  • 是否可以将 sparsecheckout 和 read-tree 与子树一起使用?能够将第 3 方库单独更新到主存储库会很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-03
  • 2012-05-06
  • 2021-04-11
  • 2016-03-05
  • 2013-07-14
  • 2018-08-21
相关资源
最近更新 更多