diff options
author | Joey Hess <joeyh@joeyh.name> | 2017-09-06 17:22:22 -0400 |
---|---|---|
committer | Joey Hess <joeyh@joeyh.name> | 2017-09-06 17:22:22 -0400 |
commit | d928368d8a698abcaa06b4ee17764f5514521ffc (patch) | |
tree | cdf8de4ac8efe2c2fea9560d5eb1dc333141d071 /doc/devblog | |
parent | 2cfd0de2beed2a461b9d38ccd73d31975a588c3c (diff) |
devblog
Diffstat (limited to 'doc/devblog')
-rw-r--r-- | doc/devblog/day_468__export_renames.mdwn | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/doc/devblog/day_468__export_renames.mdwn b/doc/devblog/day_468__export_renames.mdwn new file mode 100644 index 000000000..e40ebac90 --- /dev/null +++ b/doc/devblog/day_468__export_renames.mdwn @@ -0,0 +1,23 @@ +I knew that making `git annex export` handle renames efficiently would take +a whole day somehow. + +Indeed, thinking it over, it is a seriously super hairy thing. Renames can swap +contents between two or more files, and so temp files are needed. It has to +handle cleaning up temp files after interrupted exports, which may be +resumed with the same or a different tree. It also has to recover from +export conflicts, which could cause the wrong content to be renamed to a file. + +I think I've thought through everything and found a way to deal with it all. +Here's how it looks in operation swapping two files: + + git annex export master --to dir + rename bar -> .git-annex-tmp-content-SHA256E-s30--472b01bf6234c98ce03d1386483ae578f6e58033974a1363da2606f9fa0e222a ok + rename foo -> .git-annex-tmp-content-SHA256E-s4--b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c ok + rename .git-annex-tmp-content-SHA256E-s4--b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c -> bar ok + rename .git-annex-tmp-content-SHA256E-s30--472b01bf6234c98ce03d1386483ae578f6e58033974a1363da2606f9fa0e222a -> foo ok + (recording state in git...) + +The export todo list is only getting longer.. But the branch may +be close to being merged. + +Today's work was supported by the NSF-funded DataLad project. |