Commit graph

36048 commits

Author SHA1 Message Date
Joey Hess
3361edfb61
todo for bs branch 2019-11-26 16:11:55 -04:00
Joey Hess
067aabdd48
wip RawFilePath 2x git-annex find speedup
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.
2019-11-26 16:01:58 -04:00
linnearight02@915958f850452a19de84ec14a765402d1f7ecdb0
41458cd060 Added a comment: Online Coursework Service 2019-11-26 11:11:07 +00:00
Joey Hess
6a97ff6b3a
wip RawFilePath
Goal is to make git-annex faster by using ByteString for all the
worktree traversal. For now, this is focusing on Command.Find,
in order to benchmark how much it helps. (All other commands are
temporarily disabled)

Currently in a very bad unbuildable in-between state.
2019-11-25 16:18:19 -04:00
Ilya_Shlyakhter
dd58cfd8e1 Added a comment: use named pipes? 2019-11-25 16:45:27 +00:00
yarikoptic
70172712a5 initial idea on joint "get+checksum" 2019-11-25 03:26:23 +00:00
Ilya_Shlyakhter
1f035c0d66 Added a comment: even git mv -f seems to work correctly 2019-11-24 17:25:32 +00:00
Ilya_Shlyakhter
20da59f62f Added a comment: moving unlocked file onto locked file isn't possible 2019-11-24 16:36:24 +00:00
Joey Hess
1ff889e456
explict export lists
A small amount of dead code removed.

All of Utility/ done now.

This commit was sponsored by Brock Spratlen on Patreon.
2019-11-23 11:24:10 -04:00
Joey Hess
960f62a564
typo 2019-11-22 19:48:34 -04:00
Joey Hess
4cc6985494
todo 2019-11-22 19:47:53 -04:00
Joey Hess
6e3bccd4ac
updated profiling 2019-11-22 19:13:35 -04:00
Joey Hess
ddf6973d22
minor optimisation
avoid repeated scan of the same bytestring
2019-11-22 19:13:05 -04:00
Joey Hess
61af9d8f63
Merge /home/joey/tmp/git-annex 2019-11-22 17:51:40 -04:00
Joey Hess
81d402216d cache the serialization of a Key
This will speed up the common case where a Key is deserialized from
disk, but is then serialized to build eg, the path to the annex object.

Previously attempted in 4536c93bb2
and reverted in 96aba8eff7.
The problems mentioned in the latter commit are addressed now:

Read/Show of KeyData is backwards-compatible with Read/Show of Key from before
this change, so Types.Distribution will keep working.

The Eq instance is fixed.

Also, Key has smart constructors, avoiding needing to remember to update
the cached serialization.

Used git-annex benchmark:
  find is 7% faster
  whereis is 3% faster
  get when all files are already present is 5% faster
Generally, the benchmarks are running 0.1 seconds faster per 2000 files,
on a ram disk in my laptop.
2019-11-22 17:49:16 -04:00
Joey Hess
0e8c8edc90
improve hints about squelching output 2019-11-22 17:26:13 -04:00
Yaroslav Halchenko
e296637737
(Build-)depend on git >= 2.22 to avoid memory leaked git being bundled or used
Note from Joey:
  git-annex still supports git 2.1, but operates in a degraded fashion.
  It would be better for backports of the debian package to also
  backport a newer git. This dependency is mostly expressing that,
  also that any users who might upgrade git-annex should also upgrade
  git.

  Also worth noting that the i386ancient autobuilder has git 2.1 on it
  (best I have been able to manage there), but luckily the epoch is
  bumped to 2, so the dependencies will still be satisfied.
2019-11-22 13:56:18 -04:00
Joey Hess
1d0dbdf201
squelch tab warnings 2019-11-22 12:49:41 -04:00
Joey Hess
b82ab21468
missed an export 2019-11-22 12:35:57 -04:00
Joey Hess
93789cbf40
close as dup 2019-11-22 12:11:04 -04:00
Joey Hess
cf2e23d39c
close not viable 2019-11-22 12:10:59 -04:00
Joey Hess
92e1bb250b
simplify the name of the test cases 2019-11-21 17:38:58 -04:00
Joey Hess
a9888f6151
Windows: Fix handling of changes to time zone.
Used to work but was broken in version 7.20181031, specifically commit
5ab0f48ffb.

That this was not noticed over at least 1 daylight savings time zone
changes makes me wonder if the TSDelta stuff is still needed.
Perhaps the mtime on Windows no longer changes when the time zone is changed?

(cherry picked from commit 09ee6b0ccb)
2019-11-21 17:28:18 -04:00
Joey Hess
25ba8156bc
improve benchmark --databases
* benchmark: Changed --databases to take a parameter specifiying the size
  of the database to benchmark.
* benchmark --databases: Display size of the populated database.
* benchmark --databases: Improve the "addAssociatedFile to (new)"
  benchmark to really add new values, not overwriting old values.
2019-11-21 17:25:20 -04:00
Joey Hess
8ea5f3ff99
explict export lists
Eliminated some dead code. In other cases, exported a currently unused
function, since it was a logical part of the API.

Of course this improves the API documentation. It may also sometimes
let ghc optimize code better, since it can know a function is internal
to a module.

364 modules still to go, according to
git grep -E 'module [A-Za-z.]+ where'
2019-11-21 16:08:37 -04:00
Joey Hess
740e0ddbfe
avoid running scanUnlockedFiles in bare repo
It's not necessary. And if the bare repo somehow has a pointer
file in it with the same name as a file in HEAD, that file would be
populated, which would be surprising since the file is not really under
git's control.
2019-11-21 14:31:12 -04:00
xwvvvvwx
f39e5a4219 Added a comment 2019-11-21 17:32:31 +00:00
Joey Hess
c1d88305d7
Merge branch 'master' of ssh://git-annex.branchable.com 2019-11-21 13:31:47 -04:00
Joey Hess
43f19ef00a
Fix bug that made bare repos be treated as non-bare when --git-dir was used.
Eg:

git clone url --bare r
git --git-dir r annex init

This resulted in worktree = Just "." and so several things that check
worktree to determine when the repo is bare ran code paths intended for
non-bare. One such code path[1] ran git checkout with --worktree=. which
actually makes it ignore core.bare config, and so the current directory
got populated with a checkout of the master branch in this example. There
was probably also other breakage.

The fix is a bit complicated because whether the repo is bare is not
known until after Git.Config reads the config, but Git.Config handles
setting the RepoLocations's worktree when core.worktree is set. So have
to assume the worktree is the cwd, let core.worktree override that,
and then if the repo turns out to be bare, it's set back to Nothing.
(And then GIT_WORK_TREE can still override all of that.)

[1] switchHEADBack, which runs even when the clone is not from a bare repo.
2019-11-21 13:26:02 -04:00
git-annex@17927e6dc041ab425c14217a97a685adf3ecf44f
d5ef7fec71 removed 2019-11-20 20:11:17 +00:00
git-annex@17927e6dc041ab425c14217a97a685adf3ecf44f
1f0b0fba0f Added a comment: git add or git commit does not trigger assistant, but git rm does 2019-11-20 01:37:42 +00:00
git-annex@17927e6dc041ab425c14217a97a685adf3ecf44f
96008092eb Added a comment: git add or git commit does not trigger assistant, but git rm does 2019-11-20 01:37:16 +00:00
Joey Hess
64e21f683c
Merge branch 'master' of ssh://git-annex.branchable.com 2019-11-19 14:13:22 -04:00
Joey Hess
c0117044ae
todo 2019-11-19 14:13:01 -04:00
Ilya_Shlyakhter
3e4b5d2d93 Added a comment: using hardlinks 2019-11-19 17:51:08 +00:00
Ilya_Shlyakhter
0822ee52dd Added a comment: import/export 2019-11-19 17:39:47 +00:00
Joey Hess
6f35b576d7
encourage use of import from directory special remote rather than legacy interface 2019-11-19 13:30:27 -04:00
Joey Hess
c8355a7416
Merge branch 'master' of ssh://git-annex.branchable.com 2019-11-19 13:20:31 -04:00
Joey Hess
3b64e35694
comments 2019-11-19 13:19:45 -04:00
git-annex@17927e6dc041ab425c14217a97a685adf3ecf44f
c1eee5f259 Added a comment 2019-11-19 17:18:18 +00:00
Joey Hess
24c69a3c1f
comment 2019-11-19 13:14:56 -04:00
Joey Hess
581eb7a3de
comments 2019-11-19 13:07:54 -04:00
Joey Hess
c2466a7612
Revert malicious removal of index page
This reverts commit 748a228ee7.
2019-11-19 12:36:48 -04:00
Joey Hess
6d04ba4efc
Merge branch 'master' of ssh://git-annex.branchable.com 2019-11-18 17:25:40 -04:00
satya.ortiz-gagne@a4c92de91eb4fd5ae8fc9893bb4fd674a19f2e59
d5feb4385a Added a comment: Re: using hardlinks 2019-11-18 20:46:22 +00:00
Joey Hess
49cf86cfc0
Merge branch 'master' of ssh://git-annex.branchable.com 2019-11-18 16:27:17 -04:00
Joey Hess
9b48620425
devblog 2019-11-18 16:27:06 -04:00
Joey Hess
b207d944f3
sync, assistant: Pull and push from git-lfs remotes.
Oversight, forgot to add it to gitSyncableRemote
2019-11-18 16:13:21 -04:00
Joey Hess
5877de5e80
git-lfs: remember urls, and autoenable remotes using known urls
* git-lfs: The url provided to initremote/enableremote will now be
  stored in the git-annex branch, allowing enableremote to be used without
  an url. initremote --sameas can be used to add additional urls.
* git-lfs: When there's a git remote with an url that's known to be
  used for git-lfs, automatically enable the special remote.
2019-11-18 16:09:09 -04:00
Ilya_Shlyakhter
a884629e84 Added a comment: using hardlinks 2019-11-18 19:21:18 +00:00