comment
This commit is contained in:
parent
190a538c0b
commit
528882a6df
1 changed files with 121 additions and 0 deletions
|
@ -0,0 +1,121 @@
|
|||
[[!comment format=mdwn
|
||||
username="joey"
|
||||
subject="""comment 12"""
|
||||
date="2023-06-05T16:28:05Z"
|
||||
content="""
|
||||
That is a significant move of the goal posts. I don't know if that even
|
||||
involves importtree being slow anymore.
|
||||
|
||||
You've apparently got a lot of stuff going on in the directories used by
|
||||
that script, NTFS, acrypt, some kind of removable drive, ...?
|
||||
|
||||
I tried to adapt the script to a simple test case that I can run, but had
|
||||
to leave all that stuff out, since I don't know anything about it. The
|
||||
script I ran is below.
|
||||
|
||||
I ran it with 10000 files, and the timings of the syncs were:
|
||||
|
||||
1. 0m0.154s
|
||||
2. 2m5.719s
|
||||
3. 0m3.088s
|
||||
4. 0m15.240s
|
||||
5. 0m34.297s
|
||||
6. 0m1.244s
|
||||
7. 2m7.648s
|
||||
8. 0m35.378s
|
||||
|
||||
So I have not reproduced the (new) problem, #5 and #8 are not slow.
|
||||
|
||||
Your 5th sync taking a long time is particularly strange because the only
|
||||
difference between it and the 4th sync is that `git annex wanted` is
|
||||
configured. But, `git-annex sync` does not do anything with that
|
||||
configuration unless it is syncing content. That made me think you might
|
||||
have annex.synccontent set in gitconfig globally. It seems to me that would
|
||||
also make the 3rd sync slow, but I suppose you could have a complex git
|
||||
config that sets it for some repos but not other ones or something like
|
||||
that.
|
||||
|
||||
Otherwise I'm out of ideas about how to reproduce your problem.
|
||||
|
||||
I'll reiterate that it would be helpful to see the last output of the sync
|
||||
command before it does whatever is being slow.
|
||||
|
||||
-----
|
||||
|
||||
#!/bin/bash
|
||||
|
||||
set -euo pipefail
|
||||
set -x
|
||||
|
||||
NFILES=$1
|
||||
|
||||
REPO=repo
|
||||
DRIVE=drive
|
||||
REPOBASE=`pwd`/bench/repo
|
||||
DRIVEBASE=`pwd`/bench/drive
|
||||
SRBASE=`pwd`/bench/sr
|
||||
|
||||
mkdir -p $REPOBASE
|
||||
mkdir -p $SRBASE/$REPO
|
||||
perl -e 'for(1..'$NFILES') { open(OUT,">", "'$SRBASE/$REPO'/f$_"); print OUT $_; close OUT }'
|
||||
|
||||
set -x
|
||||
cd $REPOBASE
|
||||
mkdir $REPO
|
||||
cd $REPO
|
||||
git init
|
||||
git config annex.thin true
|
||||
git annex init 'local hub'
|
||||
# use newer belowgit annex wanted . "include=mtree exclude=$REPO/*"
|
||||
git annex wanted . "include=* and exclude=$REPO/*"
|
||||
|
||||
# Now initialize things.
|
||||
touch mtree
|
||||
git annex add mtree
|
||||
time git annex sync
|
||||
git annex adjust --unlock-present
|
||||
|
||||
git annex initremote source type=directory directory=$SRBASE/$REPO importtree=yes encryption=none
|
||||
|
||||
git annex enableremote source directory=$SRBASE/$REPO
|
||||
git config remote.source.annex-readonly true
|
||||
git config remote.source.annex-tracking-branch master:$REPO # (says to put the files in the "$REPO" directory)
|
||||
git config annex.securehashesonly true
|
||||
git config annex.genmetadata true
|
||||
git config annex.diskreserve 100M
|
||||
|
||||
time git annex sync
|
||||
|
||||
# Now set up the clone
|
||||
|
||||
mkdir -p $DRIVEBASE/$DRIVE/git-annex
|
||||
cd $DRIVEBASE/$DRIVE/git-annex
|
||||
git clone $REPOBASE/$REPO
|
||||
cd $REPO
|
||||
git config annex.thin true
|
||||
git annex init "alexandria:Goerzen3"
|
||||
git annex adjust --unlock # NTFS doesn't like symlinks
|
||||
time git annex sync
|
||||
|
||||
cd $REPOBASE/$REPO
|
||||
git remote add $DRIVE $DRIVEBASE/$DRIVE/git-annex/$REPO
|
||||
time git annex sync $DRIVE
|
||||
git annex group $DRIVE archivedrive
|
||||
git annex wanted $DRIVE 'include=mtree* or standard' # 'standard and include=mtree*'
|
||||
time git annex sync
|
||||
|
||||
cd $DRIVEBASE/$DRIVE/git-annex/$REPO
|
||||
time git annex sync
|
||||
git annex enableremote source directory=$SRBASE/$REPO
|
||||
git config remote.source.annex-readonly true
|
||||
git config remote.source.annex-tracking-branch master:$REPO # (says to put the files in the "$REPO" directory)
|
||||
git config annex.securehashesonly true
|
||||
git config annex.genmetadata true
|
||||
git config annex.diskreserve 100M
|
||||
|
||||
time git annex sync --content
|
||||
git annex get --auto
|
||||
|
||||
cd $REPOBASE/$REPO
|
||||
time git annex sync
|
||||
"""]]
|
Loading…
Reference in a new issue