From 9e65dd757f9fe8e031ea936ce4e2a8cb998f7f83 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 8 Apr 2016 15:25:32 -0400 Subject: hard links on windows * annex.thin and annex.hardlink are now supported on Windows. * unannex --fast now makes hard links on Windows. --- doc/design/adjusted_branches.mdwn | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) (limited to 'doc/design/adjusted_branches.mdwn') diff --git a/doc/design/adjusted_branches.mdwn b/doc/design/adjusted_branches.mdwn index e94439d66..75ece6e99 100644 --- a/doc/design/adjusted_branches.mdwn +++ b/doc/design/adjusted_branches.mdwn @@ -280,9 +280,20 @@ into adjusted view worktrees.] to checkout the adjusted branch some other way. Maybe generalize so this more efficient checkout is available as a git-annex command? * There are potentially races in code that assumes a branch like - master is not being changed by someone else. In particular, - propigateAdjustedCommits rebases the adjusted branch on top of master. - That is called by sync. The assumption is that any changes in master - have already been handled by updateAdjustedBranch. But, if another remote - pushed a new master at just the right time, the adjusted branch could be - rebased on top of a master that it doesn't incorporate, which is wrong. + master is not being changed by someone else. + + In particular, propigateAdjustedCommits rebases the adjusted branch on + top of master. That is called by sync. The assumption is that any changes + in master have already been handled by updateAdjustedBranch. But, if + another remote pushed a new master at just the right time, the adjusted + branch could be rebased on top of a master that it doesn't incorporate, + which is wrong. + + Best fix seems to be to use a hidden ref, like refs/annex/adjusted/master + and copy master's ref to it when entering the view branch. Then, make + all adjustments via that ref, and propigate back to refs/heads/master. + + It's fine to overwrite changes that were pushed to master when + propigating from the adjusted branch. Synced changes also go to + synced/master so won't be lost. Pushes not made using git-annex sync + of master are not really desired, just a possibility. -- cgit v1.2.3