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 -- importing only downloads new files not
-- old files) -- old files)
let shouldsynccontent r let shouldsynccontent r
| isExport r && not (isImport r) = False | isExport r && not (isImport r)
&& not (exportHasAnnexObjects r) = False
| otherwise = True | otherwise = True
syncedcontent <- withbranch $ syncedcontent <- withbranch $
seekSyncContent o seekSyncContent o
@ -944,7 +945,8 @@ syncFile o ebloom rs af k = do
wantput r wantput r
| pushOption o == False && operationMode o /= SatisfyMode = return False | pushOption o == False && operationMode o /= SatisfyMode = return False
| Remote.readonly r || remoteAnnexReadOnly (Remote.gitconfig r) = 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 | isThirdPartyPopulated r = return False
| otherwise = wantGetBy True (Just k) af (Remote.uuid r) | otherwise = wantGetBy True (Just k) af (Remote.uuid r)
handleput lack inhere handleput lack inhere
@ -1147,6 +1149,9 @@ isExport = exportTree . Remote.config
isImport :: Remote -> Bool isImport :: Remote -> Bool
isImport = importTree . Remote.config isImport = importTree . Remote.config
exportHasAnnexObjects :: Remote -> Bool
exportHasAnnexObjects = annexObjects . Remote.config
isThirdPartyPopulated :: Remote -> Bool isThirdPartyPopulated :: Remote -> Bool
isThirdPartyPopulated = Remote.thirdPartyPopulated . Remote.remotetype 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 * Working on `exportreeplus` branch which is groundwork for proxying to
exporttree=yes special remotes. 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 * `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 get and put keys that are not in the exported tree to the annexobjects
location. location.