【问题标题】:Can a git submodule be restricted to a single resource?可以将 git 子模块限制为单个资源吗?
【发布时间】:2017-04-07 20:24:00
【问题描述】:

有两个复杂的项目和我新创建的一个,为了简单起见,都托管在 Github 上,比如说

  • https://github.com/vendor/asset/,
  • https://github.com/standard/metadata/
  • https://github.com/me/mashup/

在我的项目中,我只需要来自第一个存储库的一个子树(即一个文件夹和其中的所有文件),比如./assets/img/,以及来自第二个存储库的一个文件(每个来自它们的主分支),比如./data/names.json。两者都会不时更新。

据我了解.gitmodules 文件和git submodule 命令的文档,没有办法直接实现这一点。这意味着以下(或类似的)将不起作用:

[submodule "assets"]
  path = images/vendor
  url = git://github.com/vendor/asset.git:/assets/img/

[submodule "metadata"]
  path = standard-names.json
  url = git://github.com/standard/metadata.git:/data/names.json

这里的最佳做法是什么?我可以将子模块放在隐藏文件夹中并在我想要的位置创建符号链接吗?

images/vendor       -> .ext/vendor/assets/img/
standard-names.json -> .ext/standard/data/names.json

【问题讨论】:

    标签: git github symlink git-submodules


    【解决方案1】:

    一个 git 子模块可以限制为单个资源吗?

    不,克隆 = 带有一个或多个分支的漏洞回购。

    这里的最佳做法是什么?

    不知道,但我找到了:https://stackoverflow.com/a/18590081/2093187

    我可以将子模块放在一个隐藏文件夹中,然后在我想要的地方创建符号链接吗?

    是的,请参阅上面的链接。


    另一种方法是修改你的 git (status) 命令

    git()
    {
        if [[ $# -ge 1 && "$1" == "status" ]]
        then
            echo Your git-status pre-hook…
            # wget -O destination url
            curl -o destination url
        fi
    
        command git "$@"
    }
    

    将其放入 .bashrc(或 Windows 上的 .bashrc.)中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-20
      • 1970-01-01
      • 2015-06-02
      • 2021-06-14
      • 2011-10-23
      • 1970-01-01
      • 2015-01-28
      • 1970-01-01
      相关资源
      最近更新 更多