菜单

版本控制和 Git 配置

相关源文件

本文档涵盖了 Gumroad 代码库中使用的 Git 仓库配置、忽略模式和版本控制实践。它详细介绍了 Git 如何配置以支持多环境 Rails 应用,包括 Docker 容器化、CI/CD 流水线和各种开发工具。

有关开发环境设置的信息,请参阅本地开发环境设置。有关 CI/CD 流水线集成的信息,请参阅CI/CD 流水线

仓库配置概述

Gumroad 仓库采用了一套全面的 Git 配置策略,支持一个复杂的 Rails 应用,该应用包含 TypeScript 前端、Docker 容器化和自动化 CI/CD 工作流。此配置处理生成的文件、构建产物、凭据以及开发环境隔离。

Git 忽略策略

仓库采用分层忽略策略,以在不同系统组件之间分离关注点。

来源: .gitignore1-63

Git 属性配置

仓库使用 Git 属性来处理特殊文件类型并改善 diff 行为。

文件模式属性目的
db/schema.rblinguist-generated将数据库 schema 标记为自动生成
vendor/*linguist-vendored将供应商文件标记为第三方代码
config/credentials/*.yml.encdiff=rails_credentials对加密凭据进行特殊 diff 处理
config/credentials.yml.encdiff=rails_credentials对加密凭据进行特殊 diff 处理

来源: .gitattributes1-11

开发工作流集成

Git 配置通过支持构建过程和开发工具的忽略模式与开发工作流集成。

来源: .gitignore27-50

Blame 配置和代码质量

仓库维护一个 blame 忽略配置,以从 git blame 输出中过滤掉大型格式和样式提交。

忽略的提交类别

提交类型示例哈希描述
RuboCop 样式fab227a486208bc4c632a38959346afa9ceed709大量样式规范添加
RuboCop 对齐c31fc90531a7556ad2543e5d18b550fc206427c1对齐规则强制执行
ESLint 规则9538b2f49b0e211adc73a171e7859a88d1d71771基本 ESLint 规则添加
Prettier 默认配置bc4670dcd25fbed8935552bf667984ac7c63b916Prettier 配置更新
TypeScript 样式3679e20c7b3934e94f29636683ef2b0ad2bb6673数组语法标准化
迁移 RuboCopeeacfe9731316c7b016b433ff7c4a31e119f3a68迁移文件 linting
Sorbet 移除1ac9e69ca44f7734b43b691a2f7d7290b1e24706类型系统移除和清理

来源: .git-blame-ignore-revs1-20

启用 Blame 忽略

在本地配置 Git 使用 blame 忽略文件

来源: .git-blame-ignore-revs1-2

环境和基础设施模式

Git 忽略配置反映了多环境架构和基础设施工具。

来源: .gitignore13-63

CI/CD 集成模式

Git 配置通过确保构建产物和环境特定文件不干扰自动化流程来支持 CI/CD 流水线。

构建产物管理

模式组件目的
/public/packsWebpack 输出前端资产包
/public/packs-test测试资产测试环境资产
public/assets/Rails 资产编译后的 Rails 资产
revision构建元数据构建修订版本追踪
web_base_shaDocker 追踪基础镜像 SHA 追踪

开发工具集成

模式工具目的
.byebug_historyByebugRuby 调试器历史记录
.sass-cache/SassCSS 预处理缓存
jhw*.htmlJasmineJavaScript 测试输出
spoom_data/*SpoomSorbet 分析数据
bin/dist构建工具分发产物

来源: .gitignore28-55

Git 配置确保仓库保持整洁并专注于源代码,同时支持 Gumroad 平台所需的复杂构建、部署和开发工作流。