@@ -174,26 +174,34 @@ those as the order-of-magnitude sanity check for your counts.
174174 not.
1751754 . Run the importer ** without ` --dry-run ` ** . This creates one snapshot
176176 commit on ` legacy-import ` . Push it.
177- 5 . ** Merge ` legacy-import ` into ` published ` .** This needs a working tree
178- (clone from your bare clone). Expect ** thousands of conflicts** of the
179- form ` deleted by us / modified by them ` : every previously-pruned spam
180- person is absent on ` published ` and present (possibly modified) in the
181- fresh snapshot. Resolve them all by ** taking the import's version** —
182- the prune step in the next step removes them again:
177+ 5 . ** Merge ` legacy-import ` into ` published ` ** with gitsheets' sheet-aware
178+ merge (gitsheets ≥ 2.8). It merges * records* , not lines: a person
179+ changed on both sides is field-merged and written canonically, so the
180+ merged branch never mixes serializations. It runs directly against the
181+ bare clone, so no working tree is needed. Expect ** thousands of
182+ delete/modify conflicts** : every previously-pruned spam person is absent
183+ on ` published ` and present in the fresh snapshot. ` --prefer theirs `
184+ takes the import's version of each one, and the prune step next removes
185+ them again. Run it from a codeforphilly-ng checkout (the CLI ships with
186+ the ` gitsheets ` dependency):
183187
184188 ``` bash
185- git clone /scratch/codeforphilly-data.git /scratch/codeforphilly-data-wt
186- cd /scratch/codeforphilly-data-wt
187- git checkout published
188- git merge origin/legacy- import || true
189- git diff --name-only --diff-filter=U | xargs git checkout -- theirs --
190- git add -A people/ # the conflicts are person records
191- git commit --no-edit
192- git push origin published:published # back to the bare clone only — don't push to GitHub yet
189+ D= /scratch/codeforphilly-data.git
190+ # Preview: lists every conflict by path and kind, writes nothing
191+ npx gitsheets merge legacy-import --into published --dry-run --git-dir $D
192+ # Merge, taking the import's side of every conflict
193+ npx gitsheets merge legacy-import --into published --prefer theirs --git-dir $D \
194+ --author-name " <you> " --author-email " <you>@users.noreply.codeforphilly.org "
195+ # The merge doesn't validate contracts; check every record before going on
196+ npx gitsheets contracts verify --git-dir $D --ref published
193197 ```
194198
195- Review ` git status ` before the ` git add ` ; if conflicts show up outside
196- ` people/ ` , look at them individually rather than bulk-resolving.
199+ Read the preview before merging. ` --prefer ` resolves record-field,
200+ delete/modify and blob conflicts, but rename/directory conflicts are
201+ always reported and stop the merge: look at those individually. If
202+ conflicts show up outside ` people/ ` , look at them individually rather
203+ than relying on ` --prefer ` . The merge stays local to the bare clone
204+ (don't push to GitHub yet).
197205
1982066 . ** Prune confident-spam** from ` published ` before it goes anywhere. The
199207 merge re-added the full raw import (spam included); the deployed pod
0 commit comments