Skip to content
Snippets Groups Projects
  1. Jul 27, 2014
  2. Apr 17, 2014
    • Joey Hess's avatar
      replace (Key, Backend) with Key · e880d0d2
      Joey Hess authored
      Only fsck and reinject and the test suite used the Backend, and they can
      look it up as needed from the Key. This simplifies the code and also speeds
      it up.
      
      There is a small behavior change here. Before, all commands would warn when
      acting on an annexed file with an unknown backend. Now, only fsck and
      reinject show that warning.
      e880d0d2
  3. Apr 11, 2014
    • Joey Hess's avatar
      · 2a82adc4
      Joey Hess authored
      git-annex (5.20140412) unstable; urgency=high
      
        * Last release didn't quite fix the high cpu issue in all cases, this should.
      
      # imported from the archive
      2a82adc4
  4. Apr 02, 2014
    • Joey Hess's avatar
      · b6d46c21
      Joey Hess authored
      git-annex (5.20140402) unstable; urgency=medium
      
        * unannex, uninit: Avoid committing after every file is unannexed,
          for massive speedup.
        * --notify-finish switch will cause desktop notifications after each
          file upload/download/drop completes
          (using the dbus Desktop Notifications Specification)
        * --notify-start switch will show desktop notifications when each
          file upload/download starts.
        * webapp: Automatically install Nautilus integration scripts
          to get and drop files.
        * tahoe: Pass -d parameter before subcommand; putting it after
          the subcommand no longer works with tahoe-lafs version 1.10.
          (Thanks, Alberto Berti)
        * forget --drop-dead: Avoid removing the dead remote from the trust.log,
          so that if git remotes for it still exist anywhere, git annex info
          will still know it's dead and not show it.
        * git-annex-shell: Make configlist automatically initialize
          a remote git repository, as long as a git-annex branch has
          been pushed to it, to simplify setup of remote git repositories,
          including via gitolite.
        * add --include-dotfiles: New option, perhaps useful for backups.
        * Version 5.20140227 broke creation of glacier repositories,
          not including the datacenter and vault in their configuration.
          This bug is fixed, but glacier repositories set up with the broken
          version of git-annex need to have the datacenter and vault set
          in order to be usable. This can be done using git annex enableremote
          to add the missing settings. For details, see
          http://git-annex.branchable.com/bugs/problems_with_glacier/
        * Added required content configuration.
        * assistant: Improve ssh authorized keys line generated in local pairing
          or for a remote ssh server to set environment variables in an
          alternative way that works with the non-POSIX fish shell, as well
          as POSIX shells.
      
      # imported from the archive
      b6d46c21
  5. Mar 26, 2014
    • Joey Hess's avatar
      · f4a98d2d
      Joey Hess authored
      git-annex (5.20140320~bpo70+1) wheezy-backports; urgency=medium
      
        * Updating backport to newest release.
        * Note that this backport does not feature constant time webapp auth token
          comparisons. It's not recommended to use the webapp on multiuser systems,
          since another use may be able to use a timing attack to guess its auth
          token. If you need that, it should not be hard to backport
          haskell-securemem.
      
      # imported from the archive
      f4a98d2d
  6. Feb 20, 2014
    • Joey Hess's avatar
      · 9c426c0d
      Joey Hess authored
      git-annex (5.20140210~bpo70+2) wheezy-backports; urgency=medium
      
        * Updating backport to newest release.
        * Remaining differences in this backport:
          - No webdav special remote support.
          - Test suite is not built into git-annex as it now uses haskell-tasty,
            which is not yet backported.
          - No skein hash support.
      
      # imported from the archive
      9c426c0d
  7. Nov 27, 2013
    • Joey Hess's avatar
      · 7189dfd7
      Joey Hess authored
      git-annex (5.20131127) unstable; urgency=low
      
        * webapp: Detect when upgrades are available, and upgrade if the user
          desires.
          (Only when git-annex is installed using the prebuilt binaries
          from git-annex upstream, not from eg Debian.)
        * assistant: Detect when the git-annex binary is modified or replaced,
          and either prompt the user to restart the program, or automatically
          restart it.
        * annex.autoupgrade configures both the above upgrade behaviors.
        * Added support for quvi 0.9. Slightly suboptimal due to limitations in its
          interface compared with the old version.
        * Bug fix: annex.version did not get set on automatic upgrade to v5 direct
          mode repo, so the upgrade was performed repeatedly, slowing commands down.
        * webapp: Fix bug that broke switching between local repositories
          that use the new guarded direct mode.
        * Android: Fix stripping of the git-annex binary.
        * Android: Make terminal app show git-annex version number.
        * Android: Re-enable XMPP support.
        * reinject: Allow to be used in direct mode.
        * Futher improvements to git repo repair. Has now been tested in tens
          of thousands of intentionally damaged repos, and successfully
          repaired them all.
        * Allow use of --unused in bare repository.
      
      # imported from the archive
      7189dfd7
  8. Nov 06, 2013
    • Joey Hess's avatar
      · d2633388
      Joey Hess authored
      git-annex (4.20131106~bpo70+1) wheezy-backports; urgency=low
      
        * Backport is now built against git 1.8.4, also now available in backports.
        * Improve local pairing behavior when two computers both try to start
          the pairing process separately.
        * sync: Work even when the local git repository is new and empty,
          with no master branch.
        * gcrypt, bup: Fix bug that prevented using these special remotes
          with encryption=pubkey.
        * Fix enabling of gcrypt repository accessed over ssh;
          git-annex-shell gcryptsetup had a bug that caused it to fail
          with permission denied.
        * Fix zombie process that occurred when switching between repository
          views in the webapp.
        * map: Work when there are gcrypt remotes.
        * Fix build w/o webapp.
        * Fix exception handling bug that could cause .git/annex/index to be used
          for git commits outside the git-annex branch. Known to affect git-annex
          when used with the git shipped with Ubuntu 13.10.
      
      # imported from the archive
      d2633388
  9. Oct 02, 2013
    • Joey Hess's avatar
      Added SKEIN256 and SKEIN512 backends · a05b763b
      Joey Hess authored
      SHA3 is still waiting for final standardization.
      Although this is looking less likely given
      https://www.cdt.org/blogs/joseph-lorenzo-hall/2409-nist-sha-3
      
      In the meantime, cryptohash implements skein, and it's used by some of the
      haskell ecosystem (for yesod sessions, IIRC), so this implementation is
      likely to continue working. Also, I've talked with the cryprohash author
      and he's a reasonable guy.
      
      It makes sense to have an alternate high security hash, in case some
      horrible attack is found against SHA2 tomorrow, or in case SHA3 comes out
      and worst fears are realized.
      
      I'd also like to support using skein for HMAC. But no hurry there and
      a new version of cryptohash has much nicer HMAC code, so I will probably
      wait until I can use that version.
      a05b763b
  10. Aug 15, 2013
    • Joey Hess's avatar
      · 341269e0
      Joey Hess authored
      git-annex (4.20130815) unstable; urgency=low
      
        * assistant, watcher: .gitignore files and other git ignores are now
          honored, when git 1.8.4 or newer is installed.
          (Thanks, Adam Spiers, for getting the necessary support into git for this.)
        * importfeed: Ignores transient problems with feeds. Only exits nonzero
          when a feed has repeatedly had a problems for at least 1 day.
        * importfeed: Fix handling of dots in extensions.
        * Windows: Added support for encrypted special remotes.
        * Windows: Fixed permissions problem that prevented removing files
          from directory special remote. Directory special remotes now fully usable.
      
      # imported from the archive
      341269e0
  11. Apr 03, 2013
  12. Apr 02, 2013
    • Joey Hess's avatar
      Update working tree files fully atomically · 38d61f93
      Joey Hess authored
      This avoids commit churn by the assistant when eg,
      replacing a file with a symlink.
      
      But, just as importantly, it prevents the working tree being left with a
      deleted file if git-annex, or perhaps the whole system, crashes at the
      wrong time.
      
      (It also probably avoids confusing displays in file managers.)
      38d61f93
  13. Feb 17, 2013
    • Joey Hess's avatar
      fully support core.symlinks=false in all relevant symlink handling code · d7c93b89
      Joey Hess authored
      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!!
      d7c93b89
  14. Feb 15, 2013
  15. Jan 05, 2013
    • Joey Hess's avatar
      assistant: Make expensive transfer scan work fully in direct mode. · 1cdf2b92
      Joey Hess authored
      The expensive scan uses lookupFile, but in direct mode, that doesn't work
      for files that are present. So the scan was not finding things that are
      present that need to be uploaded. (It did find things not present that
      needed to be downloaded.)
      
      Now lookupFile also works in direct mode. Note that it still prefers
      symlinks on disk to info committed to git, in direct mode. This is
      necessary to make things like Assistant.Threads.Watcher.onAddSymlink
      work correctly, when given a new symlink not yet checked into git (or
      replacing a file checked into git).
      1cdf2b92
  16. Jan 01, 2013
  17. Dec 30, 2012
    • Joey Hess's avatar
      type based git config handling · 7f7c31df
      Joey Hess authored
      Now there's a Config type, that's extracted from the git config at startup.
      Note that laziness means that individual config values are only looked up
      and parsed on demand, and so we get implicit memoization for all of them.
      So this is not only prettier and more type safe, it optimises several
      places that didn't have explicit memoization before. As well as getting rid
      of the ugly explicit memoization code.
      
      Not yet done for annex.<remote>.* configuration settings.
      7f7c31df
  18. Dec 12, 2012
  19. Oct 29, 2012
  20. Jun 20, 2012
    • Joey Hess's avatar
      maintain set of files pendingAdd · e0fdfb2e
      Joey Hess authored
      Kqueue needs to remember which files failed to be added due to being open,
      and retry them. This commit gets the data in place for such a retry thread.
      
      Broke KeySource out into its own file, and added Eq and Ord instances
      so it can be stored in a Set.
      e0fdfb2e
  21. Jun 05, 2012
  22. Jun 01, 2012
  23. May 06, 2012
    • Joey Hess's avatar
      Fix use of several config settings · f7d89826
      Joey Hess authored
      annex.ssh-options, annex.rsync-options, annex.bup-split-options.
      
      And adjust types to avoid the bugs that broke several config settings
      recently. Now "annex." prefixing is enforced at the type level.
      f7d89826
  24. Mar 22, 2012
  25. Feb 16, 2012
  26. Feb 14, 2012
    • Joey Hess's avatar
      fix LsFiles.typeChanged paths · a2f241d5
      Joey Hess authored
      Passing absolute paths to Command.Add used to work, but after recent
      changes doesn't. All LsFiles should use relative paths anyway, so fix it
      there.
      a2f241d5
    • Joey Hess's avatar
      rework git check-attr interface · cbaebf53
      Joey Hess authored
      Now gitattributes are looked up, efficiently, in only the places that
      really need them, using the same approach used for cat-file.
      
      The old CheckAttr code seemed very fragile, in the way it streamed files
      through git check-attr.
      I actually found that cad88248
      was still deadlocking with ghc 7.4, at the end of adding a lot of files.
      This should fix that problem, and avoid future ones.
      
      The best part is that this removes withAttrFilesInGit and withNumCopies,
      which were complicated Seek methods, as well as simplfying the types
      for several other Seek methods that had a Backend tupled in.
      cbaebf53
  27. Feb 03, 2012
    • Joey Hess's avatar
      IO exception rework · 146c36ca
      Joey Hess authored
      ghc 7.4 comaplains about use of System.IO.Error to catch exceptions.
      Ok, use Control.Exception, with variants specialized to only catch IO
      exceptions.
      146c36ca
  28. Dec 31, 2011
  29. Dec 15, 2011
  30. Dec 14, 2011
  31. Dec 13, 2011
  32. Dec 06, 2011
    • Joey Hess's avatar
      Prevent key names from containing newlines. · 480495be
      Joey Hess authored
      There are several places where it's assumed a key can be written on one
      line. One is in the format of the .git/annex/unused files. The difficult
      one is that filenames derived from keys are fed into git cat-file --batch,
      which has a line based input. (And no -z option.)
      
      So, for now it's best to block such keys being created.
      480495be
  33. Nov 08, 2011
    • Joey Hess's avatar
      reorder repo parameters last · bf460a0a
      Joey Hess authored
      Many functions took the repo as their first parameter. Changing it
      consistently to be the last parameter allows doing some useful things with
      currying, that reduce boilerplate.
      
      In particular, g <- gitRepo is almost never needed now, instead
      use inRepo to run an IO action in the repo, and fromRepo to get
      a value from the repo.
      
      This also provides more opportunities to use monadic and applicative
      combinators.
      bf460a0a
  34. Nov 04, 2011
    • Joey Hess's avatar
      use SHA256 by default · ef345719
      Joey Hess authored
      To get old behavior, add a .gitattributes containing: * annex.backend=WORM
      
      I feel that SHA256 is a better default for most people, as long as their
      systems are fast enough that checksumming their files isn't a problem.
      git-annex should default to preserving the integrity of data as well as git
      does. Checksum backends also work better with editing files via
      unlock/lock.
      
      I considered just using SHA1, but since that hash is believed to be somewhat
      near to being broken, and git-annex deals with large files which would be a
      perfect exploit medium, I decided to go to a SHA-2 hash.
      
      SHA512 is annoyingly long when displayed, and git-annex displays it in a
      few places (and notably it is shown in ls -l), so I picked the shorter
      hash. Considered SHA224 as it's even shorter, but feel it's a bit weird.
      
      I expect git-annex will use SHA-3 at some point in the future, but
      probably not soon!
      
      Note that systems without a sha256sum (or sha256) program will fall back to
      defaulting to SHA1.
      ef345719
  35. Oct 10, 2011
  36. Oct 05, 2011
  37. Oct 04, 2011