Skip to content

Commit 50784a4

Browse files
Add Pre-flight Checks section: Quartz fork, GitHub Pages, conflict map
Agent-Logs-Url: https://github.com/loganfinney27/PyTutorial/sessions/ad3928f4-b9b5-4cf1-96a6-91483a790154 Co-authored-by: loganfinney27 <136375980+loganfinney27@users.noreply.github.com>
1 parent dfe0b06 commit 50784a4

1 file changed

Lines changed: 91 additions & 8 deletions

File tree

MIGRATION.md

Lines changed: 91 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,66 @@ LAF-PRIVATE/
5151

5252
---
5353

54+
## Pre-flight Checks: How the Existing Repos Interact
55+
56+
Before merging anything, these cross-repo dependencies must be understood and explicitly resolved.
57+
58+
### 1. THE-GEMSTONE is a Quartz 4.0 fork — not plain content
59+
60+
THE-GEMSTONE is NOT a simple collection of documents. It is a full fork of the [Quartz](https://quartz.jzhao.xyz/) static site generator (v4). Its root contains an entire Node.js build system:
61+
62+
| File / Dir | Purpose |
63+
|---|---|
64+
| `quartz/` | Quartz framework source (TypeScript, plugins, styles) |
65+
| `quartz.config.ts` | Site configuration — sets `baseUrl: "thegemstone.org"` |
66+
| `quartz.layout.ts` | Layout customization |
67+
| `package.json` / `package-lock.json` | Node.js dependencies |
68+
| `tsconfig.json`, `globals.d.ts`, `index.d.ts` | TypeScript config |
69+
| `Dockerfile` | Container build for local preview |
70+
| `content/` | Obsidian Markdown source notes (the actual publication content) |
71+
| `.github/workflows/deploy.yml` | CI pipeline: builds Quartz → deploys to GitHub Pages |
72+
73+
When merged flat into LAF-PUBLIC, all of these files land at the repo root and will conflict with files from other source repos (e.g., multiple `README.md`, `package.json`, `.gitignore`, `.github/workflows/` files).
74+
75+
### 2. THE-GEMSTONE self-deploys to GitHub Pages with a custom domain
76+
77+
THE-GEMSTONE's `.github/workflows/deploy.yml` runs on every push to `main`:
78+
1. Checks out the repo
79+
2. Runs `npm ci && npx quartz build` → outputs to `public/`
80+
3. Uploads the `public/` artifact and deploys it via `actions/deploy-pages`
81+
82+
The site is served at the custom domain **`thegemstone.org`** (configured in `quartz.config.ts`).
83+
84+
**Impact on migration:** Moving THE-GEMSTONE into LAF-PUBLIC means:
85+
- GitHub Pages must be enabled on **LAF-PUBLIC** in repo Settings → Pages → Source: GitHub Actions
86+
- The `CNAME` / custom domain (`thegemstone.org`) must be re-configured on LAF-PUBLIC
87+
- `quartz.config.ts``baseUrl` value may need updating if the domain changes
88+
- The deploy workflow must still exist at `.github/workflows/deploy.yml` in LAF-PUBLIC after the merge (it will come in via the flat merge — confirm there are no conflicts with other workflows)
89+
90+
### 3. `loganfinney27.github.io` is independent of THE-GEMSTONE
91+
92+
`loganfinney27.github.io` is a **separate, standalone repo** — it contains only a hand-written `index.html` ("Hello World, I'm hosted with GitHub Pages") and a `README.md`. It does **not** serve as the build target for THE-GEMSTONE; that site deploys to its own GitHub Pages environment under `thegemstone.org`.
93+
94+
Both repos can be merged into LAF-PUBLIC independently. The `index.html` from `loganfinney27.github.io` will conflict with any root-level HTML from other repos — resolve manually.
95+
96+
### 4. Filename conflict map (known collisions before merging)
97+
98+
| Filename | Repos that contain it |
99+
|---|---|
100+
| `README.md` | **All 5 public repos** — must be manually merged into one |
101+
| `.gitignore` | THE-GEMSTONE, IR-Court-Tracker, possibly others |
102+
| `package.json` / `package-lock.json` | THE-GEMSTONE (others TBC) |
103+
| `.github/workflows/*.yml` | THE-GEMSTONE (`deploy.yml`, `auto-merge.yml`) — check others |
104+
| `index.html` | `loganfinney27.github.io` — check IDEX_Artifacts |
105+
106+
Resolve each conflict before committing each repo merge.
107+
108+
### 5. Quartz upstream sync — ongoing consideration
109+
110+
THE-GEMSTONE was set up to receive upstream patches from `jackyzha0/quartz`. After consolidation, the upstream remote in THE-GEMSTONE's Quartz fork history no longer exists as a separate repo. If upstream Quartz updates are needed in the future, they must be cherry-picked or merged directly into LAF-PUBLIC from the upstream Quartz repo.
111+
112+
---
113+
54114
## Migration Steps
55115

56116
### Step 1: Create a GitHub Organization (optional but recommended)
@@ -69,44 +129,62 @@ gh repo create LAF-US/LAF-PUBLIC --public --description "All public-facing LAF p
69129

70130
### Step 3: Migrate each public repo into LAF-PUBLIC (flat — no subdirectories)
71131

72-
Merge each existing repo directly into the root of `LAF-PUBLIC`, preserving commit history:
132+
Merge each existing repo directly into the root of `LAF-PUBLIC`, preserving commit history.
133+
See the **Pre-flight Checks** section above for known filename conflicts before starting.
73134

74135
```bash
75136
# Clone the new empty LAF-PUBLIC repo
76137
git clone https://github.com/LAF-US/LAF-PUBLIC.git
77138
cd LAF-PUBLIC
78139

79-
# Merge each existing repo directly at root level (no subdirectory)
140+
# --- PyTutorial ---
80141
git remote add py-tutorial https://github.com/loganfinney27/PyTutorial.git
81142
git fetch py-tutorial
82143
git merge --allow-unrelated-histories py-tutorial/main
83-
# Resolve any filename conflicts, then:
144+
# Resolve conflicts (e.g. README.md), then:
84145
git commit -m "chore: merge PyTutorial into LAF-PUBLIC"
85146

147+
# --- THE-GEMSTONE (Quartz fork — brings full build system) ---
86148
git remote add the-gemstone https://github.com/loganfinney27/THE-GEMSTONE.git
87149
git fetch the-gemstone
88150
git merge --allow-unrelated-histories the-gemstone/main
89-
git commit -m "chore: merge THE-GEMSTONE into LAF-PUBLIC"
151+
# Resolve conflicts (README.md, .gitignore, package.json, .github/workflows/, etc.)
152+
# Preserve quartz.config.ts, quartz.layout.ts, quartz/, content/ intact.
153+
git commit -m "chore: merge THE-GEMSTONE (Quartz) into LAF-PUBLIC"
90154

155+
# --- IR-Court-Tracker ---
91156
git remote add ir-court-tracker https://github.com/loganfinney27/IR-Court-Tracker.git
92157
git fetch ir-court-tracker
93158
git merge --allow-unrelated-histories ir-court-tracker/main
94159
git commit -m "chore: merge IR-Court-Tracker into LAF-PUBLIC"
95160

161+
# --- IDEX_Artifacts ---
96162
git remote add idex-artifacts https://github.com/loganfinney27/IDEX_Artifacts.git
97163
git fetch idex-artifacts
98164
git merge --allow-unrelated-histories idex-artifacts/main
99165
git commit -m "chore: merge IDEX_Artifacts into LAF-PUBLIC"
100166

167+
# --- loganfinney27.github.io ---
101168
git remote add github-pages https://github.com/loganfinney27/loganfinney27.github.io.git
102169
git fetch github-pages
103170
git merge --allow-unrelated-histories github-pages/main
171+
# index.html conflicts with any root HTML — merge content manually.
104172
git commit -m "chore: merge loganfinney27.github.io into LAF-PUBLIC"
105173

106174
git push origin main
107175
```
108176

109-
> **Conflict resolution:** If two repos have a file with the same name (e.g., `README.md`), Git will flag a merge conflict. Manually combine the content, `git add` the resolved file, then commit before moving to the next repo.
177+
> **Conflict resolution:** When Git flags a merge conflict, manually combine the file content, run `git add <file>`, then commit before moving to the next repo. The README.md conflict will occur on every merge — keep building a single consolidated README.
178+
179+
### Step 3a: Re-enable GitHub Pages and custom domain on LAF-PUBLIC
180+
181+
After the merge, THE-GEMSTONE's Quartz deployment pipeline is now in LAF-PUBLIC. To restore the live site:
182+
183+
1. In **LAF-PUBLIC repo Settings → Pages**, set Source to **GitHub Actions**.
184+
2. Re-enter the custom domain **`thegemstone.org`** in the Custom domain field and save.
185+
3. Update your DNS provider: point the `CNAME` (or `A` records) for `thegemstone.org` to `laf-us.github.io` (replacing the old `loganfinney27.github.io` target).
186+
4. Confirm `quartz.config.ts` still has `baseUrl: "thegemstone.org"` — update if the domain changes.
187+
5. Push a commit to trigger the deploy workflow and verify the site loads at `thegemstone.org`.
110188

111189
### Step 4: Create the LAF-PRIVATE repository
112190

@@ -143,12 +221,17 @@ Once migration is complete and verified:
143221
## Checklist
144222

145223
- [ ] Create GitHub Organization **LAF-US**
224+
- [ ] **Pre-flight:** Review conflict map (README.md, package.json, .gitignore, workflows, index.html)
225+
- [ ] **Pre-flight:** Note THE-GEMSTONE custom domain (`thegemstone.org`) and DNS settings
146226
- [ ] Create `LAF-PUBLIC` repo (public)
147-
- [ ] Merge `loganfinney27.github.io``LAF-PUBLIC` (flat)
148-
- [ ] Merge `THE-GEMSTONE``LAF-PUBLIC` (flat)
227+
- [ ] Merge `PyTutorial``LAF-PUBLIC` (flat)
228+
- [ ] Merge `THE-GEMSTONE` (Quartz fork) `LAF-PUBLIC` (flat) — resolve build-system file conflicts
149229
- [ ] Merge `IR-Court-Tracker``LAF-PUBLIC` (flat)
150230
- [ ] Merge `IDEX_Artifacts``LAF-PUBLIC` (flat)
151-
- [ ] Merge `PyTutorial``LAF-PUBLIC` (flat)
231+
- [ ] Merge `loganfinney27.github.io``LAF-PUBLIC` (flat)
232+
- [ ] Enable GitHub Pages on LAF-PUBLIC (Source: GitHub Actions)
233+
- [ ] Re-configure custom domain `thegemstone.org` on LAF-PUBLIC and update DNS
234+
- [ ] Verify Quartz site builds and deploys from LAF-PUBLIC
152235
- [ ] Create `LAF-PRIVATE` repo (private)
153236
- [ ] Merge `IDAHO-VAULT``LAF-PRIVATE` (flat)
154237
- [ ] Archive all original repositories

0 commit comments

Comments
 (0)