本文档涵盖了 Gumroad 代码库中使用的 Git 仓库配置、忽略模式和版本控制实践。它详细介绍了 Git 如何配置以支持多环境 Rails 应用,包括 Docker 容器化、CI/CD 流水线和各种开发工具。
有关开发环境设置的信息,请参阅本地开发环境设置。有关 CI/CD 流水线集成的信息,请参阅CI/CD 流水线。
Gumroad 仓库采用了一套全面的 Git 配置策略,支持一个复杂的 Rails 应用,该应用包含 TypeScript 前端、Docker 容器化和自动化 CI/CD 工作流。此配置处理生成的文件、构建产物、凭据以及开发环境隔离。
仓库采用分层忽略策略,以在不同系统组件之间分离关注点。
来源: .gitignore1-63
仓库使用 Git 属性来处理特殊文件类型并改善 diff 行为。
| 文件模式 | 属性 | 目的 |
|---|---|---|
db/schema.rb | linguist-generated | 将数据库 schema 标记为自动生成 |
vendor/* | linguist-vendored | 将供应商文件标记为第三方代码 |
config/credentials/*.yml.enc | diff=rails_credentials | 对加密凭据进行特殊 diff 处理 |
config/credentials.yml.enc | diff=rails_credentials | 对加密凭据进行特殊 diff 处理 |
Git 配置通过支持构建过程和开发工具的忽略模式与开发工作流集成。
来源: .gitignore27-50
仓库维护一个 blame 忽略配置,以从 git blame 输出中过滤掉大型格式和样式提交。
| 提交类型 | 示例哈希 | 描述 |
|---|---|---|
| RuboCop 样式 | fab227a486208bc4c632a38959346afa9ceed709 | 大量样式规范添加 |
| RuboCop 对齐 | c31fc90531a7556ad2543e5d18b550fc206427c1 | 对齐规则强制执行 |
| ESLint 规则 | 9538b2f49b0e211adc73a171e7859a88d1d71771 | 基本 ESLint 规则添加 |
| Prettier 默认配置 | bc4670dcd25fbed8935552bf667984ac7c63b916 | Prettier 配置更新 |
| TypeScript 样式 | 3679e20c7b3934e94f29636683ef2b0ad2bb6673 | 数组语法标准化 |
| 迁移 RuboCop | eeacfe9731316c7b016b433ff7c4a31e119f3a68 | 迁移文件 linting |
| Sorbet 移除 | 1ac9e69ca44f7734b43b691a2f7d7290b1e24706 | 类型系统移除和清理 |
来源: .git-blame-ignore-revs1-20
在本地配置 Git 使用 blame 忽略文件
Git 忽略配置反映了多环境架构和基础设施工具。
来源: .gitignore13-63
Git 配置通过确保构建产物和环境特定文件不干扰自动化流程来支持 CI/CD 流水线。
| 模式 | 组件 | 目的 |
|---|---|---|
/public/packs | Webpack 输出 | 前端资产包 |
/public/packs-test | 测试资产 | 测试环境资产 |
public/assets/ | Rails 资产 | 编译后的 Rails 资产 |
revision | 构建元数据 | 构建修订版本追踪 |
web_base_sha | Docker 追踪 | 基础镜像 SHA 追踪 |
| 模式 | 工具 | 目的 |
|---|---|---|
.byebug_history | Byebug | Ruby 调试器历史记录 |
.sass-cache/ | Sass | CSS 预处理缓存 |
jhw*.html | Jasmine | JavaScript 测试输出 |
spoom_data/* | Spoom | Sorbet 分析数据 |
bin/dist | 构建工具 | 分发产物 |
来源: .gitignore28-55
Git 配置确保仓库保持整洁并专注于源代码,同时支持 Gumroad 平台所需的复杂构建、部署和开发工作流。