git-annex/doc
Joey Hess b6b34f4916
automatic conflict resolution for v6 unlocked files
Several tricky parts:

* When the conflict is just between the same key being locked and unlocked,
  the unlocked version wins, and the file is not renamed in this case.

* Need to update associated file map when conflict resolution renames
  an unlocked file.

* git merge runs the smudge filter on the conflicting file, and actually
  overwrites the file with the same content it had before, and so
  invalidates its inode cache. This makes it difficult to know when it's
  safe to remove such files as conflict cruft, without going so far as to
  compare their entire contents.

  Dealt with this by preventing the smudge filter from populating the file
  when a merge is run. However, that also prevents the smudge filter being
  run for non-conflicting files, so eg moving a file won't put its new
  content into place.

* Ideally, if a merge or a merge conflict resolution renames an unlocked
  file, the file in the work tree can just be moved, rather than copying
  the content to a new worktree file.

  This is attempted to be done in merge conflict resolution, but
  due to git merge's behavior of running smudge filters, what actually
  seems to happen is the old worktree file with the content is deleted and
  rewritten as a pointer file, so doesn't get reused.

So, this is probably not as efficient as it optimally could be.
If that becomes a problem, could look into running the merge in a separate
worktree and updating the real worktree more efficiently, similarly to the
direct mode merge. However, the direct mode merge had a lot of bugs, and
I'd rather not use that more error-prone method unless really needed.
2015-12-29 15:41:09 -04:00
..
Android
android
assistant Added a comment: @niklaas 2015-08-17 13:42:26 +00:00
automatic_conflict_resolution
backends
bare_repositories
bugs 2015-12-27 09:15:43 +00:00
coding_style response 2015-09-29 11:26:42 -04:00
contact
copies
design update for v6 unlocked files 2015-12-26 14:59:06 -04:00
devblog devblog 2015-12-27 17:18:18 -04:00
direct_mode
download sigh @ encfs... 2015-11-30 15:22:00 -04:00
ekg
encryption response 2015-09-17 13:03:19 -04:00
footer
forum removed 2015-12-27 22:50:45 +00:00
future_proofing
git-annex-copy
git-annex-direct
how_it_works
install link to neurodebian standalone deb 2015-12-22 12:34:28 -04:00
internals
license
links
metadata
news add news item for git-annex 5.20151218 2015-12-18 14:48:04 -04:00
not
polls
preferred_content
required_content
scalability
special_remotes comment 2015-12-10 11:22:28 -04:00
stickers Added a comment 2015-11-20 08:37:39 +00:00
sync
templates add copy of note.mdwn, since Makefile's ikiwiki invocation omits the basewiki 2015-12-26 16:40:11 -04:00
testimonials
tips cleanup 2015-12-27 17:27:52 -04:00
todo automatic conflict resolution for v6 unlocked files 2015-12-29 15:41:09 -04:00
trust
tuning
upgrades
use_case
users I'm feeling.. typoish 2015-11-10 17:00:06 -04:00
videos
walkthrough update walkthrough and add tip about using v6 unlocked files 2015-12-26 16:47:23 -04:00
Android.mdwn
assistant.mdwn
automatic_conflict_resolution.mdwn
backends.mdwn backends.mdwn: Typo fix, 'SHA_512E' → 'SHA3_512E' 2015-08-13 04:19:11 +02:00
bare_repositories.mdwn
bugs.mdwn set postformtext to perhaps make it clearer that this form at the top of the page is where one reports a new bug 2015-08-02 19:20:55 -04:00
builds.mdwn add i386-ancient build 2015-09-23 13:36:45 -04:00
chunking.mdwn
coding_style.mdwn m 2015-12-05 19:52:38 +00:00
comments.mdwn
contact.mdwn
contribute.mdwn
copies.mdwn
design.mdwn
devblog.mdwn
direct_mode.mdwn don't let git-annex direct be run in a v6 repo 2015-12-04 16:33:09 -04:00
distributed_version_control.mdwn
download.mdwn
ekg.mdwn
encryption.mdwn
favicon.ico
forum.mdwn
future_proofing.mdwn
git-annex-add.mdwn doc update 2015-12-15 14:17:34 -04:00
git-annex-addunused.mdwn
git-annex-addurl.mdwn addurl: Added --with-files option. 2015-12-22 12:20:39 -04:00
git-annex-assistant.mdwn meant to be in prev commit 2015-11-02 11:22:02 -04:00
git-annex-checkpresentkey.mdwn
git-annex-contentlocation.mdwn
git-annex-copy.mdwn
git-annex-dead.mdwn
git-annex-describe.mdwn
git-annex-diffdriver.mdwn
git-annex-direct.mdwn don't let git-annex direct be run in a v6 repo 2015-12-04 16:33:09 -04:00
git-annex-drop.mdwn drop -Jn 2015-11-04 17:13:20 -04:00
git-annex-dropkey.mdwn
git-annex-dropunused.mdwn
git-annex-edit.mdwn
git-annex-enableremote.mdwn enableremote: List uuids and descriptions of remotes that can be enabled, and accept either the uuid or the description in leu if the name. 2015-10-26 14:55:40 -04:00
git-annex-examinekey.mdwn
git-annex-expire.mdwn
git-annex-find.mdwn
git-annex-findref.mdwn
git-annex-fix.mdwn annex.thin 2015-12-27 15:59:59 -04:00
git-annex-forget.mdwn
git-annex-fromkey.mdwn
git-annex-fsck.mdwn parallel fsck (yes, these changes are all it takes now!) 2015-11-04 16:28:14 -04:00
git-annex-fuzztest.mdwn
git-annex-get.mdwn
git-annex-group.mdwn
git-annex-groupwanted.mdwn
git-annex-import.mdwn work around git check-ignore --batch bad exit status bug, and bring back import -J 2015-11-06 15:39:51 -04:00
git-annex-importfeed.mdwn doc/*.mdwn: Minor fixes (typos, letter case) 2015-07-26 04:21:06 +02:00
git-annex-indirect.mdwn don't let git-annex direct be run in a v6 repo 2015-12-04 16:33:09 -04:00
git-annex-info.mdwn
git-annex-init.mdwn Use git-annex init --version=6 to get v6 for now 2015-12-15 17:17:13 -04:00
git-annex-initremote.mdwn Special remotes configured with autoenable=true will be automatically enabled when git-annex init is run. 2015-09-14 14:49:48 -04:00
git-annex-list.mdwn
git-annex-lock.mdwn v6 git-annex unlock 2015-12-10 16:12:48 -04:00
git-annex-log.mdwn
git-annex-lookupkey.mdwn
git-annex-map.mdwn
git-annex-matching-options.mdwn
git-annex-merge.mdwn
git-annex-metadata.mdwn
git-annex-migrate.mdwn
git-annex-mirror.mdwn
git-annex-move.mdwn
git-annex-numcopies.mdwn
git-annex-pre-commit.mdwn avoid pre-commit hook messing up new-style unlocked files in v6 repo 2015-12-09 15:18:54 -04:00
git-annex-preferred-content.mdwn
git-annex-proxy.mdwn improve docs 2015-08-04 14:37:43 -04:00
git-annex-readpresentkey.mdwn
git-annex-registerurl.mdwn
git-annex-reinit.mdwn Special remotes configured with autoenable=true will be automatically enabled when git-annex init is run. 2015-09-14 14:49:48 -04:00
git-annex-reinject.mdwn Do verification of checksums of annex objects downloaded from remotes. 2015-10-01 15:56:39 -04:00
git-annex-rekey.mdwn
git-annex-remotedaemon.mdwn
git-annex-repair.mdwn
git-annex-required.mdwn add the date this was added 2015-08-18 18:53:25 +00:00
git-annex-resolvemerge.mdwn
git-annex-rmurl.mdwn
git-annex-schedule.mdwn
git-annex-semitrust.mdwn
git-annex-setkey.mdwn Do verification of checksums of annex objects downloaded from remotes. 2015-10-01 15:56:39 -04:00
git-annex-setpresentkey.mdwn
git-annex-shell.mdwn add unlocked flag for git-annex-shell recvkey 2015-12-26 13:59:27 -04:00
git-annex-smudge.mdwn fix docs 2015-12-16 16:00:41 -04:00
git-annex-status.mdwn status: Show added but not yet committed files. 2015-09-22 17:32:28 -04:00
git-annex-sync.mdwn sync: Add --no-commit, --no-pull, --no-push options to turn off parts of the sync process, as well as supporting --commit, --pull, --push, and --no-content options to specify the (current) default behavior. 2015-09-13 13:15:35 -04:00
git-annex-test.mdwn
git-annex-testremote.mdwn
git-annex-transferkey.mdwn
git-annex-transferkeys.mdwn
git-annex-trust.mdwn
git-annex-unannex.mdwn
git-annex-undo.mdwn
git-annex-ungroup.mdwn
git-annex-uninit.mdwn
git-annex-unlock.mdwn annex.thin 2015-12-27 15:59:59 -04:00
git-annex-untrust.mdwn
git-annex-unused.mdwn fix man format 2015-07-10 16:52:53 -04:00
git-annex-upgrade.mdwn
git-annex-vadd.mdwn
git-annex-vcycle.mdwn
git-annex-version.mdwn
git-annex-vfilter.mdwn
git-annex-vicfg.mdwn
git-annex-view.mdwn expand 2015-07-20 13:48:01 -04:00
git-annex-vpop.mdwn
git-annex-wanted.mdwn
git-annex-watch.mdwn
git-annex-webapp.mdwn
git-annex-whereis.mdwn
git-annex-xmppgit.mdwn
git-annex.mdwn annex.thin 2015-12-27 15:59:59 -04:00
git-union-merge.mdwn
how_it_works.mdwn
index.mdwn
install.mdwn remove obsolte note about sid package being out of date 2015-12-22 12:31:58 -04:00
internals.mdwn doc improvements 2015-12-27 16:06:11 -04:00
license.mdwn
location_tracking.mdwn
logo-old-bw.svg
logo-old.png
logo-old.svg
logo-old_small.png
logo.mdwn copy license info for logo onto logo page 2015-11-20 16:25:08 -04:00
logo.svg
logo_16x16.png
logo_32x32.png
logo_small.png
meta.mdwn
metadata.mdwn
news.mdwn
not.mdwn git-lfs lacks partial checkout support 2015-11-23 12:44:54 -04:00
polls.mdwn 2015 user survey 2015-10-19 15:15:04 -04:00
preferred_content.mdwn doc/*.mdwn: Minor fixes (typos, letter case) 2015-07-26 04:21:06 +02:00
privacy.mdwn
publicrepos.mdwn doc/*.mdwn: Minor fixes (typos, letter case) 2015-07-26 04:21:06 +02:00
related_software.mdwn link to not 2015-08-18 13:43:01 +00:00
repomap.png
required_content.mdwn
scalability.mdwn
shortcuts.mdwn
sidebar.mdwn
sitemap.mdwn
special_remotes.mdwn add Blackblaze B2 extranal special remote to the list 2015-12-11 11:06:02 -04:00
stickers.mdwn improve 2015-11-19 18:56:24 -04:00
submodules.mdwn
summary.mdwn
sync.mdwn
testimonials.mdwn
thanks.mdwn update 2015-10-20 00:43:18 -04:00
tips.mdwn
todo.mdwn set postformtext to perhaps make it clearer that this form at the top of the page is where one reports a new bug 2015-08-02 19:20:55 -04:00
transferring_data.mdwn
trust.mdwn fix link display so the user reading this isn't led to beleive there are commands git-annex-$foo 2015-09-09 15:56:06 -04:00
tuning.mdwn
upgrades.mdwn annex.thin 2015-12-27 15:59:59 -04:00
users.mdwn
videos.mdwn
Void.mdwn Creating initial Void Linux support page to match all the other Linux distros. 2015-09-07 14:03:01 +00:00
walkthrough.mdwn