使用子模块在 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服务。
我开始使用 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 usegit-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服务。