拆分GitHub版本

时间:2015-10-16 14:40:48

标签: github

我刚刚将一个旧项目从自己的Subversion / Trac基础架构迁移到GitHub

https://github.com/matteocorti/nagios_plugins

存储库包含我编写的每个插件的一个目录。每个插件都是独立的,并且有自己的版本号(但源代码在同一个存储库中)。

当我发布新的插件版本时,我希望发布一个只包含相应文件夹的版本(例如https://github.com/matteocorti/nagios_plugins/tree/master/check_updates

有没有办法使用GitHub发布功能来选择存储库的哪个部分包含要发布的软件?

另一个选择是拆分整个并为每个插件创建一个存储库。这意味着我将不得不手动移动所有问题/错误和维基页面。

修改

似乎唯一的解决方案是拆分存储库(每个插件的单独存储库)。

如何拆分保留提交历史记录的Git存储库?

1 个答案:

答案 0 :(得分:1)

  

似乎唯一的解决方案是拆分存储库(每个插件的单独存储库)。

确实如此,但这不会迁移维基页面和问题。

要在保留历史记录的同时拆分git仓库,请参阅GitHub页面“Splitting a subfolder out into a new repository

git clone https://github.com/YOUR-USERNAME/YOUR-REPOSITORY
git filter-branch --prune-empty --subdirectory-filter \
 YOUR_FOLDER_NAME master
# Filter the master branch to your directory and remove empty commits
# Rewrite 48dc599c80e20527ed902928085e7861e6b3cbe6 (89/89)
# Ref 'refs/heads/master' was rewritten
  

存储库现在包含子文件夹中的所有文件   请注意,虽然以前的所有文件都已删除,但它们仍然存在于Git历史记录中。您现在可以将新的本地存储库推送到GitHub上的新存储库。

同时检查“How to tear apart a repository: the Git way

每个插件有一个repo后,您仍然可以在原始仓库中将其注册为git submodules

修改

将子文件夹推送到新存储库

git remote rename origin upstream
git remote add origin NEW_URL
git push origin master