Merge branch 'master' into ospath

This commit is contained in:
Joey Hess 2025-01-24 12:02:35 -04:00
commit 8021d22955
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
14 changed files with 79 additions and 10 deletions

View file

@ -189,6 +189,6 @@ winLockFile pid pidfile = do
prefix = pidfile ++ "." prefix = pidfile ++ "."
suffix = ".lck" suffix = ".lck"
cleanstale = mapM_ (void . tryIO . removeFile) =<< cleanstale = mapM_ (void . tryIO . removeFile) =<<
(filter iswinlockfile <$> dirContents (fromRawFilePath (parentDir (toRawFilePath pidfile)))) (filter iswinlockfile . map fromRawFilePath <$> dirContents (parentDir (toRawFilePath pidfile)))
iswinlockfile f = suffix `isSuffixOf` f && prefix `isPrefixOf` f iswinlockfile f = suffix `isSuffixOf` f && prefix `isPrefixOf` f
#endif #endif

View file

@ -70,7 +70,8 @@ watchDir dir ignored scanevents hooks = do
scan d = unless (ignoredPath ignored d) $ scan d = unless (ignoredPath ignored d) $
-- Do not follow symlinks when scanning. -- Do not follow symlinks when scanning.
-- This mirrors the inotify startup scan behavior. -- This mirrors the inotify startup scan behavior.
mapM_ go =<< emptyWhenDoesNotExist (dirContentsRecursiveSkipping (const False) False d) mapM_ (go . fromRawFilePath) =<< emptyWhenDoesNotExist
(dirContentsRecursiveSkipping (const False) False (toRawFilePath d))
where where
go f go f
| ignoredPath ignored f = noop | ignoredPath ignored f = noop

View file

@ -43,7 +43,8 @@ watchDir dir ignored scanevents hooks = do
runhook h s = maybe noop (\a -> a (filePath evt) s) (h hooks) runhook h s = maybe noop (\a -> a (filePath evt) s) (h hooks)
scan d = unless (ignoredPath ignored d) $ scan d = unless (ignoredPath ignored d) $
mapM_ go =<< emptyWhenDoesNotExist (dirContentsRecursiveSkipping (const False) False d) mapM_ (go . fromRawFilePath) =<< emptyWhenDoesNotExist
(dirContentsRecursiveSkipping (const False) False (toRawFilePath d))
where where
go f go f
| ignoredPath ignored f = noop | ignoredPath ignored f = noop

View file

@ -19,7 +19,6 @@ module Utility.Directory.Stream (
import Control.Monad import Control.Monad
import Control.Concurrent import Control.Concurrent
import qualified Data.ByteString as B
import Data.Maybe import Data.Maybe
import Prelude import Prelude
@ -27,6 +26,7 @@ import Prelude
import qualified System.Win32 as Win32 import qualified System.Win32 as Win32
import System.FilePath import System.FilePath
#else #else
import qualified Data.ByteString as B
import qualified System.Posix.Directory.ByteString as Posix import qualified System.Posix.Directory.ByteString as Posix
#endif #endif

View file

@ -36,7 +36,6 @@ import System.File.OsPath
import Utility.Path.Windows import Utility.Path.Windows
import Utility.OsPath import Utility.OsPath
import System.IO (IO, Handle, IOMode) import System.IO (IO, Handle, IOMode)
import System.OsPath (OsPath)
import qualified System.File.OsPath as O import qualified System.File.OsPath as O
import qualified Data.ByteString as B import qualified Data.ByteString as B
import qualified Data.ByteString.Lazy as L import qualified Data.ByteString.Lazy as L

View file

@ -17,7 +17,6 @@ module Utility.FileSize (
#ifdef mingw32_HOST_OS #ifdef mingw32_HOST_OS
import Control.Exception (bracket) import Control.Exception (bracket)
import System.IO import System.IO
import Utility.FileSystemEncoding
import qualified Utility.FileIO as F import qualified Utility.FileIO as F
import Utility.OsPath import Utility.OsPath
#else #else

View file

@ -179,10 +179,10 @@ feedRead cmd params passphrase feeder reader = do
go (passphrasefd ++ params) go (passphrasefd ++ params)
#else #else
-- store the passphrase in a temp file for gpg -- store the passphrase in a temp file for gpg
withTmpFile "gpg" $ \tmpfile h -> do withTmpFile (toOsPath "gpg") $ \tmpfile h -> do
liftIO $ B.hPutStr h passphrase liftIO $ B.hPutStr h passphrase
liftIO $ hClose h liftIO $ hClose h
let passphrasefile = [Param "--passphrase-file", File tmpfile] let passphrasefile = [Param "--passphrase-file", File (fromosPath tmpfile)]
go $ passphrasefile ++ params go $ passphrasefile ++ params
#endif #endif
where where

View file

@ -75,9 +75,9 @@ openLock sharemode f = do
return $ if h == iNVALID_HANDLE_VALUE return $ if h == iNVALID_HANDLE_VALUE
then Nothing then Nothing
else Just h else Just h
#endif
where where
security_attributes = maybePtr Nothing security_attributes = maybePtr Nothing
#endif
dropLock :: LockHandle -> IO () dropLock :: LockHandle -> IO ()
dropLock = closeHandle dropLock = closeHandle

View file

@ -163,7 +163,7 @@ feedRead cmd subcmd params password emptydirectory feeder reader = do
withTmpFile (toOsPath "sop") $ \tmpfile h -> do withTmpFile (toOsPath "sop") $ \tmpfile h -> do
liftIO $ B.hPutStr h password liftIO $ B.hPutStr h password
liftIO $ hClose h liftIO $ hClose h
let passwordfile = [Param $ "--with-password="++tmpfile] let passwordfile = [Param $ "--with-password=" ++ fromOsPath tmpfile]
-- Don't need to pass emptydirectory since @FD is not used, -- Don't need to pass emptydirectory since @FD is not used,
-- and so tmpfile also does not need to be made absolute. -- and so tmpfile also does not need to be made absolute.
case emptydirectory of case emptydirectory of

View file

@ -0,0 +1,34 @@
### Please describe the problem.
Current syntax of `dead` online at git annex dead [repository ...] [--key somekey ...] says
`git annex dead [repository ...] [--key somekey ...]`
which is also incorrect rendering I think since it is
```
[d31548v@ndoli tmp]$ git annex dead --help
git-annex dead - hide a lost repository or key
Usage: git-annex dead [[REPOSITORY ...] | [--key KEY]]
```
so it is EITHER to announce REPOSITORY or a KEY.
Naive/new/quick users, since many annex commands take file paths as arguments could provide `dead` with both - repository and local paths, e.g. `git annex dead here */*.nii.gz` or alike. But then annex proceeds with marking `here` dead while then erroring out on paths:
```shell
(datalad-dev) [d78092t@ndoli 1080_wasabi]$ git-annex dead here sub-SID000743/ses-01/func/*.nii
dead here (recording state in git...)
ok
git-annex: there is no available git remote named "sub-SID000743/ses-01/func/sub-SID000743_ses-01_task-hyperalignment_acq-mb8_run-04_bold.nii"
```
which is correct/expected behavior given the fact that if RTFM then those are to be taken as repositories.
But I wondered if may be `git annex` could/should become more "protective" and fail early if any of provided repositories is "not available"?
[[!meta author=yoh]]
[[!tag projects/openneuro]]

View file

@ -0,0 +1,10 @@
[[!comment format=mdwn
username="yarikoptic"
avatar="http://cdn.libravatar.org/avatar/f11e9c84cb18d26a1748c33b48c924b4"
subject="comment 1"
date="2025-01-23T15:53:39Z"
content="""
is there `git annex undead` to easily mitigate users doing what they should have not done? ;-)
Would it be sufficient to just remove the corresponding `X` line from `trust.log`?
"""]]

View file

@ -0,0 +1,8 @@
[[!comment format=mdwn
username="yarikoptic"
avatar="http://cdn.libravatar.org/avatar/f11e9c84cb18d26a1748c33b48c924b4"
subject="comment 2"
date="2025-01-23T21:33:25Z"
content="""
d'oh -- it is `git annex semitrust here` to return the \"trust\" into a dead beast ;)
"""]]

View file

@ -0,0 +1,16 @@
[[!comment format=mdwn
username="beryllium@5bc3c32eb8156390f96e363e4ba38976567425ec"
nickname="beryllium"
avatar="http://cdn.libravatar.org/avatar/62b67d68e918b381e7e9dd6a96c16137"
subject="comment 4"
date="2025-01-24T08:04:27Z"
content="""
I don't know if this is expected behaviour, but for some files I imported from an importtree, when I use git-annex whereused --key with the correct key, nothing is shown unless I also add --historical
And then I am shown the importtree branch information. It doesn't seem to make sense to me. The file is definitely present, and git-annex whereis confirms this, as does git-annex lock/unlock
Willing to add more context if this is a little too vague
Shaddy Baddah (beryllium at shaddybaddah dot name)
"""]]

View file

@ -25,6 +25,7 @@ status.
not yet used, and would eliminate a lot of fromRawFilePaths. not yet used, and would eliminate a lot of fromRawFilePaths.
Make Utility.SystemDirectory import it when built with OsPath, Make Utility.SystemDirectory import it when built with OsPath,
and the remaining 6 hours or work will explain itself.. and the remaining 6 hours or work will explain itself..
This has been started in the `ospath` branch.
[[!tag confirmed]] [[!tag confirmed]]