| … | … | @@ -319,9 +319,13 @@ export class GitSyncClientManager { |
| 319 | 319 | |
| 320 | 320 | await new Promise((resolve, reject) => { |
| 321 | 321 | let done = false |
| 322 | // Use --filter=blob:none for large repos — fetches only tree metadata |
| 323 | // and refs, not blob content. Federation mirrors don't need blobs; |
| 324 | // clients fetch blobs on demand via sparse checkout. |
| 325 | // This reduces transfer from 1+ GB to ~10 MB for large repos. |
| 322 | 326 | const child = spawn('git', [ |
| 323 | | '-C', repoPath, 'fetch', '--progress', fetchUrl, |
| 324 | | 'refs/*:refs/*', '--no-tags' |
| 327 | '-C', repoPath, 'fetch', '--progress', '--filter=blob:none', |
| 328 | fetchUrl, 'refs/*:refs/*', '--no-tags' |
| 325 | 329 | ], { detached: true }) |
| 326 | 330 | |
| 327 | 331 | // No hard timeout — large repos (1+ GB) can take minutes. |