Skip to content
Snippets Groups Projects
  1. Sep 07, 2017
    • Joey Hess's avatar
      prevent exporttree=yes on remotes that don't support exports · 16eb2f97
      Joey Hess authored
      Don't allow "exporttree=yes" to be set when the special remote
      does not support exports. That would be confusing since the user would
      set up a special remote for exports, but `git annex export` to it would
      later fail.
      
      This commit was supported by the NSF-funded DataLad project.
      16eb2f97
  2. Aug 17, 2017
    • Joey Hess's avatar
      add annex-ignore-command and annex-sync-command configs · d39c120a
      Joey Hess authored
      Added remote configuration settings annex-ignore-command and
      annex-sync-command, which are dynamic equivilants of the annex-ignore
      and annex-sync configurations.
      
      For this I needed a new DynamicConfig infrastructure. Its implementation
      should be as fast as before when there is no dynamic config, and it caches
      so shell commands are only run once.
      
      Note that annex-ignore-command exits nonzero when the remote should be ignored.
      While that may seem backwards, it allows using the same command for it as
      for annex-sync-command when you want to disable both.
      
      This commit was sponsored by Trenton Cronholm on Patreon.
      d39c120a
  3. Jan 31, 2017
    • Joey Hess's avatar
      Some optimisations to string splitting code. · 9eb10caa
      Joey Hess authored
      Turns out that Data.List.Utils.split is slow and makes a lot of
      allocations. Here's a much simpler single character splitter that behaves
      the same (even in wacky corner cases) while running in half the time and
      75% the allocations.
      
      As well as being an optimisation, this helps move toward eliminating use of
      missingh.
      
      (Data.List.Split.splitOn is nearly as slow as Data.List.Utils.split and
      allocates even more.)
      
      I have not benchmarked the effect on git-annex, but would not be surprised
      to see some parsing of eg, large streams from git commands run twice as
      fast, and possibly in less memory.
      
      This commit was sponsored by Boyd Stephen Smith Jr. on Patreon.
      9eb10caa
  4. Dec 28, 2016
  5. Nov 16, 2016
    • Joey Hess's avatar
      Avoid backtraces on expected failures when built with ghc 8; only use... · 0a4479b8
      Joey Hess authored
      Avoid backtraces on expected failures when built with ghc 8; only use backtraces for unexpected errors.
      
      ghc 8 added backtraces on uncaught errors. This is great, but git-annex was
      using error in many places for a error message targeted at the user, in
      some known problem case. A backtrace only confuses such a message, so omit it.
      
      Notably, commands like git annex drop that failed due to eg, numcopies,
      used to use error, so had a backtrace.
      
      This commit was sponsored by Ethan Aubin.
      0a4479b8
  6. Jul 26, 2016
  7. May 23, 2016
    • Joey Hess's avatar
      Pass the various gnupg-options configs to gpg in several cases where they were not before. · 91df4c6b
      Joey Hess authored
      Removed the instance LensGpgEncParams RemoteConfig because it encouraged
      code that does not take the RemoteGitConfig into account.
      
      RemoteType's setup was changed to take a RemoteGitConfig,
      although the only place that is able to provide a non-empty one is
      enableremote, when it's changing an existing remote. This led to several
      folow-on changes, and got RemoteGitConfig plumbed through.
      91df4c6b
  8. Jan 28, 2016
  9. Jan 20, 2016
  10. Jan 15, 2016
  11. Oct 26, 2015
  12. Oct 15, 2015
  13. Oct 09, 2015
  14. Aug 05, 2015
    • Joey Hess's avatar
      Simplify setup process for a ssh remote. · c5b8484c
      Joey Hess authored
      Now it suffices to run git remote add, followed by git-annex sync. Now the
      remote is automatically initialized for use by git-annex, where before the
      git-annex branch had to manually be pushed before using git-annex sync.
      Note that this involved changes to git-annex-shell, so if the remote is
      using an old version, the manual push is still needed.
      
      Implementation required git-annex-shell be changed, so configlist can
      autoinit a repository even when no git-annex branch has been pushed yet.
      Unfortunate because we'll have to wait for it to get deployed to servers
      before being able to rely on this change in the documentation.
      
      Did consider making git-annex sync push the git-annex branch to repos that
      didn't have a uuid, but this seemed difficult to do without complicating it
      in messy ways.
      
      It would be cleaner to split a command out from configlist to handle
      the initialization. But this is difficult without sacrificing backwards
      compatability, for users of old git-annex versions which would not use the
      new command.
      c5b8484c
  15. Jun 16, 2015
  16. Apr 30, 2015
  17. Apr 12, 2015
  18. Apr 11, 2015
  19. Jan 21, 2015
  20. Jan 16, 2015
  21. Dec 29, 2014
  22. Dec 11, 2014
  23. Dec 08, 2014
  24. Oct 09, 2014
    • Joey Hess's avatar
      hlint · b61c6bc2
      Joey Hess authored
      b61c6bc2
    • Joey Hess's avatar
      fix some mixed space+tab indentation · 7b50b3c0
      Joey Hess authored
      This fixes all instances of " \t" in the code base. Most common case
      seems to be after a "where" line; probably vim copied the two space layout
      of that line.
      
      Done as a background task while listening to episode 2 of the Type Theory
      podcast.
      7b50b3c0
  25. Aug 08, 2014
    • Joey Hess's avatar
      unify exception handling into Utility.Exception · c784ef45
      Joey Hess authored
      Removed old extensible-exceptions, only needed for very old ghc.
      
      Made webdav use Utility.Exception, to work after some changes in DAV's
      exception handling.
      
      Removed Annex.Exception. Mostly this was trivial, but note that
      tryAnnex is replaced with tryNonAsync and catchAnnex replaced with
      catchNonAsync. In theory that could be a behavior change, since the former
      caught all exceptions, and the latter don't catch async exceptions.
      
      However, in practice, nothing in the Annex monad uses async exceptions.
      Grepping for throwTo and killThread only find stuff in the assistant,
      which does not seem related.
      
      Command.Add.undo is changed to accept a SomeException, and things
      that use it for rollback now catch non-async exceptions, rather than
      only IOExceptions.
      c784ef45
  26. Aug 06, 2014
    • Joey Hess's avatar
      pushed checkPresent exception handling out of Remote implementations · b4cf22a3
      Joey Hess authored
      I tend to prefer moving toward explicit exception handling, not away from
      it, but in this case, I think there are good reasons to let checkPresent
      throw exceptions:
      
      1. They can all be caught in one place (Remote.hasKey), and we know
         every possible exception is caught there now, which we didn't before.
      2. It simplified the code of the Remotes. I think it makes sense for
         Remotes to be able to be implemented without needing to worry about
         catching exceptions inside them. (Mostly.)
      3. Types.StoreRetrieve.Preparer can only work on things that return a
         Bool, which all the other relevant remote methods already did.
         I do not see a good way to generalize that type; my previous attempts
         failed miserably.
      b4cf22a3
  27. Jul 17, 2014
    • Joey Hess's avatar
      · e213ef31
      Joey Hess authored
      git-annex (5.20140717) unstable; urgency=high
      
        * Fix minor FD leak in journal code. Closes: #754608
        * direct: Fix handling of case where a work tree subdirectory cannot
          be written to due to permissions.
        * migrate: Avoid re-checksumming when migrating from hashE to hash backend.
        * uninit: Avoid failing final removal in some direct mode repositories
          due to file modes.
        * S3: Deal with AWS ACL configurations that do not allow creating or
          checking the location of a bucket, but only reading and writing content to
          it.
        * resolvemerge: New plumbing command that runs the automatic merge conflict
          resolver.
        * Deal with change in git 2.0 that made indirect mode merge conflict
          resolution leave behind old files.
        * sync: Fix git sync with local git remotes even when they don't have an
          annex.uuid set. (The assistant already did so.)
        * Set gcrypt-publish-participants when setting up a gcrypt repository,
          to avoid unncessary passphrase prompts.
          This is a security/usability tradeoff. To avoid exposing the gpg key
          ids who can decrypt the repository, users can unset
          gcrypt-publish-participants.
        * Install nautilus hooks even when ~/.local/share/nautilus/ does not yet
          exist, since it is not automatically created for Gnome 3 users.
        * Windows: Move .vbs files out of git\bin, to avoid that being in the
          PATH, which caused some weird breakage. (Thanks, divB)
        * Windows: Fix locking issue that prevented the webapp starting
          (since 5.20140707).
      
      # imported from the archive
      e213ef31
  28. May 19, 2014
    • Joey Hess's avatar
      assistant: When there are multiple remotes giving different ways to access the... · fed509fb
      Joey Hess authored
      assistant: When there are multiple remotes giving different ways to access the same repository, honor remote cost settings and use the cheapest available.
      
      Note that TransferInfo does not always contain the Remote, although
      any transfer added to the TransferQueue does have a Remote in its
      TransferInfo. The transferkeys command still accepts a UUID, which is
      useful to handle upgrades, where an old assistant version runs the new
      transferkeys.
      
      This commit was sponsored by Kalle Svensson.
      fed509fb
  29. Apr 27, 2014
  30. 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
  31. Apr 09, 2014
    • Joey Hess's avatar
      make git-remote-daemon ssh transport robust · fb73792f
      Joey Hess authored
      * Remote system might be available, and connection get lost. Should
        reconnect, but needs to avoid bad behavior (ie, constant reconnect
        attempts.) Use exponential backoff.
      
      * Detect if old system had a too old git-annex-shell, and show the user
        a nice message in the webapp. Required parsing error messages, so perhaps
        this code shoudl be removed once enough time has passed..
      
      * Switch the protocol to using remote URI's, rather than remote names.
        Names change. Also avoids issues with serialization of names containing
        whitespace.
      
      This is nearly ready for merge into master now. I'd still like to make the ssh
      transport smarter about reusing ssh connection caching during git pull.
      
      This commit was sponsored by Jim Paris.
      fb73792f
  32. 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
  33. 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
  34. Mar 13, 2014
    • Joey Hess's avatar
      Commands that allow specifying which repository to act on using the... · 005e8744
      Joey Hess authored
      Commands that allow specifying which repository to act on using the repository's description will now fail when multiple repositories match, rather than picking a repository at random.
      
      So will --in=
      
      Note that since limitIn is not used by preferred content expressions,
      it's ok for it to throw an exception.
      005e8744
  35. 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