afe72d04ff
Upgrade other repos than the current one by running git-annex upgrade inside them, which avoids problems with upgrade code making assumptions that the cwd will be inside the repo being upgraded. In particular, this fixes a problem where upgrading a v7 repo to v8 caused an ugly git error message. I actually could not find a way to make Upgrade.V7 work properly without changing directory to the remote. Once I got git ls-files to work, the git cat-file failed because :path can only be used in the current git repo.
39 lines
1.6 KiB
Markdown
39 lines
1.6 KiB
Markdown
When a local clone was at v7 and gets upgraded to v8 by a command run in
|
|
a repo that has it as a remote, this is displayed:
|
|
|
|
"fatal: ../path/to/clone is outside repository"
|
|
|
|
This happens because git ls-files is run to list the files of the clone.
|
|
But, it has some strange behavior when relative paths are used. Result is
|
|
it always fails.
|
|
|
|
This also causes the keys database of the clone to not get
|
|
repopulated after being deleted for the upgrade.
|
|
That's not a fatal problem because git-annex is always prepared for the
|
|
keys database being out of date, but it could result in considerably more
|
|
work being done later.
|
|
|
|
Also, the associated files does not get repopulated when it fails like
|
|
that. That could cause worse problems. I have not tried to see what happens
|
|
when the repo that fails to be upgraded has unlocked files.
|
|
|
|
I also found some v1 upgrade code that does the same thing, and presumably
|
|
also has the problem, although there are probably no v1 repos left.
|
|
This seems like it could be a larger problem that only upgrades, but
|
|
luckily upgrades seem like the only time that git-annex, running in one
|
|
repo, needs to do anything involving listing the files in the working tree
|
|
of a remote.
|
|
|
|
Hmm, Upgrade.V5 also has a LsFiles.stagedDetails
|
|
that looks like it would have then problem. That would affect upgrading
|
|
from a V5 direct mode repo to V6.
|
|
|
|
--[[Joey]
|
|
|
|
> Fixed all such upgrade bugs by changing how local remotes are upgraded,
|
|
> running git-annex upgrade inside the remote.
|
|
>
|
|
> Also, guarded all git ls-files calls with a check that it's not being
|
|
> run on a local remote, just in case there are other such bugs.
|
|
>
|
|
> [[done]] --[[Joey]]
|