Skip to content

Commit 21f5078

Browse files
author
manno23
committed
fork: update .gitattributes and FORK_CHANGES.md for merge-commit strategy
- Add merge=ours protection for domain override files (installation, server, oauth-provider) that upstream also modifies - Protect .gitattributes and AGENTS.md from upstream overwrites - Reorganize .gitattributes with clearer section comments - Update merge cheat sheet in FORK_CHANGES.md to document the new tag-based merge workflow, feature branch --no-ff merges, and cherry-pick strategy for urgent fixes
1 parent 1c99bcc commit 21f5078

2 files changed

Lines changed: 41 additions & 22 deletions

File tree

.gitattributes

Lines changed: 27 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,45 @@
1-
# Fork merge drivers
1+
# Fork merge drivers — used with `git merge <upstream-tag>` strategy
22
# Files marked merge=ours always keep the fork's version during upstream merges.
33
# Requires: git config merge.ours.driver true
4+
#
5+
# Strategy: we merge upstream release tags onto main. These rules prevent
6+
# conflicts on fork-owned files. Files that don't exist upstream are listed
7+
# for documentation purposes (they won't conflict but are clearly fork-only).
48

5-
# Fork-owned session management (not in upstream)
9+
# --- Fork-only packages (no upstream equivalent) ---
610
packages/cloudsession/** merge=ours
11+
packages/worker-test/** merge=ours
712

8-
# Fork environment config
9-
packages/opencode/.env.example merge=ours
13+
# --- Fork infrastructure overlaying upstream packages ---
1014

11-
# Fork web infrastructure (SolidJS+Hono rewrite, not upstream Astro)
15+
# Web: SolidJS+Hono rewrite (upstream uses Astro SSR)
1216
packages/web/wrangler.jsonc merge=ours
1317
packages/web/vite.config.ts merge=ours
1418
packages/web/src/worker.ts merge=ours
1519
packages/web/README.md merge=ours
1620

17-
# Fork function worker config
21+
# Function: Cloudflare Workers deployment
1822
packages/function/wrangler.jsonc merge=ours
1923
packages/function/docs/** merge=ours
2024

21-
# Fork worker-test package (not in upstream)
22-
packages/worker-test/** merge=ours
23-
24-
# Fork gitignore has extra entries for cloudflare/fork files
25-
.gitignore merge=ours
26-
27-
# Fork divergence documentation
28-
FORK_CHANGES.md merge=ours
25+
# --- Fork-modified opencode core files ---
2926

30-
# Fork network filter (blocks upstream domains, allows fork domains)
27+
# Network filter (blocks upstream domains, allows fork domains)
3128
packages/opencode/src/util/network.ts merge=ours
3229

33-
# Fork share implementation
30+
# Share implementation (capnweb RPC rewrite)
3431
packages/opencode/src/share/** merge=ours
32+
33+
# Fork environment config
34+
packages/opencode/.env.example merge=ours
35+
36+
# Domain overrides in these files (opencode.ai -> j9xym.com)
37+
packages/opencode/src/installation/index.ts merge=ours
38+
packages/opencode/src/server/server.ts merge=ours
39+
packages/opencode/src/mcp/oauth-provider.ts merge=ours
40+
41+
# --- Root config files ---
42+
.gitignore merge=ours
43+
.gitattributes merge=ours
44+
AGENTS.md merge=ours
45+
FORK_CHANGES.md merge=ours

FORK_CHANGES.md

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -140,16 +140,24 @@ git config rerere.autoupdate true
140140
# Register ours merge driver (keeps fork version for marked files)
141141
git config merge.ours.driver true
142142

143-
# Standard merge from upstream
144-
git fetch upstream
145-
git merge upstream/dev
143+
# --- Upstream sync: merge release tags ---
144+
git fetch upstream --tags
145+
git checkout dev && git merge --ff-only upstream/dev # keep dev as clean mirror
146+
git checkout main && git merge v1.2.XX -m "upstream: sync to v1.2.XX"
146147

147-
# For "deleted by us" conflicts (SST files, disabled workflows):
148+
# --- For "deleted by us" conflicts (SST files, disabled workflows):
148149
git rm <file>
149150

150-
# After merge, always regenerate lockfile:
151+
# --- After merge, always regenerate lockfile:
151152
bun install
152153

153-
# Typecheck (excludes console/enterprise packages):
154+
# --- Feature branches: merge with --no-ff ---
155+
git checkout main
156+
git merge --no-ff feat/my-feature -m "feat: description"
157+
158+
# --- Urgent upstream fix between releases:
159+
git cherry-pick <upstream-commit-hash>
160+
161+
# --- Typecheck (excludes console/enterprise packages):
154162
bun run typecheck
155163
```

0 commit comments

Comments
 (0)