···12211221let fetch_verse_remotes ~proc ~fs ~config pkg =
12221222 let checkouts_root = Config.Paths.checkouts config in
12231223 let checkout_dir = Package.checkout_dir ~checkouts_root pkg in
12241224- let remotes = Git.list_remotes ~proc ~fs checkout_dir in
12251225- let verse_remotes = List.filter (fun r -> String.starts_with ~prefix:"verse-" r) remotes in
12261226- List.iter (fun remote ->
12271227- Log.debug (fun m -> m "Fetching from verse remote %s" remote);
12281228- match Git.fetch ~proc ~fs ~remote checkout_dir with
12291229- | Ok () -> ()
12301230- | Error e -> Log.debug (fun m -> m "Failed to fetch from %s: %a" remote Git.pp_error e))
12311231- verse_remotes
12241224+ (* Skip packages without checkouts *)
12251225+ if not (Git.is_repo ~proc ~fs checkout_dir) then
12261226+ Log.info (fun m -> m "Skipping verse fetch for %s (no checkout)" (Package.repo_name pkg))
12271227+ else begin
12281228+ let remotes = Git.list_remotes ~proc ~fs checkout_dir in
12291229+ let verse_remotes = List.filter (fun r -> String.starts_with ~prefix:"verse-" r) remotes in
12301230+ List.iter (fun remote ->
12311231+ Log.debug (fun m -> m "Fetching from verse remote %s" remote);
12321232+ match Git.fetch ~proc ~fs ~remote checkout_dir with
12331233+ | Ok () -> ()
12341234+ | Error e -> Log.debug (fun m -> m "Failed to fetch from %s: %a" remote Git.pp_error e))
12351235+ verse_remotes
12361236+ end
1232123712331238let sync ~proc ~fs ~config ?package ?(remote = false) ?(skip_push = false) ?(skip_pull = false) () =
12341239 let fs_t = fs_typed fs in