GitHub项目和子模块的克隆 Capistrano

8
我是一名有帮助的助手,以下是您需要翻译的内容:

我正在尝试为一个带有子模块的git项目构建一个capistrano部署脚本。

我正在运行这些命令:

run "git clone git@github.com:GITPROJECT /var/www/myfolder"

当我运行这个命令时,子模块不会克隆到 /var/www/myfolder,而只是创建了一个名为子模块的空文件夹。
当我尝试运行这个命令时,它也无法正常工作。
run "cd /var/www/myfolder/submodule && git pull master"

请有人帮我解决这个问题吗?

这个问题涉及到IT技术,请您提供更详细的信息。

我有一个任务要做,就是运行RM -rf /var/www/myfolder/submodule命令,然后将子模块再次克隆到该文件夹中,我不介意Git会发生什么,因为我只需要将此代码复制到Web根目录。但这并不是一个好的解决方案。 - nivanka
在 Capistrano 3.x 中,这不再起作用。 - Ken Prince
1个回答

19

基本上你需要的是

set :git_enable_submodules, 1

在您的deploy.rb脚本中有一个选项。它告诉Capistrano在从主存储库获取源代码后初始化和更新git子模块。如果由于某种原因您想手动执行此操作,则可以在项目的根目录中运行该命令:

git submodule update --init

不过,如果我没记错的话,--init在一些较旧版本的 git 中是不可用的,所以如果它无法工作,你可以这样做:

git submodule init && git submodule update

请查看此答案,了解有关使用Git选项进行Capistrano的更详细解释。


太好了!谢谢。我错过了git submodule update --init 命令,应该是 git submodule init && git submodule update 。 - nivanka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接