summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2012-12-10 14:47:11 -0400
committerGravatar Joey Hess <joey@kitenet.net>2012-12-10 14:47:11 -0400
commit469c76acddcd972da018542e7791a74c5a40c935 (patch)
tree57dce34e40c2d6bfdb90350abf6db773d883be66
parent35b05c4cfc9a3c86a7f3b0550d93f52f3ec6e28b (diff)
update list of things TODO to make git annex sync work in direct mode
-rw-r--r--doc/design/assistant/desymlink.mdwn14
1 files changed, 14 insertions, 0 deletions
diff --git a/doc/design/assistant/desymlink.mdwn b/doc/design/assistant/desymlink.mdwn
index ced1e1587..598f15535 100644
--- a/doc/design/assistant/desymlink.mdwn
+++ b/doc/design/assistant/desymlink.mdwn
@@ -79,3 +79,17 @@ is converted to a real file when it becomes present.
* Deal with files changing as they're being transferred from a direct mode
repository to another git repository. The remote repo currently will
accept the bad data and update the location log to say it has the key.
+* `git annex sync` updates the key to files mappings for files changed,
+ but needs much other work to handle direct mode:
+ * Generate git commit, without running `git commit`, because it will
+ want to stage the full files.
+ * Update location logs for any files deleted by a commit.
+ * Generate a git merge, without running `git merge` (or possibly running
+ it in a scratch repo?), because it will stumble over the direct files.
+ * Drop contents of files deleted by a merge (including updating the
+ location log), or if we cannot drop,
+ move their contents to `.git/annex/objects/`.
+ * When a merge adds a symlink pointing at a key that is present in the
+ repo, replace the symlink with the direct file (either moving out
+ of `.git/annex/objects/` or hard-linking if the same key is present
+ elsewhere in the tree.