docs(adr): propose git history strategy for folding repos into ui-kit#7910
Conversation
|
✅ Snyk checks have passed. No issues have been found so far.
💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse. |
7eb9b10 to
4c61c29
Compare
There was a problem hiding this comment.
Pull request overview
Adds a repo-level Architecture Decision Record (ADR) documenting the proposed Git history strategy for folding external repos (e.g., @coveo/relay, coveo.analytics.js) into ui-kit while keeping main clean under the squash-only merge policy.
Changes:
- Introduces a new ADR under
docs/adr/to centralize cross-cutting decisions at the repo level. - Compares three history-preservation strategies and recommends Option A (squash + permanent
archive/<lib>-historybranch + publishedgit replacegraft). - Documents operational rollout steps (migration, publishing archive refs and replace refs, CI impact, rollback).
@coveo/atomic
@coveo/atomic-hosted-page
@coveo/atomic-legacy
@coveo/atomic-react
@coveo/auth
@coveo/bueno
@coveo/create-atomic
@coveo/create-atomic-component
@coveo/create-atomic-component-project
@coveo/create-atomic-result-component
@coveo/create-atomic-rollup-plugin
@coveo/headless
@coveo/headless-react
@coveo/shopify
commit: |
4c61c29 to
ac5ca0a
Compare
louis-bompart
left a comment
There was a problem hiding this comment.
I am wondering whether enough git blame occured in the last couple of years be it on Relay or CAJS to be worth the hassle of going any further than B.
My issue with A is that it adds a new "snowflake" concept with the archive branchs, that may get lost overtime.
IMO, we might want to go with a KISS approach here and hence select B.
8fe81b6 to
9ba3960
Compare
9ba3960 to
810d4f2
Compare
Problem
When folding
@coveo/relayandcoveo.analytics.jsinto ui-kit, each source repo carries hundreds of commits (relay ~300+). We need a documented, agreed strategy for what happens to that history in ui-kit — balancing a cleanmainagainst access togit blame, while respecting ui-kit's squash-only merge policy.Solution
Adds a repo-level ADR at
docs/adr/0001-git-history-strategy-for-folded-repos.md(establishing a cross-cuttingdocs/adr/location; existing ADRs are package-scoped).The ADR (status: Proposed) lays out three options and, following team review, selects Option B (KISS): squash-merge the integration PR for a clean
main, and preserve history by keeping the original repos archived (read-only) on GitHub rather than importing it into ui-kit.main, no branch-protection exception, no new long-term git concepts; deepgit blamefor the folded code lives in the archived repos. Deep blame on these libs is rare, so this is good enough.mainwith in-repo opt-in blame via a publishedgit replacegraft — but adds a new long-termarchive/*ref + graft; for daily work it's barely different from B, so the extra machinery isn't justified.mainpermanently and needs a branch-protection exception.Appendix — the graft approach (Option A), for the curious
A public throwaway repo reproduces the Option A graft technique we evaluated (kept here as reference, even though we're going with B):
Repo: https://github.com/alexprudhomme/uikit-git-history-graft-demo
Related: RFC – Unify JS libraries under UI-KIT, DRAFT Technical implementation steps.