summaryrefslogtreecommitdiff
path: root/doc/design/assistant
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2012-12-18 17:16:12 -0400
committerGravatar Joey Hess <joey@kitenet.net>2012-12-18 17:16:12 -0400
commit20ff17f05aa8f0e553d11e5a3ca714009ce80440 (patch)
tree6a0a0d589932ba42292c0a107c9a011e91b504b0 /doc/design/assistant
parentea7dc8c893299331684ac0f68b78e96ad037baef (diff)
blog for the day
Diffstat (limited to 'doc/design/assistant')
-rw-r--r--doc/design/assistant/blog/day_154__direct_mode_merging.mdwn21
1 files changed, 21 insertions, 0 deletions
diff --git a/doc/design/assistant/blog/day_154__direct_mode_merging.mdwn b/doc/design/assistant/blog/day_154__direct_mode_merging.mdwn
new file mode 100644
index 000000000..c3233c36d
--- /dev/null
+++ b/doc/design/assistant/blog/day_154__direct_mode_merging.mdwn
@@ -0,0 +1,21 @@
+Got merging working in direct mode!
+
+Basically works as outlined yesterday, although slightly less clumsily.
+Since there was already code that ran `git diff-tree` to update the
+associated files mappings after a merge, I was able to adapt that same code
+to also update the working tree.
+
+An important invariant for direct mode merges is that they should never
+cause annexed objects to be dropped. So if a file is deleted by a merge,
+and was a direct mode file that was the only place in the working copy
+where an object was stored, the object is moved into `.git/annex/objects`.
+This avoids data loss and any need to re-transfer objects after a merge.
+It also makes renames and other move complex tree manipulations always end
+up with direct mode files, when their content was present.
+
+Automatic merge conflict resoltion doesn't quite work right yet in direct
+mode.
+
+Direct mode has landed in the `master` branch, but I still consider it
+experimental, and of course the assistant still needs to be updated to
+support it.