Skip to main content

rebase

Rebase an OpenMeter branch onto another branch and handle repo-specific gotchas like sequential migrations, atlas.sum conflicts, Ent regeneration, and targeted verification.

Ir a la instalación

Datos de origen

Repositorio
openmeterio/openmeter
Última actividad en el origen
28 de julio de 2026 a las 15:14
Idioma detectado de SKILL.md
inglés
Estrellas
2281
Forks
213

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
name
rebase
description
Rebase an OpenMeter branch onto another branch and handle repo-specific gotchas like sequential migrations, atlas.sum conflicts, Ent regeneration, and targeted verification.
allowed-tools
Read, Edit, Write, Bash, Grep, Glob, Agent
# Rebase Gotchas Use this skill when rebasing an OpenMeter branch, especially onto `origin/main`, and there may be migration, Ent, or generated-code conflicts. ## Before rebasing - Check `git status --short --branch` first. - Do not start a rebase on top of unrelated uncommitted work without preserving it first. - Fetch the target branch explicitly before rebasing. ## Standard flow 1. `git fetch origin main` 2. `git rebase origin/main` 3. Resolve conflicts one commit at a time. 4. Prefer `GIT_EDITOR=true git rebase --continue` in non-interactive shells. ## First rule for conflicts When a rebase conflict appears, the first move should usually be regenerating generated artifacts: ```bash make generate ``` Treat this as the default first step before manually resolving conflicted generated files. Why: - conflicts often come from generated Ent code - conflicts can come from API-generated code - migration-related schema changes often need fresh generated output too In practice, regenerating first resolves or clarifies most conflicts much faster than hand-merging generated files. ## Migration conflicts OpenMeter migrations must stay sequential by timestamp. If a rebased commit introduces a migration that is now older than migrations already on the target branch: - Remove the older migration pair instead of keeping both. - Do not hand-edit the SQL to force it in. - Recreate the migration at the new head after regeneration. Typical flow: 1. Remove the outdated `.up.sql` and `.down.sql` files. 2. Regenerate code: ```bash make generate ``` 3. Generate a fresh migration at the current head: ```bash atlas migrate --env local diff <migration-name> ``` 4. Stage the newly generated migration pair and `tools/migrate/migrations/atlas.sum`. ## atlas.sum conflicts If `tools/migrate/migrations/atlas.sum` conflicts or gets out of sync: ```bash atlas migrate --env local hash ``` Then stage `atlas.sum`. Do not hand-edit checksum entries unless there is no other option. ## Ent and generated code - `openmeter/ent/schema/*.go` is the source of truth. - Never hand-edit `openmeter/ent/db/`. - After schema-related rebased changes, run `make generate` before regenerating migrations. - If generated files conflict, prefer regeneration over manual merge edits when possible. ## Shell/runtime notes - If the ambient shell is missing Go/toolchain binaries, use: ```bash nix develop --impure .#ci -c <command> ``` - Prefer direct command execution. Do not wrap commands in `sh -lc`, `bash -lc`, or similar helper shells when a direct invocation works. For environment variables, prefer `env KEY=value <command>` or `KEY=value <command>`. - Atlas migration diffing uses the local dev environment and may require the direnv shell: ```bash direnv exec . atlas migrate --env local diff <migration-name> ``` ## Verification Before continuing or finishing the rebase, run the smallest relevant test slice for the touched area. For ledger work, the usual check is: ```bash POSTGRES_HOST=127.0.0.1 go test -tags=dynamic ./openmeter/ledger/... ``` If there is a known pre-existing failure, call it out explicitly and separate it from any new regression introduced by the rebase. ## Important reminders - Never manually rewrite generated migration SQL unless the user explicitly wants that. - Never keep two migrations that represent the same schema change at different timestamps. - Prefer regenerating over “merging” generated artifacts. - Stage only the resolved files for the current rebase step before `git rebase --continue`.
Ver en GitHub