(Remote.Compute.ImmutableState False)
(getInputContent fast)
Nothing
- (addComputed (Just "adding") True r (reproducible o) chooseBackend Just fast)
+ (addComputed (Just "adding") r (reproducible o) chooseBackend Just fast)
next $ return True
addComputed
:: Maybe StringContainingQuotedPath
- -> Bool
-> Remote
-> Maybe Reproducible
-> (OsPath -> Annex Backend)
-> OsPath
-> NominalDiffTime
-> Annex ()
-addComputed maddaction stagefiles r reproducibleconfig choosebackend destfile fast result tmpdir ts = do
+addComputed maddaction r reproducibleconfig choosebackend destfile fast result tmpdir ts = do
when (M.null outputs) $
giveup "The computation succeeded, but it did not generate any files."
oks <- forM (M.keys outputs) $ \outputfile -> do
| fast = do
case destfile outputfile of
Nothing -> noop
- Just f
- | stagefiles -> addSymlink f stateurlk Nothing
- | otherwise -> makelink f stateurlk
+ Just f -> addSymlink f stateurlk Nothing
return stateurlk
| isreproducible = do
sz <- liftIO $ getFileSize outputfile'
genkey f p = do
backend <- choosebackend outputfile
fst <$> genKey (ks f) p backend
- makelink f k = void $ makeLink f k Nothing
- ingesthelper f p mk
- | stagefiles = ingestwith $ do
+ ingesthelper f p mk =
+ ingestwith $ do
k <- maybe (genkey f p) return mk
ingestAdd' p (Just (ld f)) (Just k)
- | otherwise = ingestwith $ do
- k <- maybe (genkey f p) return mk
- mk' <- fst <$> ingest p (Just (ld f)) (Just k)
- maybe noop (makelink f) mk'
- return mk'
ingestwith a = a >>= \case
Nothing -> giveup "ingestion failed"
Just k -> do
go program reproducibleconfig result tmpdir ts = do
checkbehaviorchange program
(Remote.Compute.computeState result)
- addComputed Nothing False r reproducibleconfig
+ addComputed Nothing r reproducibleconfig
choosebackend destfile False result tmpdir ts
checkbehaviorchange program state = do
The new contents of the input files are used to re-run the computation.
When the output of the computation is different, the computed file is
-updated with the new content. The updated file is written to the worktree,
-but is not staged, in order to avoid overwriting any staged changes.
+updated with the new content. The updated file is staged in git.
# OPTIONS
This is the remainder of my todo list while I was building the
compute special remote. --[[Joey]]
-* recompute should stage files in git. Otherwise,
- `git-annex drop` after recompute --reproducible drops the staged
- file, and `git-annex get` gets the staged file, and if it wasn't
- actually reproducible, this is not apparent.
-
- This is blocking adding the tip.
-
* Support parallel get of input files. The design allows for this,
but how much parallelism makes sense? Would it be possible to use the
usual worker pool?