-- 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
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
isImport :: Remote -> Bool
isImport = importTree . Remote.config
+exportHasAnnexObjects :: Remote -> Bool
+exportHasAnnexObjects = annexObjects . Remote.config
+
isThirdPartyPopulated :: Remote -> Bool
isThirdPartyPopulated = Remote.thirdPartyPopulated . Remote.remotetype
* 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.