From 4395d0fdce3ff1ce7295e8dcc914b002eabab622 Mon Sep 17 00:00:00 2001 From: Ahmet Kilinc Date: Sat, 20 Dec 2025 04:06:54 +0000 Subject: [PATCH] fix? --- app/api/debug/r2/route.ts | 10 +++++----- app/api/git/[...path]/route.ts | 23 +++++++++++------------ lib/r2-fs.ts | 1 + 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/app/api/debug/r2/route.ts b/app/api/debug/r2/route.ts index 4e3e37d..f731db5 100644 --- a/app/api/debug/r2/route.ts +++ b/app/api/debug/r2/route.ts @@ -23,21 +23,21 @@ export async function GET(request: NextRequest) { } const repoPrefix = getRepoPrefix(user.id, `${repo}.git`); - const allKeys = await r2List(repoPrefix + "/"); + + const allKeys = await r2List(""); + const repoKeys = allKeys.filter((k) => k.startsWith(repoPrefix)); const head = await r2Get(`${repoPrefix}/HEAD`); const config = await r2Get(`${repoPrefix}/config`); const refsHeadsMain = await r2Get(`${repoPrefix}/refs/heads/main`); - const refsMaster = await r2Get(`${repoPrefix}/refs/heads/master`); return NextResponse.json({ repoPrefix, - totalKeys: allKeys.length, - keys: allKeys.slice(0, 100), + totalKeysInBucket: allKeys.length, + repoKeys: repoKeys, head: head?.toString(), config: config?.toString(), "refs/heads/main": refsHeadsMain?.toString(), - "refs/heads/master": refsMaster?.toString(), }); } diff --git a/app/api/git/[...path]/route.ts b/app/api/git/[...path]/route.ts index 02afd08..dded9cc 100644 --- a/app/api/git/[...path]/route.ts +++ b/app/api/git/[...path]/route.ts @@ -232,22 +232,21 @@ async function handleReceivePack(fs: any, gitdir: string, body: Buffer): Promise console.log("[ReceivePack] Updates:", updates); try { - const packPath = "/objects/pack/pack-temp.pack"; - const packDir = "/objects/pack"; - const objectsDir = "/objects"; - console.log("[ReceivePack] Creating directories..."); - await fs.promises.mkdir(objectsDir, { recursive: true }).catch((e: Error) => console.log("mkdir objects error:", e.message)); - await fs.promises.mkdir(packDir, { recursive: true }).catch((e: Error) => console.log("mkdir pack error:", e.message)); + await fs.promises.mkdir("/objects", { recursive: true }).catch(() => {}); + await fs.promises.mkdir("/objects/pack", { recursive: true }).catch(() => {}); - console.log("[ReceivePack] Writing pack file to:", packPath); + const packHash = require("crypto").createHash("sha1").update(packData).digest("hex"); + const packFileName = `pack-${packHash}`; + const packPath = `/objects/pack/${packFileName}.pack`; + const idxPath = `/objects/pack/${packFileName}.idx`; + + console.log("[ReceivePack] Writing pack file:", packPath); await fs.promises.writeFile(packPath, packData); console.log("[ReceivePack] Calling indexPack..."); - const result = await git.indexPack({ fs, dir: "/", gitdir: "/", filepath: "objects/pack/pack-temp.pack" }); - console.log("[ReceivePack] indexPack result:", result); - - await fs.promises.unlink(packPath).catch(() => {}); + const result = await git.indexPack({ fs, dir: "/", gitdir: "/", filepath: `objects/pack/${packFileName}.pack` }); + console.log("[ReceivePack] indexPack result, oids:", result.oids?.length); console.log("[ReceivePack] Writing refs..."); for (const update of updates) { @@ -276,7 +275,7 @@ async function handleReceivePack(fs: any, gitdir: string, body: Buffer): Promise } responseStr += "0000"; - console.log("[ReceivePack] Success, response:", response); + console.log("[ReceivePack] Success!"); return Buffer.from(responseStr); } catch (err) { console.error("[ReceivePack] Error:", err); diff --git a/lib/r2-fs.ts b/lib/r2-fs.ts index c706d7e..f9beff2 100644 --- a/lib/r2-fs.ts +++ b/lib/r2-fs.ts @@ -52,6 +52,7 @@ export function createR2Fs(repoPrefix: string) { const writeFile = async (filepath: string, data: Buffer | string): Promise => { const key = getKey(filepath); + console.log("[R2FS] writeFile:", key, "size:", typeof data === "string" ? data.length : data.length); await r2Put(key, typeof data === "string" ? Buffer.from(data) : data); };