Skip to content
Snippets Groups Projects
  1. May 17, 2021
    • Joey Hess's avatar
      filter-branch working aside from some edge cases · 984034f3
      Joey Hess authored
      Added a note to man page about what happens to information that is
      recorded in the private journal. Since it uses Branch.get, that
      information will be copied when options allow. It seemed better to allow
      it and document it than not allow it, since the options allow excluding
      repositories and so can be used to exclude private repos if desired.
      984034f3
  2. May 13, 2021
    • Joey Hess's avatar
      add some functions listing log files · 40ade7a5
      Joey Hess authored
      Not used yet, will be used by copy-branch to generate the list of files
      to copy.
      40ade7a5
    • Joey Hess's avatar
      refactoring · 4ff8a1ae
      Joey Hess authored
      filterBranch should be reusable for copy-branch command.
      
      Changed LogVariety to differentiate between LocationLog and UrlLog;
      only location logs contain uuids and need to be filtered by uuid,
      while url logs do not. This does not change current behavior,
      but it will let filterBranch be reused without filtering url logs
      incorrectly.
      4ff8a1ae
    • Joey Hess's avatar
      add configLog to otherLogs · 10af498b
      Joey Hess authored
      This oversight didn't cause any problems because the only place that
      uses the information is dropDead, which handles Nothing the same as Just
      OtherLog.
      10af498b
  3. Apr 13, 2021
  4. Jan 06, 2021
    • Joey Hess's avatar
      mincopies · cc896994
      Joey Hess authored
      This is conceptually very simple, just making a 1 that was hard coded be
      exposed as a config option. The hard part was plumbing all that, and
      dealing with complexities like reading it from git attributes at the
      same time that numcopies is read.
      
      Behavior change: When numcopies is set to 0, git-annex used to drop
      content without requiring any copies. Now to get that (highly unsafe)
      behavior, mincopies also needs to be set to 0. It seemed better to
      remove that edge case, than complicate mincopies by ignoring it when
      numcopies is 0.
      
      This commit was sponsored by Denis Dzyubenko on Patreon.
      cc896994
  5. Jul 07, 2020
    • Joey Hess's avatar
      cache one more log file for metadata · 9483b104
      Joey Hess authored
      My worry was that a preferred content expression that matches on metadata
      would have removed the location log from cache, causing an expensive
      re-read when a Seek action later checked the location log.
      
      Especially when the --all optimisation in the previous commit
      pre-cached the location log.
      
      This also means that the --all optimisation could cache the metadata log
      too, if it wanted too, but not currently done.
      
      The cache is a list, with the most recently accessed file first. That
      optimises it for the common case of reading the same file twice, eg a
      get, examine, followed by set reads it twice. And sync --content reads the
      location log 3 times in a row commonly.
      
      But, as a list, it should not be made to be too long. I thought about
      expanding it to 5 items, but that seemed unlikely to be a win commonly
      enough to outweigh the extra time spent checking the cache.
      
      Clearly there could be some further benchmarking and tuning here.
      9483b104
    • Joey Hess's avatar
      optimise logfile to key parsing · 98e2e3cb
      Joey Hess authored
      Using bytestring-filepath
      98e2e3cb
  6. Feb 14, 2020
    • Joey Hess's avatar
      annex.tune.branchhash1=true bugfix · 879f52a1
      Joey Hess authored
      Fix support for repositories tuned with annex.tune.branchhash1=true,
      including --all not working and git-annex log not displaying anything for
      annexed files.
      879f52a1
  7. Dec 18, 2019
    • Joey Hess's avatar
      more RawFilePath · 686791c4
      Joey Hess authored
      Remove dup definitions and just use the RawFilePath one. </> etc are
      enough faster that it's probably faster than building a String directly,
      although I have not benchmarked.
      686791c4
  8. Dec 11, 2019
    • Joey Hess's avatar
      use filepath-bytestring for annex object manipulations · c1921177
      Joey Hess authored
      git-annex find is now RawFilePath end to end, no string conversions.
      So is git-annex get when it does not need to get anything.
      So this is a major milestone on optimisation.
      
      Benchmarks indicate around 30% speedup in both commands.
      
      Probably many other performance improvements. All or nearly all places
      where a file is statted use RawFilePath now.
      c1921177
  9. Nov 26, 2019
    • Joey Hess's avatar
      wip RawFilePath 2x git-annex find speedup · 067aabdd
      Joey Hess authored
      Finally builds (oh the agoncy of making it build), but still very
      unmergable, only Command.Find is included and lots of stuff is badly
      hacked to make it compile.
      
      Benchmarking vs master, this git-annex find is significantly faster!
      Specifically:
      
      	num files	old	new	speedup
      	48500		4.77	3.73	28%
      	12500		1.36	1.02	66%
      	20		0.075	0.074	0% (so startup time is unchanged)
      
      That's without really finishing the optimization. Things still to do:
      
      * Eliminate all the fromRawFilePath, toRawFilePath, encodeBS,
        decodeBS conversions.
      * Use versions of IO actions like getFileStatus that take a RawFilePath.
      * Eliminate some Data.ByteString.Lazy.toStrict, which is a slow copy.
      * Use ByteString for parsing git config to speed up startup.
      
      It's likely several of those will speed up git-annex find further.
      And other commands will certianly benefit even more.
      067aabdd
  10. Mar 13, 2019
    • Joey Hess's avatar
      update licenses from GPL to AGPL · 40ecf58d
      Joey Hess authored
      This does not change the overall license of the git-annex program, which
      was already AGPL due to a number of sources files being AGPL already.
      
      Legally speaking, I'm adding a new license under which these files are
      now available; I already released their current contents under the GPL
      license. Now they're dual licensed GPL and AGPL. However, I intend
      for all my future changes to these files to only be released under the
      AGPL license, and I won't be tracking the dual licensing status, so I'm
      simply changing the license statement to say it's AGPL.
      
      (In some cases, others wrote parts of the code of a file and released it
      under the GPL; but in all cases I have contributed a significant portion
      of the code in each file and it's that code that is getting the AGPL
      license; the GPL license of other contributors allows combining with
      AGPL code.)
      40ecf58d
  11. Mar 06, 2019
    • Joey Hess's avatar
      refactor · 12e49066
      Joey Hess authored
      locationLogFileKey had an out of date list of toplevel log files to skip
      over, and was only not broken because the other toplevel log files don't
      look like keys. Fixed that too.
      12e49066
  12. Feb 23, 2019
  13. Feb 21, 2019
  14. Feb 20, 2019
  15. Jan 14, 2019
    • Joey Hess's avatar
      rename key2file and file2key · d3ab5e62
      Joey Hess authored
      What these generate is not really suitable to be used as a filename,
      which is why keyFile and fileKey further escape it. These are just
      serializing Keys.
      
      Also removed a quickcheck test that was very unlikely to test anything
      useful, since it relied on random chance creating something that looks
      like a serialized key. The other test is sufficient for testing what
      that was intended to test anyway.
      d3ab5e62
  16. Sep 05, 2018
    • Joey Hess's avatar
      dropdead per-remote metadata · 0a7c5a99
      Joey Hess authored
      Had to refactor pure code into separate modules so it is accessible
      inside Annex.Branch.Transitions.
      
      This commit was sponsored by Peter on Patreon.
      0a7c5a99
  17. Aug 31, 2018
    • Joey Hess's avatar
      per-remote metadata storage · 5c99f624
      Joey Hess authored
      Actually very straightforward reuse of the metadata log file code.
      Although I had to add a todo item as git-annex forget won't clean up
      dead remote's metadata yet.
      
      This would be worth adding to the external special remote interface
      sometime. Have not opened a todo though, guess I'll wait until something
      needs it.
      
      This commit was supported by the NSF-funded DataLad project.
      5c99f624
  18. Aug 31, 2017
  19. Mar 30, 2017
  20. Jan 30, 2017
    • Joey Hess's avatar
      config: New command for storing configuration in the git-annex branch. · 339464e8
      Joey Hess authored
      Any config names can be set using this; git-annex commands will only look
      at specific ones that make sense and are worth the overhead of querying the
      branch.
      
      This might also be useful for storing whatever other config-type stuff the
      user might want to shove into the git-annex branch.
      
      This commit was sponsored by Jochen Bartl on Patreon.
      339464e8
  21. Jan 20, 2016
  22. Apr 05, 2015
  23. Jan 28, 2015
  24. Jan 27, 2015
  25. Jan 21, 2015
  26. Oct 09, 2014
    • Joey Hess's avatar
      hlint · b61c6bc2
      Joey Hess authored
      b61c6bc2
    • Joey Hess's avatar
      indent with tabs not spaces · 9fd95d90
      Joey Hess authored
      Found these with:
      git grep "^  " $(find -type  f -name \*.hs) |grep -v ':  where'
      
      Unfortunately there is some inline hamlet that cannot use tabs for
      indentation.
      
      Also, Assistant/WebApp/Bootstrap3.hs is a copy of a module and so I'm
      leaving it as-is.
      9fd95d90
    • 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
  27. Jul 24, 2014
    • Joey Hess's avatar
      implement chunk logs · e2c44bf6
      Joey Hess authored
      Slightly tricky as they are not normal UUIDBased logs, but are instead maps
      from (uuid, chunksize) to chunkcount.
      
      This commit was sponsored by Frank Thomas.
      e2c44bf6
  28. 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
  29. 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
  30. 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
  31. Mar 29, 2014
  32. 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
  33. Mar 15, 2014