Commit graph

8624 commits

Author SHA1 Message Date
http://joeyh.name/
b49364e4cc Added a comment: safe and unsafe commands 2013-02-19 02:55:14 +00:00
Joey Hess
e598b78a69 webapp: Can now add a new local repository, and make it sync with the main local repository. 2013-02-18 20:37:26 -04:00
Joey Hess
9b91ea425c Merge branch 'master' of ssh://git-annex.branchable.com 2013-02-18 19:53:22 -04:00
https://www.google.com/accounts/o8/id?id=AItOawl2Jj8q2upJL4ZQAc2lp7ugTxJiGtcICv8
8aabd143ca Added a comment 2013-02-18 23:24:11 +00:00
Joey Hess
f4ab1a2e21 Merge branch 'master' of ssh://git-annex.branchable.com 2013-02-18 18:53:06 -04:00
Joey Hess
aa158a147d blog for the day 2013-02-18 18:52:47 -04:00
Joey Hess
15fd867398 add openssh to Android
This build still needs some work to look in $HOME/.ssh
rather than relying on pwent info.
2013-02-18 18:50:28 -04:00
Joey Hess
eb0e5be62f set fileEncoding on the off chance lsof outputs binary garbage 2013-02-18 17:20:52 -04:00
Joey Hess
d799ef3182 set fileSystemEncoding when reading files that might be binary 2013-02-18 17:19:37 -04:00
109.90.6.140
77dcba88b3 poll vote (I haven't always well understood the differences between commandline operation & the assistant, so the differences would confuse me, and I found the command line more understandable & less scary. Now trying to learn to like & trust the assistant. :)) 2013-02-18 20:53:02 +00:00
Joey Hess
bd99730d77 close 2013-02-18 15:55:18 -04:00
Joey Hess
da6745c7f6 Merge remote-tracking branch 'origin/master' 2013-02-18 15:53:20 -04:00
Joey Hess
2b86dc0271 avoid writing pre-commit hook if we cannot make it executable 2013-02-18 15:52:50 -04:00
Joey Hess
bff6c9f53f add busybox config file so I can edit it easily 2013-02-18 15:43:40 -04:00
Joey Hess
5fe7d2f599 update 2013-02-18 15:41:19 -04:00
Joey Hess
89048e2b34 update 2013-02-18 15:39:55 -04:00
Joey Hess
e80364e19a fix enabling of busybox installer 2013-02-18 15:16:10 -04:00
https://www.google.com/accounts/o8/id?id=AItOawkGCmVc5qIJaQQgG82Hc5zzBdAVdhe2JEM
ba332abd7c 2013-02-18 18:15:29 +00:00
https://www.google.com/accounts/o8/id?id=AItOawkGCmVc5qIJaQQgG82Hc5zzBdAVdhe2JEM
096f7d3dad 2013-02-18 18:13:30 +00:00
Joey Hess
dec8b6ec8c updated hackage version to add missing dependency 2013-02-18 13:33:49 -04:00
Joey Hess
127463e577 webapp: Allow creating repositories on filesystems that lack support for symlinks. 2013-02-18 12:54:41 -04:00
86.6.158.51
410fcaf617 poll vote (I need a Windows port) 2013-02-18 15:14:30 +00:00
69.70.101.194
4ce8d94de9 poll vote (OpenStack SWIFT) 2013-02-18 15:09:02 +00:00
Joey Hess
422dd28f0b hlint 2013-02-18 02:39:40 -04:00
Joey Hess
9aa979edbd types 2013-02-18 02:35:38 -04:00
http://jasonwoof.com/
7f021ecbf5 Added a comment: phonegap might help 2013-02-17 22:43:06 +00:00
Joey Hess
169712fc9a add random 2013-02-17 17:00:28 -04:00
Joey Hess
357cfa5071 Merge branch 'master' of ssh://git-annex.branchable.com 2013-02-17 16:59:37 -04:00
Joey Hess
151ea3c68a blog for the day 2013-02-17 16:59:09 -04:00
Joey Hess
d7c93b8913 fully support core.symlinks=false in all relevant symlink handling code
Refactored annex link code into nice clean new library.

Audited and dealt with calls to createSymbolicLink.
Remaining calls are all safe, because:

Annex/Link.hs:  ( liftIO $ createSymbolicLink linktarget file
  only when core.symlinks=true
Assistant/WebApp/Configurators/Local.hs:                createSymbolicLink link link
  test if symlinks can be made
Command/Fix.hs: liftIO $ createSymbolicLink link file
  command only works in indirect mode
Command/FromKey.hs:     liftIO $ createSymbolicLink link file
  command only works in indirect mode
Command/Indirect.hs:                    liftIO $ createSymbolicLink l f
  refuses to run if core.symlinks=false
Init.hs:                createSymbolicLink f f2
  test if symlinks can be made
Remote/Directory.hs:    go [file] = catchBoolIO $ createSymbolicLink file f >> return True
  fast key linking; catches failure to make symlink and falls back to copy
Remote/Git.hs:          liftIO $ catchBoolIO $ createSymbolicLink loc file >> return True
  ditto
Upgrade/V1.hs:                          liftIO $ createSymbolicLink link f
  v1 repos could not be on a filesystem w/o symlinks

Audited and dealt with calls to readSymbolicLink.
Remaining calls are all safe, because:

Annex/Link.hs:		( liftIO $ catchMaybeIO $ readSymbolicLink file
  only when core.symlinks=true
Assistant/Threads/Watcher.hs:		ifM ((==) (Just link) <$> liftIO (catchMaybeIO $ readSymbolicLink file))
  code that fixes real symlinks when inotify sees them
  It's ok to not fix psdueo-symlinks.
Assistant/Threads/Watcher.hs:		mlink <- liftIO (catchMaybeIO $ readSymbolicLink file)
  ditto
Command/Fix.hs:	stopUnless ((/=) (Just link) <$> liftIO (catchMaybeIO $ readSymbolicLink file)) $ do
  command only works in indirect mode
Upgrade/V1.hs:	getsymlink = takeFileName <$> readSymbolicLink file
  v1 repos could not be on a filesystem w/o symlinks

Audited and dealt with calls to isSymbolicLink.
(Typically used with getSymbolicLinkStatus, but that is just used because
getFileStatus is not as robust; it also works on pseudolinks.)
Remaining calls are all safe, because:

Assistant/Threads/SanityChecker.hs:                             | isSymbolicLink s -> addsymlink file ms
  only handles staging of symlinks that were somehow not staged
  (might need to be updated to support pseudolinks, but this is
  only a belt-and-suspenders check anyway, and I've never seen the code run)
Command/Add.hs:         if isSymbolicLink s || not (isRegularFile s)
  avoids adding symlinks to the annex, so not relevant
Command/Indirect.hs:                            | isSymbolicLink s -> void $ flip whenAnnexed f $
  only allowed on systems that support symlinks
Command/Indirect.hs:            whenM (liftIO $ not . isSymbolicLink <$> getSymbolicLinkStatus f) $ do
  ditto
Seek.hs:notSymlink f = liftIO $ not . isSymbolicLink <$> getSymbolicLinkStatus f
  used to find unlocked files, only relevant in indirect mode
Utility/FSEvents.hs:                    | Files.isSymbolicLink s = runhook addSymlinkHook $ Just s
Utility/FSEvents.hs:                                            | Files.isSymbolicLink s ->
Utility/INotify.hs:                             | Files.isSymbolicLink s ->
Utility/INotify.hs:                     checkfiletype Files.isSymbolicLink addSymlinkHook f
Utility/Kqueue.hs:              | Files.isSymbolicLink s = callhook addSymlinkHook (Just s) change
  all above are lower-level, not relevant

Audited and dealt with calls to isSymLink.
Remaining calls are all safe, because:

Annex/Direct.hs:			| isSymLink (getmode item) =
  This is looking at git diff-tree objects, not files on disk
Command/Unused.hs:		| isSymLink (LsTree.mode l) = do
  This is looking at git ls-tree, not file on disk
Utility/FileMode.hs:isSymLink :: FileMode -> Bool
Utility/FileMode.hs:isSymLink = checkMode symbolicLinkMode
  low-level

Done!!
2013-02-17 16:43:14 -04:00
128.32.34.64
da596b9303 poll vote (An Ubuntu PPA would be supercool! Thanks for your great work!!) 2013-02-17 01:58:17 +00:00
http://edheil.wordpress.com/
6f08b2067c 2013-02-17 01:49:12 +00:00
annexuser
2dc663bcbb 2013-02-16 23:31:34 +00:00
https://www.google.com/accounts/o8/id?id=AItOawmCmNS-oUgYfNg85-LPuxzTZJUp0sIgprM
e20aaa8a35 Added a comment: more homebrew 2013-02-16 19:46:47 +00:00
Joey Hess
0984f3581e build fixes 2013-02-16 13:10:47 -04:00
Joey Hess
2091ab275e add news item for git-annex 3.20130216 2013-02-16 11:37:37 -04:00
Joey Hess
ca53d609cc document release 2013-02-16 11:36:31 -04:00
Joey Hess
8c90875455 phony standalone 2013-02-16 10:45:13 -04:00
Joey Hess
d488905af1 deal with Glob/filemanip conflict 2013-02-16 10:31:59 -04:00
Joey Hess
63ce1a4f71 prep release 2013-02-16 10:26:49 -04:00
79.224.245.36
a8a85dab2b poll vote (My phone (or MP3 player)) 2013-02-16 11:03:30 +00:00
Joey Hess
3fbfc6a9e0 update 2013-02-15 18:22:23 -04:00
Joey Hess
3a21c1ed7a blog for the looooong day 2013-02-15 18:19:27 -04:00
Joey Hess
e699a35380 switch to direct mode when auto-enabling
Gets the direct mode mapping set up correctly. Maybe other stuff, but
probably not, since this is probably a new repo.
2013-02-15 18:16:50 -04:00
Joey Hess
397082013a proper fix for dropunused
Now getKeysPresent checks that the key's content, not only its directory,
exists. In direct mode, the inode cache file is used as a standin for the
content.

removeAnnex always removes the inode cache file, and drop and move --from
always call removeAnnex, even if the object does not seem to be inAnnex,
to ensure it's always deleted.
2013-02-15 17:58:49 -04:00
Joey Hess
55069f0fab update for reversion 2013-02-15 16:39:11 -04:00
Joey Hess
5a8fb26d0a Revert "Clean up direct mode cache and mapping info when dropping keys."
This reverts commit 57780cb3a4.

This was buggy, it caused the direct mode cache to be lost when dropping
keys, so when the file is gotten back, it's stored in indirect mode.

Note to self: Do not attempt bug fixes at 6 am!
2013-02-15 16:37:57 -04:00
Joey Hess
80fa144d79 fixed test suite build after recent changes broke it 2013-02-15 16:06:22 -04:00
Joey Hess
5ea4b91fb4 start to support core.symlinks=false
Utility functions to handle no symlink mode, and converted Annex.Content to
use them; still many other places to convert.
2013-02-15 16:03:11 -04:00
Joey Hess
2cd696a124 update 2013-02-15 14:36:49 -04:00