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

时间:2017-04-07 20:24:01

标签: git github symlink git-submodules

有两个复杂的项目和我新创建的项目,为了简单起见,所有托管在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

1 个答案:

答案 0 :(得分:1)

  

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

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

  

这里的最佳做法是什么?

Dunno,但我发现: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(或.bashrc。在Windows上)。