History

fix(mcp): close project operation races

Julius Marminge committed 2 months ago

Commit e3f2cda1 parent 93b21576 files · +257 −29Browse files

Showing the changes to apps/server/src/sourceControl/SourceControlRepositoryService.ts (1 of 6 files). Show all

Unified · Split

apps/server/src/sourceControl/SourceControlRepositoryService.ts+12−6
@@ -224,19 +224,25 @@ export const make = Effect.gen(function* () { · 223 unmodified lines
224 );224 );
225 if (headCommit === null) return false;225 if (headCommit === null) return false;
226 226
227 const remoteCommits = yield* git227 const remoteCommit = yield* git
228 .execute({228 .execute({
229 operation: "SourceControlRepositoryService.cloneRepository.verifyRemoteRefs",229 operation: "SourceControlRepositoryService.cloneRepository.verifyRemoteRefs",
230 cwd: destinationPath,230 cwd: destinationPath,
231 args: ["for-each-ref", "--format=%(objectname)", "refs/remotes/origin"],231 args: [
232 "for-each-ref",
233 "--count=1",
234 "--format=%(objectname)",
235 `--points-at=${headCommit}`,
236 "refs/remotes/origin",
237 ],
232 timeoutMs: 5_000,238 timeoutMs: 5_000,
233 maxOutputBytes: 64 * 1024,239 maxOutputBytes: 1024,
234 })240 })
235 .pipe(241 .pipe(
236 Effect.map((result) => new Set(result.stdout.split("\n").map((line) => line.trim()))),242 Effect.map((result) => result.stdout.trim() || null),
237 Effect.orElseSucceed(() => new Set<string>()),243 Effect.orElseSucceed(() => null),
238 );244 );
239 if (!remoteCommits.has(headCommit)) return false;245 if (remoteCommit !== headCommit) return false;
240 246
241 return yield* git247 return yield* git
242 .execute({248 .execute({