diff options
author | Roman Smrž <roman.smrz@seznam.cz> | 2025-04-12 15:16:30 +0200 |
---|---|---|
committer | Roman Smrž <roman.smrz@seznam.cz> | 2025-04-12 21:04:14 +0200 |
commit | a8f1e216681a1f03e15b8b71d1f83f7aa3493617 (patch) | |
tree | d76481ca10a6d780d527bd16755dbcd7cf739190 /src/Job.hs | |
parent | d6c4daa2fb0b7f8dd0afb3ef50b2b85106bfd2ac (diff) |
Track other used repos in job ID
Diffstat (limited to 'src/Job.hs')
-rw-r--r-- | src/Job.hs | 14 |
1 files changed, 5 insertions, 9 deletions
@@ -183,19 +183,17 @@ runManagedJob JobManager {..} tid cancel job = bracket acquire release $ \case runJobs :: JobManager -> TerminalOutput -> Maybe Commit -> [ Job ] -> IO [ ( Job, TVar (JobStatus JobOutput) ) ] runJobs mngr@JobManager {..} tout commit jobs = do - tree <- sequence $ fmap getCommitTree commit results <- atomically $ do forM jobs $ \job -> do - let jid = JobId $ concat [ JobIdTree . treeId <$> maybeToList tree, [ JobIdName (jobName job) ] ] tid <- reserveTaskId mngr managed <- readTVar jmJobs - ( job, tid, ) <$> case M.lookup jid managed of + ( job, tid, ) <$> case M.lookup (jobId job) managed of Just origVar -> do - newTVar . JobDuplicate jid =<< readTVar origVar + newTVar . JobDuplicate (jobId job) =<< readTVar origVar Nothing -> do statusVar <- newTVar JobQueued - writeTVar jmJobs $ M.insert jid statusVar managed + writeTVar jmJobs $ M.insert (jobId job) statusVar managed return statusVar forM_ results $ \( job, tid, outVar ) -> void $ forkIO $ do @@ -297,10 +295,8 @@ prepareJob dir mbCommit job inner = do fail $ "no containing repository, can't do checkout" return $ stringJobName (jobName job) - jdirOther <- forM (jobOtherCheckout job) $ \( repo, revision, JobCheckout mbsub dest ) -> do - commit <- readCommit repo $ fromMaybe "HEAD" revision - tree <- getCommitTree commit - subtree <- maybe return (getSubtree (Just commit)) mbsub $ tree + jdirOther <- forM (jobOtherCheckout job) $ \( tree, JobCheckout mbsub dest ) -> do + subtree <- maybe return (getSubtree Nothing) mbsub $ tree checkoutAt subtree $ checkoutPath </> fromMaybe "" dest return $ showTreeId (treeId tree) |