多CSV数据集合并场景下Git仓库选型与结构设计咨询
最优方案选择与仓库结构设计
方案优劣分析与推荐
排除的方案
- 方案(b):单仓库多分支存储数据集:Git分支的核心用途是并行开发(如功能迭代、bug修复),而非隔离不同数据集。用分支区分A/B/C会导致合并主数据集时冲突频发,贡献者切换分支成本高,完全不符合Git的最佳实践,直接排除。
- 方案(c):Git Submodule:你已明确标注为非优先选项,且该方式对新手贡献者不友好——容易出现submodule未更新、版本不一致等问题,同步维护成本高,不推荐。
推荐方案二选一
优先选方案(a):单仓库整合所有内容
适合你的核心场景:降低开源贡献者的参与门槛(只需熟悉一个仓库),合并与发布流程更直观,同步更新的自动化配置更简单。
备选方案(d):多仓库独立维护+主仓库合并
适合各数据集由不同团队独立管理、需要严格权限隔离的场景,但需要配置自动化同步流程(下文会说明)。
方案(a):单仓库的最优目录结构
参考你现有各数据集的目录结构,按数据集隔离+主数据集专属目录的思路设计,既保留原有处理流程,又清晰区分合并逻辑:
├── datasets/ │ ├── dataset_A/ │ │ ├── source_data/ # 原始数据源文件 │ │ ├── raw_data/ # 未经清洗的原始采集数据 │ │ ├── processed_data/ # 清洗后的数据集 │ │ ├── figure/ # 数据可视化图表 │ │ ├── function/ # 专属数据处理R函数 │ │ └── markdown/ # 数据集处理文档(RMD等) │ ├── dataset_B/ # 与A结构完全一致 │ └── dataset_C/ # 与A结构完全一致 ├── main_dataset/ │ ├── merge_logic.R # 合并A/B/C的核心R脚本 │ ├── merged_master.csv # 最终生成的主数据集 │ └── data_summary/ │ ├── summary_report.Rmd # 数据摘要生成文档 │ └── output/ # 摘要输出(用于GitHub Pages发布) ├── .github/ │ └── workflows/ │ └── auto_update.yml # CI工作流:当datasets目录有更新时,自动运行merge脚本+发布Pages ├── README.md # 项目说明、贡献指南入口 └── CONTRIBUTING.md # 详细贡献步骤(如针对单个数据集提交PR的方法)
同步更新逻辑
- 贡献者针对单个数据集提交PR(如修改dataset_A的处理脚本),合并后触发CI工作流。
- CI自动执行
merge_logic.R,拉取三个数据集的processed_data合并生成主数据集,再运行summary_report.Rmd生成摘要,最后发布到GitHub Pages。
方案(d):多仓库的同步流程实现
若选择多仓库模式,核心是通过CI/CD自动化实现数据集更新到主仓库的同步:
- 各数据集仓库配置触发事件:在A/B/C仓库的
.github/workflows中添加工作流,当processed_data目录有更新并推送到主分支时,向主仓库发送触发请求(可通过GitHub API或Repository Dispatch事件)。 - 主仓库配置同步工作流:
- 接收触发事件后,自动拉取A/B/C仓库的最新
processed_data文件(可通过git clone临时拉取或GitHub API获取)。 - 运行主仓库中的合并脚本生成主数据集,生成数据摘要。
- 将主数据集和摘要文件提交到主仓库,并自动发布到GitHub Pages。
- 接收触发事件后,自动拉取A/B/C仓库的最新
- 贡献流程:贡献者需提交PR到对应数据集的仓库,主仓库无需手动操作,完全由自动化流程同步。
内容的提问来源于stack exchange,提问作者kanu
相关产品推荐
相关产品推荐

