为git子模块提供自定义文件

时间:2014-08-03 21:31:52

标签: git git-submodules

我的项目使用Varying-Vagrant-Vagrants作为/machine中的子模块。

VVV提供了通过自定义文件进行配置的可能性。我的自定义文件是:

machine/
├── Customfile
├── config
│   └── nginx-config
│       └── sites
│           └── mysite.conf
└── www
    └── mysite
        ├── vvv-hosts
        ├── vvv-init.sh
        └── wp-cli.yml

这些路径在VVV的.gitignore文件中都被忽略。

在我的项目中提供这些文件的好方法是什么,以便在整个项目被递归克隆时,它们与vvv位于同一目录中? 希望无需制作跟踪这些文件的分支

只需添加包含这些文件的子模块,就会产生以下结果:

$ git submodule add https://github.com/Varying-Vagrant-Vagrants/VVV.git machine/
'machine' already exists and is not a valid git repo

由于

1 个答案:

答案 0 :(得分:0)

来自git help submodule

  

子模块允许将外部存储库嵌入专用存储库中          源树的子目录,始终指向特定的提交。

您对git submodule add的调用正在抱怨,因为您正在尝试将外部VVV存储库嵌入子目录machine中,正如消息所述,该子目录已存在并且不是有效的git存储库。< / p>

要获得所需的目录结构,machine作为VVV目录的子目录,您必须将您的repo作为他们的子模块,而不是相反。

考虑到这一点,我不知道你怎么能得到一个git clone来拉回两个回购并按照你的意愿组织它们。接下来最好的方法是让你的repo将VVV repo作为与你的machine目录并行的子模块/子目录拉出来,并包含一个脚本,用于从VVV子目录中建立machine的符号链接。