OverviewFilesCommitsIssuesDocsReleasesPeers

pear-git / scripts / import-git-repos.mjs

43 lines · javascript ref:
#!/usr/bin/env node

import { RepoScanner } from './lib/repo-scanner.js'
import Corestore from 'corestore'
import Hyperbee from 'hyperbee'

const store = new Corestore('./pear-git-storage')
const registryCore = store.get({ name: 'registry' })
const registry = new Hyperbee(registryCore, {
  keyEncoding: 'utf-8',
  valueEncoding: 'json'
})
await registry.ready()

const scanner = new RepoScanner({
  registry,
  storage: './pear-git-storage'
})

console.log('🔍 Scanning /home/fleeky/git-repos for bare repositories...\n')

let count = 0
for await (const repo of scanner.scan({ paths: ['/home/fleeky/git-repos'], maxDepth: 1 })) {
  count++
  console.log(`\n📦 ${repo.name}`)
  console.log(`   Path: ${repo.path}`)
  console.log(`   Bare: ${repo.isBare ? 'YES' : 'NO'}`)
  console.log(`   Branch: ${repo.branch}`)
  console.log(`   Commits: ${repo.commits}`)
  
  // Import it
  console.log(`   Importing...`)
  const imported = await scanner.importRepo(repo)
  if (imported) {
    console.log(`   ✓ Imported: ${imported.url}`)
  }
}

console.log(`\n✅ Import complete!`)
console.log(`   Total repos found: ${count}`)
console.log(`   Repos imported: ${scanner.stats.imported}`)
console.log(`   Errors: ${scanner.stats.errors}`)