diff options
author | erics <erics@web> | 2014-05-04 00:48:56 +0000 |
---|---|---|
committer | admin <admin@branchable.com> | 2014-05-04 00:48:56 +0000 |
commit | 7ac72cf4f1e312e27a54c5e71c0f8f46c4cf6d48 (patch) | |
tree | fb3b6eac17ae41fbc6819a6022c296baf49619fa /doc | |
parent | 1e642c073e49bf1fc3087d05777951e15169da98 (diff) |
Added a comment
Diffstat (limited to 'doc')
-rw-r--r-- | doc/todo/wishlist:___96__git_annex_drop_--relaxed__96__/comment_3_3e830035df580601f038ce3a7003c39d._comment | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/doc/todo/wishlist:___96__git_annex_drop_--relaxed__96__/comment_3_3e830035df580601f038ce3a7003c39d._comment b/doc/todo/wishlist:___96__git_annex_drop_--relaxed__96__/comment_3_3e830035df580601f038ce3a7003c39d._comment new file mode 100644 index 000000000..8b4b132cb --- /dev/null +++ b/doc/todo/wishlist:___96__git_annex_drop_--relaxed__96__/comment_3_3e830035df580601f038ce3a7003c39d._comment @@ -0,0 +1,63 @@ +[[!comment format=mdwn + username="erics" + ip="76.10.136.8" + subject="comment 3" + date="2014-05-04T00:48:55Z" + content=""" +I think things would be simpler if a \"drop --relaxed\" file were to look to +the outside world just like one that was dropped without \"--relaxed\". +In particular, even if a file is dropped with \"--relaxed\": + + - the file's work-tree symlink should be broken synchronously by the + \"drop --relaxed\" command (as opposed to only being broken later, + if and when the file physically goes away) + + - other repos should no longer see the file as available from this repo + +Basically, the idea is to add a third state, but **not** a user-visible one. +Rather, it should be a well hidden implementation detail, which doesn't +affect the conceptual model (very much like git's own distinction between +loose and packed objects). Thus, *logically dropped* would be a +better name than *potentially dropped*. + +Corollaries: + + - A logically (but not physically) dropped file should *not* count towards + satisfying the numcopies limit, i.e. if some other repo has been asked + to drop the file too + + - That in turn means that \"git annex drop --relaxed\" needs to satisfy a + numcopies check at the time the user runs it; it's not enough to only do + the check later, at physical-deletion time. (At that point, there should probably be + a second numcopies check. I don't know whether the model requires it, + but even if not, paranoia is good :-) ) + + - If the user wants to use the file again, they have to \"git annex get\" it + again, just like usual -- but if the file hasn't been physically deleted yet, + the \"get\" will be nearly instantaneous, since the data won't have to be copied + +One possible implementation would be to have \"drop --relaxed\" behave almost identically +to a non-relaxed drop -- do all the same safety checks, bookkeeping, etc. The only +difference would be to have it rename the file at the end, rather +than deleting it outright. (Logically dropped files could stay in their same +directory, but with a distinguishing filename, or they could be moved to a +parallel tree, e.g. *.git/annex/dropped*. I don't have an opinion on that choice; +I've just picked one arbitrarily to keep talking about.) + +\"get\" would simply search .git/annex/dropped before going off to remote +repos, and if the file is found there, would move (not copy) it back into +.git/annex/objects. + +An alternative might be to set some kind of *logically dropped* flag, but +that would probably be a much more intrusive change; a lot of places in the +code would have to check the flag. Doing it as a file rename would make for a much more +localized change; most of git-annex would completely ignore .git/annex/dropped, and just go +about its business as it has always done. + +(It might be tempting to think of (or even implement) .git/annex/dropped as a +very low-cost remote, but that's not accurate; the semantics are different.) + +I'm just starting to experiment with git-annex, so I can only hope that what +I'm saying isn't completely silly... + +"""]] |