close todo
This commit is contained in:
parent
cdd512cd9f
commit
e8065ee99d
6 changed files with 97 additions and 0 deletions
|
@ -8,6 +8,13 @@ git-annex (8.20210224) UNRELEASED; urgency=medium
|
||||||
* Fixed handling of --mimetype or --mimeencoding combined with
|
* Fixed handling of --mimetype or --mimeencoding combined with
|
||||||
options like --all or --unused.
|
options like --all or --unused.
|
||||||
* Fix handling of --branch combined with --unlocked or --locked.
|
* Fix handling of --branch combined with --unlocked or --locked.
|
||||||
|
* When non-annexed files in a tree are exported to a special remote,
|
||||||
|
importing from the special remote keeps the files non-annexed,
|
||||||
|
as long as their content has not changed, rather than converting
|
||||||
|
them to annexed files.
|
||||||
|
(Such a conversion will still happen when importing from a remote
|
||||||
|
an old git-annex exported such a tree to before; export the tree
|
||||||
|
with the new git-annex before importing to avoid that.)
|
||||||
|
|
||||||
-- Joey Hess <id@joeyh.name> Wed, 24 Feb 2021 13:18:38 -0400
|
-- Joey Hess <id@joeyh.name> Wed, 24 Feb 2021 13:18:38 -0400
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="joey"
|
||||||
|
subject="""comment 2"""
|
||||||
|
date="2021-03-05T18:35:54Z"
|
||||||
|
content="""
|
||||||
|
This bug has been fixed.
|
||||||
|
|
||||||
|
And next time you have a problem so blatent with a test case and
|
||||||
|
everything, it's certianly a bug, so don't be afraid to file a bug report
|
||||||
|
rather than using the forum. It's harder to close forum posts than
|
||||||
|
bug reports!
|
||||||
|
"""]]
|
|
@ -11,3 +11,5 @@ The importer could check for each file, if there's a corresponding file in
|
||||||
the branch it's generating the import for, if that file is annexed.
|
the branch it's generating the import for, if that file is annexed.
|
||||||
This corresponds to how git-annex add (and the smudge filter) handles these
|
This corresponds to how git-annex add (and the smudge filter) handles these
|
||||||
files. But this might be slow when importing a large tree of files.
|
files. But this might be slow when importing a large tree of files.
|
||||||
|
|
||||||
|
> [[fixed|done]] --[[Joey]]
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="joey"
|
||||||
|
subject="""comment 2"""
|
||||||
|
date="2021-03-05T16:42:03Z"
|
||||||
|
content="""
|
||||||
|
> The importer could check for each file, if there's a corresponding file in the branch it's generating the import for, if that file is annexed.
|
||||||
|
|
||||||
|
Should it check the branch it's generating the import for though?
|
||||||
|
If the non-annexed file is "foo" and master is exported, then in master
|
||||||
|
that file is renamed to "bar", the import should not look at the new master
|
||||||
|
to see if the "foo" from the remote should be annexed. The correct tree
|
||||||
|
to consult would be the tree that was exported to the remote last.
|
||||||
|
|
||||||
|
It seems reasonable to look at the file in that exported tree to see it was
|
||||||
|
non-annexed before, and if the ContentIdentifier is the same as what
|
||||||
|
was exported before, keep it non-annexed on import. If the ContentIdentifier
|
||||||
|
has changed, apply annex.largefiles to decide whether or not to annex it.
|
||||||
|
|
||||||
|
The export database stores information about that tree already,
|
||||||
|
but it does not keep track of whether a file was exported annexed or not.
|
||||||
|
So changing the database to include an indication of that, and using it
|
||||||
|
when importing, seems like a way to solve this problem, and without slowing
|
||||||
|
things down much.
|
||||||
|
|
||||||
|
*Alternatively* the GitKey that git-annex uses for these files when
|
||||||
|
exporting is represented as a SHA1 key with no size field. That's unusual;
|
||||||
|
nothing else creates such a key usually. (Although some advanced users may
|
||||||
|
for some reason.) Just treating such keys as non-annexed files when
|
||||||
|
importing would be at least a bandaid if not a real fix.
|
||||||
|
"""]]
|
|
@ -0,0 +1,14 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="joey"
|
||||||
|
subject="""comment 3"""
|
||||||
|
date="2021-03-05T17:31:32Z"
|
||||||
|
content="""
|
||||||
|
Wait... The import code has a separate "GIT" key type that it uses
|
||||||
|
internally once it's decided a file should be non-annexed. Currently
|
||||||
|
that never hits disk. Using that rather than a SHA1 key for the export
|
||||||
|
database could be a solution.
|
||||||
|
|
||||||
|
(Using that rather than "SHA1" for the keys would also avoid
|
||||||
|
the problem that the current GitKey hardcods an assumption
|
||||||
|
that git uses sha1..)
|
||||||
|
"""]]
|
|
@ -0,0 +1,32 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="joey"
|
||||||
|
subject="""comment 4"""
|
||||||
|
date="2021-03-05T17:44:54Z"
|
||||||
|
content="""
|
||||||
|
In fact, a very simple patch that just makes a GitKey generate a
|
||||||
|
"GIT" key seems to have solved this problem! Files that were non-annexed
|
||||||
|
on export remain so on import, until they're changed, and then
|
||||||
|
annex.largefiles controls what happens.
|
||||||
|
|
||||||
|
Once non-annexed files have been exported using the new version, they'll
|
||||||
|
stay non-annexed on import. Even when an old version of git-annex is doing
|
||||||
|
the importing!
|
||||||
|
|
||||||
|
When an old annex had exported, and a new one imports, what happens is
|
||||||
|
the file gets imported as an annexed file. Exporting first with the new
|
||||||
|
version avoids that unwanted conversion.
|
||||||
|
|
||||||
|
Interestingly though, the annexed file when that conversion happens does
|
||||||
|
not use the SHA1 key from git, so its content can be retrieved. I'm not
|
||||||
|
quite sure how that problem was avoided in this case but something avoided
|
||||||
|
the worst behavior.
|
||||||
|
|
||||||
|
It would be possible to special case the handling of SHA1 keys without a
|
||||||
|
size to make importing from an old export not do the conversion. But that
|
||||||
|
risks breakage for some user who is generating their own SHA1 keys and not
|
||||||
|
including a size in them. Or for some external special remote that supports
|
||||||
|
IMPORTKEY and generates SHA1 keys without a size. It seems better to avoid
|
||||||
|
that potential breakage of unrelated things, and keep the upgrade process
|
||||||
|
somewhat complicated when non-annexed files were exported before, than it
|
||||||
|
does to streamline the upgrade.
|
||||||
|
"""]]
|
Loading…
Add table
Reference in a new issue