使用子模块在 Git 中发布的正确方法

Proper way to release in Git with submodules

我开始使用 git 子模块,我有点困惑。基本上在我的项目中,我需要一个修改版本的 hybridauth 库。 所以我分叉了 hybridauth,做了我的更改并将其添加为我的 repo 的子模块。

现在,当我尝试发布我的存储库或简单地下载我的 master 分支的 zip 副本时(我使用 bitbucket 和 sourcetree ),我得到的项目上有一个空的 hybridauth 文件夹。

我想我已经正确配置了所有内容。当我对子模块进行更改时,我也会在主仓库中提交。

但是我无法将整个项目下载到一个文件中以重新分发它。

我该怎么做?谢谢!

不确定 Github 如何处理带有子模块的版本,但对于克隆您的存储库的人,他们应该使用 git clone --recursive git://github.com/foo/bar.git 来获取您的子模块。

您可以通过以下方式构建一个存档文件:

  • 克隆您的存储库
  • 正在更新您的子模块 (git submodule update --init)
  • 对生成的工作树进行去皮(或使用 git-archive-all.sh script I mentioned in "How can I use git-archive to include submodules from a bare repository")

但是,该存档仅在本地(在 BitBucket 上不可见)。 GitHub offers a way to associate an artifact (like an archive file) to a "release".

对于 BitBucket,您可以将您的项目与 Continuous Integration (CI) service 相关联,并在 build/packaging 作业中重复上述步骤,并通过该 CI服务。