aboutsummaryrefslogtreecommitdiff
path: root/doc/git-annex-export.mdwn
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2017-09-06 15:33:40 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2017-09-06 15:44:10 -0400
commit6fcefbdb6629c3e94c41bc05a6b7c224ade99ba0 (patch)
treedba0a4b10efa30c3fe491c5163a2942eda56eb69 /doc/git-annex-export.mdwn
parent9dd2651e8e5efbbf3a9cc59cab3afa1fef7446f2 (diff)
export file renaming
This is seriously super hairy. It has to handle interrupted exports, which may be resumed with the same or a different tree. It also has to recover from export conflicts, which could cause the wrong content to be renamed to a file. I think this works, or is close to working. See the update to the design for how it works. This is definitely not optimal, in that it does more renames than are necessary. It would probably be worth finding the keys that are really renamed and only renaming those. But let's get the "simple" approach to work first.. This commit was supported by the NSF-funded DataLad project.
Diffstat (limited to 'doc/git-annex-export.mdwn')
-rw-r--r--doc/git-annex-export.mdwn19
1 files changed, 19 insertions, 0 deletions
diff --git a/doc/git-annex-export.mdwn b/doc/git-annex-export.mdwn
index c8d8eac9a..e3cbcbd7a 100644
--- a/doc/git-annex-export.mdwn
+++ b/doc/git-annex-export.mdwn
@@ -31,6 +31,25 @@ verification of content downloaded from an export. Some types of keys,
that are not based on checksums, cannot be downloaded from an export.
And, git-annex will never trust an export to retain the content of a key.
+# EXPORT CONFLICTS
+
+If two different git-annex repositories are both exporting different trees
+to the same special remote, it's possible for an export conflict to occur.
+This leaves the special remote with some files from one tree, and some
+files from the other. Files in the special remote may have entirely the
+wrong content as well.
+
+It's not possible for git-annex to detect when making an export will result
+in an export conflict. The best way to avoid export conflicts is to either
+only ever export to a special remote from a single repository, or to have a
+rule about the tree that you export to the special remote. For example, if
+you always export origin/master after pushing to origin, then an export
+conflict can't happen.
+
+An export conflict can only be detected after the two git repositories
+that produced it get back in sync. Then the next time you run `git annex
+export`, it will detect the export conflict, and resolve it.
+
# SEE ALSO
[[git-annex]](1)