webapp: Fix bugs that could result in a relative path such as "." being written to ~/.config/git-annex/autostart

and ignore any such  relative paths in the file

This was a reversion caused by the relative path changes in 5.20150113.
This commit is contained in:
Joey Hess 2015-12-02 15:57:30 -04:00
parent f16e235983
commit e9f43c07f9
Failed to extract signature
5 changed files with 41 additions and 5 deletions

View file

@ -118,5 +118,5 @@ postPreferencesR = page "Preferences" (Just Configuration) $ do
inAutoStartFile :: Annex Bool
inAutoStartFile = do
here <- fromRepo Git.repoPath
here <- liftIO . absPath =<< fromRepo Git.repoPath
any (`equalFilePath` here) <$> liftIO readAutoStartFile

View file

@ -26,8 +26,11 @@ autoStartFile = userConfigFile "autostart"
readAutoStartFile :: IO [FilePath]
readAutoStartFile = do
f <- autoStartFile
nub . map dropTrailingPathSeparator . lines
filter valid . nub . map dropTrailingPathSeparator . lines
<$> catchDefaultIO "" (readFile f)
where
-- Ignore any relative paths; some old buggy versions added eg "."
valid = isAbsolute
modifyAutoStartFile :: ([FilePath] -> [FilePath]) -> IO ()
modifyAutoStartFile func = do
@ -42,12 +45,16 @@ modifyAutoStartFile func = do
- present, it's moved to the top, so it will be used as the default
- when opening the webapp. -}
addAutoStartFile :: FilePath -> IO ()
addAutoStartFile path = modifyAutoStartFile $ (:) path
addAutoStartFile path = do
path' <- absPath path
modifyAutoStartFile $ (:) path'
{- Removes a directory from the autostart file. -}
removeAutoStartFile :: FilePath -> IO ()
removeAutoStartFile path = modifyAutoStartFile $
filter (not . equalFilePath path)
removeAutoStartFile path = do
path' <- absPath path
modifyAutoStartFile $
filter (not . equalFilePath path')
{- The path to git-annex is written here; which is useful when cabal
- has installed it to some awful non-PATH location. -}

4
debian/changelog vendored
View file

@ -14,6 +14,10 @@ git-annex (5.20151117) UNRELEASED; urgency=medium
* addurl, importfeed: Changed to honor annex.largefiles settings,
when the content of the url is downloaded. (Not when using --fast or
--relaxed.)
* webapp: Fix bugs that could result in a relative path such as "."
being written to ~/.config/git-annex/autostart, and ignore any such
relative paths in the file.
This was a reversion caused by the relative path changes in 5.20150113.
-- Joey Hess <id@joeyh.name> Mon, 16 Nov 2015 16:49:34 -0400

View file

@ -23,3 +23,4 @@ there is nothing relevant to this error in there unfortunately.
### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
> [[fixed|done]] --[[Joey]]

View file

@ -0,0 +1,24 @@
[[!comment format=mdwn
username="joey"
subject="""comment 2"""
date="2015-12-02T19:36:14Z"
content="""
Found this in the changelog:
* webapp: When adding another local repository, and combining it
with the current repository, the new repository's remote path
was set to "." rather than the path to the current repository.
This was a reversion caused by the relative path changes in 5.20150113.
I guess this is a similar problem, although it seems that the "." in your case
made it into `~/.config/git-annex/autostart`
I found two ways to do that. One is to tell the webapp to make a repository, and
enter "." as the repository location. The other, which is probably what you
did, is to go to Configuration -> Preferences and uncheck "Auto start", save
and then go back and check it. This wrongly puts in a "." instead of the full
repo path.
I've fixed all code paths to force absolute paths in the autostart file,
and made any relative paths that got in there be ignored.
"""]]