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.

Zur Installation springen

Quellinformationen

Repository
openmeterio/openmeter
Letzte Quellaktivität
28. Juli 2026 um 15:14
Erkannte Sprache von SKILL.md
Englisch
Sterne
2.281
Forks
213

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
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`.
Auf GitHub ansehen