OverviewFilesCommitsIssuesDocsReleasesPeers

pear-git commits / 38e8300

WIP: repo-registry.js changes + meta-diag script
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
38e830089fd2c110848eb91b86b6e4d41f7fa041
by plankatron <fleeky@gmail.com> · 2026-06-04T02:22:15.000Z

Changed files (2) +34 -1

lib/repo-registry.js +8 -1
……@@ -682,11 +682,18 @@ echo "[post-receive] Auto-deploy triggered for $REPO_NAME"
682682
683683 /**
684684 * Get single repository
685 * Returns null for repos with .pear-git-ignore marker
685686 */
686687 async get(repoName) {
687688 try {
688689 const entry = await this.registry.get(`repo:${repoName}`)
689 return entry ? entry.value : null
690 if (!entry) return null
691 // Check ignore marker
692 if (entry.value && entry.value.path) {
693 const ignored = await fs.promises.stat(path.join(entry.value.path, '.pear-git-ignore')).catch(() => null)
694 if (ignored) return null
695 }
696 return entry.value
690697 } catch {
691698 return null
692699 }
scripts/meta-diag.mjs +26 -0
……@@ -0,0 +1,26 @@
1await import('bare-node-runtime/global')
2import Corestore from 'corestore'
3import Autobase from 'autobase'
4import Hyperbee from 'hyperbee'
5import fs from 'bare-fs'
6
7const storagePath = process.argv[2] || './pear-git-storage'
8const keyHex = fs.readFileSync(storagePath + '/metadata-key', 'utf-8').trim()
9console.log('Key:', keyHex.slice(0, 16))
10
11const store = new Corestore(storagePath + '/metadata')
12await store.ready()
13
14const base = new Autobase(store, Buffer.from(keyHex, 'hex'), {
15 open: (s) => new Hyperbee(s.get('view'), { keyEncoding: 'utf-8', valueEncoding: 'json' }),
16 apply: async (nodes, view) => { const b = view.batch(); await b.flush() },
17 valueEncoding: 'json'
18})
19await base.ready()
20console.log('Writable:', base.writable)
21console.log('Local key:', base.local?.key?.toString('hex')?.slice(0, 16))
22console.log('Active writers:', base.activeWriters?.length || 'unknown')
23console.log('View length:', base.view?.core?.length || 0)
24
25await base.close()
26await store.close()