使用本地Git子模块进行部署

使用本地Git子模块进行部署,git,deployment,git-submodules,Git,Deployment,Git Submodules,这是当前的设置。我有一个: 网络驱动器上的中央Git存储库(源) 本地硬盘上的工作副本 要将项目部署到的web服务器上的存储库 我使用一个子模块拉入托管在GitHub上的框架。我的理解是,当我将子模块添加到存储库时,它会将存储库从GitHub下载到本地工作目录,然后在那里签出所需的版本,并最终推送到源 当我将代码提交到源存储库时,它是否也会推送框架的副本,或者只是因为没有更好的词,才存储指向远程存储库的引用/指针 我问这个问题是因为我想创建一些我经常在这个框架中使用的第三方工具的存储库(目前

这是当前的设置。我有一个:

  • 网络驱动器上的中央Git存储库(源)
  • 本地硬盘上的工作副本
  • 要将项目部署到的web服务器上的存储库
我使用一个子模块拉入托管在GitHub上的框架。我的理解是,当我将子模块添加到存储库时,它会将存储库从GitHub下载到本地工作目录,然后在那里签出所需的版本,并最终推送到源

当我将代码提交到源存储库时,它是否也会推送框架的副本,或者只是因为没有更好的词,才存储指向远程存储库的引用/指针

我问这个问题是因为我想创建一些我经常在这个框架中使用的第三方工具的存储库(目前没有使用Git进行管理),这样我就可以轻松地将它们拉到需要它们的项目中。目标是在需要时随时更新我的本地第三方存储库,并使用更新的版本更新各个项目

我部署项目的方式是将项目推送到web服务器,然后web服务器将使用
post-receive
hook部署应用程序。潜在的问题可能是,如果Git不推送子模块本身,而只推送一个指针(我认为是这样),因为这就是
Git submodule init&&Git submodule update
的目的,web服务器将无法获取子模块内容的副本

我能想到的最简单的解决方案是使用面向公众的服务(如GitHub或Bitbucket)托管这些第三方工具,但我想知道是否还有其他方法

当我将代码提交到源存储库时,它是否也会推送框架的副本,或者只是因为没有更好的词,才存储指向远程存储库的引用/指针

后者:它存储a(as),这意味着如果您已执行以下操作:

  • 子模块中的任何签出(即,您已更改了头,但未修改任何文件),您需要返回父repo,添加、提交并推送反映子模块新头SHA1的新特殊条目
  • 子模块中的任何文件修改,您需要:
    • 添加、提交并将该子模块推回其原点
    • 返回父回购、添加、提交和推送
post-receive钩子可以处理一个
git子模块更新--init--recursive
步骤。

当我将代码提交到源存储库时,它是否也会推送框架的副本,或者只是因为没有更好的词,才存储指向远程存储库的引用/指针

后者:它存储a(as),这意味着如果您已执行以下操作:

  • 子模块中的任何签出(即,您已更改了头,但未修改任何文件),您需要返回父repo,添加、提交并推送反映子模块新头SHA1的新特殊条目
  • 子模块中的任何文件修改,您需要:
    • 添加、提交并将该子模块推回其原点
    • 返回父回购、添加、提交和推送
post-receive钩子可以处理一个
git子模块更新--init--recursive
步骤。

请参阅。

+1因为这很有帮助,但是我仍然想知道将本地子模块放到远程服务器上的最佳方法,如果可能,当本地可以推送到远程,但远程不能从本地拉过来。+1因为这很有帮助,但是我仍然想知道将本地子模块放到远程服务器上的最佳方法,如果可能的话,当本地可以推送到远程,但远程不能从本地拉。