目前正在做一个项目。我们希望用完整的信息(作者等)开源我们的日常提交,同时过滤掉一些特定的私人文件夹。
假设我在分支 master 中提交 A/file1 和 B/file2,我希望将其镜像到 GitHub 上并过滤 B 文件夹(此提交只有 A/file1)。
我想这样做的一种方法是远程更新挂钩:
- 列出 newref 添加的所有新提交(比如说 lastfoundcommit..newref)
- 逐一修改这些提交(从 lastfoundcommit 到 newref)以删除不需要的文件
- 在此过程中,它可能会创建一个本地主过滤分支(如果它有助于在本地拥有它)
- 将此分支推送到公共存储库
- 以某种方式在私有和公共提交之间保留提交 ID 的映射,以便在下次推送时轻松计算“lastfoundcommit”
理想情况下,它可以是双向的(即,如果我们也可以导入回 github 分支并拉取请求,并让它们“重新定位”在我们的私有存储库之上,无论是自动还是通过简单的过程——可能并不难因为它可能只是一个变基)。
这有点类似于 git-subtree 可以做的,除了它不是提取子目录而是过滤各种文件。
这看起来可行吗?或者有什么其他建议?(可能基于 git filter-branch?或任何其他可能对我有帮助的现有工具/脚本?)
注意:子模块不是一个可行的选择,因为它们可能很稀疏并且会妨碍太多。此外,“私人”文件列表可能会随着时间的推移而扩展/更改。