-
v0.21.1 — config 마이그레이션 Stable
released this
2026-05-31 13:58:08 +00:00 | 70 commits to main since this releaseconfig 마이그레이션 —
kebab config migrate(PR #198)config.toml 의 스키마가 버전을 거치며 늘어나도(예: v0.21.0 의
[ingest.expansion]), 기존 사용자의 config 파일은 그 새 섹션이 파일에 써지지 않아 파일을 열어봐도 새 노브의 존재를 알 수 없었습니다. 동작은serde기본값으로 호환됐지만, 사용자가 설정을 발견·조정할 길이 없던 셈입니다. DB 는 V00X refinery 마이그레이션이 있는데 config 에는 그런 메커니즘이 없었습니다 — 이번 릴리스가 이를 채웁니다.새 명령
kebab config migrate [--dry-run] [--json]- 기존
config.toml에서 빠진 섹션·키를 설명 주석과 함께 채워 넣습니다. 사용자가 직접 손본 값·주석·항목 순서는 그대로 보존합니다(없는 것만 추가). - 더 이상 쓰지 않는 항목(예:
workspace.include)은 정리합니다. - 멱등합니다 — 한 번 적용한 뒤 다시 실행하면
config 이미 최신입니다만 출력하고 파일을 건드리지 않습니다. - 변경 시 자동으로
<config>.bak백업을 만들고(원본과 바이트 동일), 임시 파일에 먼저 쓴 뒤 재파싱 검증에 성공해야 교체하므로 실패해도 원본이 보존됩니다. --dry-run으로 무엇이 바뀔지 미리 확인할 수 있고(파일 미수정),--json은config_migration.v1wire 스키마로 출력합니다.
함께 바뀐 것
kebab doctor에config_migration점검이 추가됐습니다. config 가 옛 스키마면ok=false로 표시하고kebab config migrate실행을 안내합니다(정상 동작하더라도 "정리할 게 있다"는 신호).kebab init이 생성하는 config.toml 이 이제 섹션별 설명 주석을 포함합니다(마이그레이션과 동일한 주석 원천을 공유).config.toml의schema_version이 그동안 장식이었으나, 이제 마이그레이션의 버전 축이자 동기화 마커로 의미를 갖고 기본값이1 → 2로 올라갑니다.
업그레이드 절차
기존 사용자는 한 번만 실행하면 됩니다:
kebab config migrate --dry-run # 무엇이 추가/정리될지 미리보기 kebab config migrate # 적용 (.bak 자동 백업)schema_version1→2 변경은 additive 입니다 — 데이터를 무효화하지 않고 읽기 호환도 유지되므로(옛 바이너리로 새 파일을, 새 바이너리로 옛 파일을 읽어도 동작), 재색인(reingest)은 필요 없습니다.검증
크레이트 테스트 +
clippy --workspace -D warnings+cargo test --workspace -j1(192 ok / 0 fail) + release 바이너리 도그푸딩(dry-run 미수정 /.bak바이트 동일 / 값·주석 보존 / deprecated 제거 / 새 섹션 가시화 / 멱등 / doctor /--json) 전부 통과. 상세는tasks/HOTFIXES.md2026-05-31 entry.Downloads
- 기존