summaryrefslogtreecommitdiff
path: root/doc/design/assistant/desymlink.mdwn
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2012-12-10 14:47:30 -0400
committerGravatar Joey Hess <joey@kitenet.net>2012-12-10 14:47:30 -0400
commitd66a0265a239b52a0f82dbf648f6dfccfe2eed9c (patch)
treea61926b9685eccb75cd515c4e216c6dc0874a377 /doc/design/assistant/desymlink.mdwn
parent9072a2a8370559cd03824fba62aefd9228a7e497 (diff)
parent469c76acddcd972da018542e7791a74c5a40c935 (diff)
Merge branch 'master' into desymlink
Diffstat (limited to 'doc/design/assistant/desymlink.mdwn')
-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 d113847e6..7e62d5fc9 100644
--- a/doc/design/assistant/desymlink.mdwn
+++ b/doc/design/assistant/desymlink.mdwn
@@ -86,3 +86,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.