openRepository

Open an existing git repository from a @catmint-fs/core layer. The layer must already contain a valid .git directory.

Import

import { openRepository } from "@catmint-fs/git";

Signature

function openRepository(layer: Layer): Promise<Repository>;

Parameters

ParameterTypeRequiredDescription
layerLayerYesA @catmint-fs/core layer containing an existing git repository

Return Value

Returns a Promise<Repository> — a Repository instance.

Throws an error if the layer does not contain a valid git repository (i.e., no .git/HEAD found).

Examples

Open From Memory

import { createMemoryLayer } from "@catmint-fs/core";
import { initRepository, openRepository } from "@catmint-fs/git";

// Create a repo first
const layer = createMemoryLayer();
await initRepository(layer);

// Later, re-open it
const repo = await openRepository(layer);
const branch = await repo.currentBranch();
console.log(branch); // "main"

Open From the Filesystem

import { createNodeLayer } from "@catmint-fs/core";
import { openRepository } from "@catmint-fs/git";

const layer = createNodeLayer("/path/to/existing-project");
const repo = await openRepository(layer);

const commits = await repo.log();
console.log(`Repository has ${commits.length} commits`);

Open From SQLite

import { createSqliteLayer } from "@catmint-fs/sqlite-adapter";
import { openRepository } from "@catmint-fs/git";

const layer = createSqliteLayer("repo.db");
const repo = await openRepository(layer);

Error Handling

import { createMemoryLayer } from "@catmint-fs/core";
import { openRepository } from "@catmint-fs/git";

const layer = createMemoryLayer(); // Empty layer, no repo

try {
  await openRepository(layer);
} catch (err) {
  console.error("Not a git repository");
}

See Also