add: Stage symlinks the same as git add would, even if they are not a link to annexed content.

This commit is contained in:
Joey Hess 2015-07-07 16:15:30 -04:00
parent 772dd88ae9
commit 81ad277a85
5 changed files with 34 additions and 7 deletions

View file

@ -66,10 +66,13 @@ startSmall :: FilePath -> CommandStart
startSmall file = do
showStart "add" file
showNote "non-large file; adding content to git repository"
next $ do
params <- forceParams
Annex.Queue.addCommand "add" (params++[Param "--"]) [file]
next $ return True
next $ performAdd file
performAdd :: FilePath -> CommandPerform
performAdd file = do
params <- forceParams
Annex.Queue.addCommand "add" (params++[Param "--"]) [file]
next $ return True
{- The add subcommand annexes a file, generating a key for it using a
- backend, and then moving it into the annex directory and setting up
@ -81,11 +84,13 @@ start file = ifAnnexed file addpresent add
ms <- liftIO $ catchMaybeIO $ getSymbolicLinkStatus file
case ms of
Nothing -> stop
Just s
| isSymbolicLink s || not (isRegularFile s) -> stop
Just s
| not (isRegularFile s) && not (isSymbolicLink s) -> stop
| otherwise -> do
showStart "add" file
next $ perform file
next $ if isSymbolicLink s
then performAdd file
else perform file
addpresent key = ifM isDirect
( do
ms <- liftIO $ catchMaybeIO $ getSymbolicLinkStatus file

2
debian/changelog vendored
View file

@ -23,6 +23,8 @@ git-annex (5.20150618) UNRELEASED; urgency=medium
shared libraries including libyaml.
* import: Fix failure of cross-device import on Windows.
* merge: Avoid creating the synced/master branch.
* add: Stage symlinks the same as git add would, even if they are not a
link to annexed content.
-- Joey Hess <id@joeyh.name> Thu, 02 Jul 2015 12:31:14 -0400

View file

@ -18,6 +18,9 @@ If annex.largefiles is configured, and does not match a file that is being
added, `git annex add` will behave the same as `git add` and add the
non-large file directly to the git repository, instead of to the annex.
This command can also be used to add symbolic links, both symlinks to
annexed content, and other symlinks.
# OPTIONS
* `--include-dotfiles`

View file

@ -6,3 +6,5 @@ Is there already a good way of adding symlinks in direct mode? If not, I would f
Best regards,
T.
> [[fixed|done]] --[[Joey]]

View file

@ -0,0 +1,15 @@
[[!comment format=mdwn
username="joey"
subject="""comment 3"""
date="2015-07-07T20:02:02Z"
content="""
Recently, `git annex add` started adding files
to git, if annex.largefiles didn't match them.
So, it's possible to use that to add eg, source files. But it currently
skips symlinks (unless they're git-annex symlinks).
What I think makes sense to do is make it also process
symlinks, and always check them into git as-is. So, git-annex add becomes
like git-add except smart about adding large files to the annex.
"""]]