aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debian/changelog6
-rw-r--r--doc/devblog/day_181__tricky_merge.mdwn8
2 files changed, 9 insertions, 5 deletions
diff --git a/debian/changelog b/debian/changelog
index 64225ea36..4d0b91950 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -3,11 +3,7 @@ git-annex (5.20140607) UNRELEASED; urgency=medium
* Ignore setsid failures.
* Avoid leaving behind .tmp files when failing in some cases, including
importing files to a disk that is full.
- * direct mode: Avoid committing a merge until after the work tree is
- updated. This avoids an interrupted merge leaving the work tree out
- of sync with the last commit, which could result in the wrong thing
- being committed later, and files appearing to get deleted.
- (They could be recovered by reverting the bad commit.)
+ * Avoid bad commits after interrupted direct mode sync (or merge).
-- Joey Hess <joeyh@debian.org> Mon, 09 Jun 2014 14:44:09 -0400
diff --git a/doc/devblog/day_181__tricky_merge.mdwn b/doc/devblog/day_181__tricky_merge.mdwn
new file mode 100644
index 000000000..c6bcaf8d4
--- /dev/null
+++ b/doc/devblog/day_181__tricky_merge.mdwn
@@ -0,0 +1,8 @@
+Spent most of today improving behavior when a sync or merge is
+interrupted in direct mode. It was possible for an interrupt at the wrong
+time to leave the merge committed, but the work tree not yet updated. And
+then the next sync would make a commit that reverted the merged changes!
+
+To fix this I had to avoid making any merge commit or indeed updating the
+index until after the work tree is updated. It looked intractable for a
+while; I'm still surprised I eventually succeeded.