sync --content with annexobjects=true exporttree remotes

This commit is contained in:
Joey Hess 2024-08-03 11:39:23 -04:00
parent 9497bf7fdb
commit a4a06404d4
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
2 changed files with 16 additions and 2 deletions

View file

@ -315,7 +315,8 @@ seek' o = startConcurrency transferStages $ do
-- importing only downloads new files not
-- old files)
let shouldsynccontent r
| isExport r && not (isImport r) = False
| isExport r && not (isImport r)
&& not (exportHasAnnexObjects r) = False
| otherwise = True
syncedcontent <- withbranch $
seekSyncContent o
@ -944,7 +945,8 @@ syncFile o ebloom rs af k = do
wantput r
| pushOption o == False && operationMode o /= SatisfyMode = return False
| Remote.readonly r || remoteAnnexReadOnly (Remote.gitconfig r) = return False
| isExport r || isImport r = return False
| isImport r && not (isExport r) = return False
| isExport r && not (exportHasAnnexObjects r) = return False
| isThirdPartyPopulated r = return False
| otherwise = wantGetBy True (Just k) af (Remote.uuid r)
handleput lack inhere
@ -1147,6 +1149,9 @@ isExport = exportTree . Remote.config
isImport :: Remote -> Bool
isImport = importTree . Remote.config
exportHasAnnexObjects :: Remote -> Bool
exportHasAnnexObjects = annexObjects . Remote.config
isThirdPartyPopulated :: Remote -> Bool
isThirdPartyPopulated = Remote.thirdPartyPopulated . Remote.remotetype

View file

@ -33,6 +33,15 @@ Planned schedule of work:
* Working on `exportreeplus` branch which is groundwork for proxying to
exporttree=yes special remotes.
* `git-annex sync` with an annexobjects=true special remote, when exporting
a subdir that contained a file, which has now been moved out of the
subdir, first unexports the file, and then re-uploads it to the remote.
This could be avoided if when unexporting, it moves to the annex objects
location.
(Might be worth doing that by default, this would let annexobjects=true
special remotes not be untrusted.)
* `git-annex sync --content` to an annexobjects=true special remote should
get and put keys that are not in the exported tree to the annexobjects
location.