aboutsummaryrefslogtreecommitdiff
path: root/Annex/AdjustedBranch.hs
Commit message (Collapse)AuthorAge
* finally really add back custom-setup stanzaGravatar Joey Hess2017-12-31
| | | | | | | | | | | | Fourth or fifth try at this and finally found a way to make it work. Absurd amount of busy-work forced on me by change in cabal's behavior. Split up Utility modules that need posix stuff out of ones used by Setup. Various other hacks around inability for Setup to use anything that ifdefs a use of unix. Probably lost a full day of my life to this. This is how build systems make their users hate them. Just saying.
* enable LambdaCase and convert around 10% of places that could use itGravatar Joey Hess2017-11-15
| | | | | | | | | | | Needs ghc 7.6.1, so minimum base version increased slightly. All builds are well above this version of ghc, and debian oldstable is as well. Code that could use lambdacase can be found by running: git grep -B 1 'case ' | less and searching in less for "<-" This commit was sponsored by andrea rota.
* sync: Added --cleanup, which removes local and remote synced/ branches.Gravatar Joey Hess2017-09-28
| | | | | | | Also deletes any tagged pushes that the assistant might have done, since those would also prevent resetting a branch back. This commit was sponsored by andrea rota.
* configuration to disable automatic merge conflict resolutionGravatar Joey Hess2017-06-01
| | | | | | | | | | | | | | | * Added annex.resolvemerge configuration, which can be set to false to disable the usual automatic merge conflict resolution done by git-annex sync and the assistant. * sync: Added --no-resolvemerge option. Note that disabling merge conflict resolution is probably not a good idea in a direct mode repo or adjusted branch. Since updates to both are done outside the usual work tree, if it fails the tree is not left in a conflicted state, and it would be hard to manually resolve the conflict. Still, made annex.resolvemerge be supported in those cases for consistency. This commit was sponsored by Riku Voipio.
* workaround is in placeGravatar Joey Hess2017-05-16
| | | | (and remove debug print)
* Work around bug in git 2.13.0 involving GIT_COMMON_DIR that broke merging ↵Gravatar Joey Hess2017-05-16
| | | | | | | | | | changes into adjusted branches. Might want to remove this when it gets fixed, in case adjusted branches are used in a repo with a great many refs, which would become unnecessarily slow. This commit was supported by the NSF-funded DataLad project.
* Avoid backtraces on expected failures when built with ghc 8; only use ↵Gravatar Joey Hess2016-11-15
| | | | | | | | | | | | | backtraces for unexpected errors. ghc 8 added backtraces on uncaught errors. This is great, but git-annex was using error in many places for a error message targeted at the user, in some known problem case. A backtrace only confuses such a message, so omit it. Notably, commands like git annex drop that failed due to eg, numcopies, used to use error, so had a backtrace. This commit was sponsored by Ethan Aubin.
* fix bugs in handing of deep branches with sync and adjusted branchesGravatar Joey Hess2016-09-21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * sync: Previously, when run in a branch with a slash in its name, such as "foo/bar", the sync branch was "synced/bar". That conflicted with the sync branch used for branch "bar", so has been changed to "synced/foo/bar". * adjust: Previously, when adjusting a branch with a slash in its name, such as "foo/bar", the adjusted branch was "adjusted/bar(unlocked)". That conflicted with the adjusted branch used for branch "bar", so has been changed to "adjusted/foo/bar(unlocked)" * Also, running sync in an adjusted branch did not correctly sync changes back to the parent branch when it had a slash in its name. This bug has been fixed. Eliminate use of Git.Ref.under and Git.Ref.basename; using Git.Ref.underBase and Git.Ref.base make everything handle deep branches correctly. Probably noone was adjusting deep branches, and v6 is still experimental anyway, so I'm not going to worry about the mess that was left by that bug. In the case of git-annex sync, using a fixed git-annex with an old unfixed one will mean they use different sync branches for a deep branch, and so they may stop syncing until the old one is upgraded. However, that's only a problem when syncing between repositories without going via a central bare repository. Added a warning about this to the CHANGELOG, but it's probably not going to affect many people at all. This commit was sponsored by Riku Voipio.
* v6: Fix bad merge in an adjusted branch that resulted in an empty tree.Gravatar Joey Hess2016-06-13
|
* Fix bug in initialization of clone from a repo with an adjusted branch that ↵Gravatar Joey Hess2016-06-09
| | | | | | | | | had not been synced back to master. This bug caused broken tree objects to get built by a later git annex sync. This is a somewhat unlikely but not impossible situation, and the test suite's union_merge_regression test tickled it when it was run on FAT.
* Fix initialization of a bare clone of a repo that has an adjusted branch ↵Gravatar Joey Hess2016-06-02
| | | | checked out.
* better avoid switching to direct mode in clone of adjusted branch repoGravatar Joey Hess2016-06-02
|
* Automatically enable v6 mode when initializing in a clone from a repo that ↵Gravatar Joey Hess2016-06-02
| | | | | | | has an adjusted branch checked out. The clone also has the adjusted branch checked out, so it needs to be initialized to a version that supports that.
* fix recent test suite reversionGravatar Joey Hess2016-05-23
| | | | | | git annex adjust --force will overwrite any current adjusted branch. I didn't document this because for the user, deleting the branch is just as good.
* adjust: Add --fix adjustment, which is useful when the git directory is in a ↵Gravatar Joey Hess2016-05-16
| | | | nonstandard place.
* adjust: If the adjusted branch already exists, avoid overwriting it, since ↵Gravatar Joey Hess2016-05-13
| | | | | | | | | | | | | | | | | it might contain changes that have not yet been propigated to the original branch. Could not think of a foolproof way to detect if the old adjusted branch was just behind the current branch. It's possible that the user amended the adjusting commit at the head of the adjusted branch, for example. I decided to bail in this situation, instead of just entering the old branch, so that if git annex adjust succeeds the user is always in a *current* adjusted branch, not some old and out of date one. What could perhaps be done is enter the old branch and then update it. But that seems too magical; the user may have rebased master or something or may not want to propigate the changes from the old branch. Best to error out.
* more windows path fixesGravatar Joey Hess2016-05-04
| | | | | normalize filepaths in the map because it may be constructed with windows-style paths and then queried for git-style
* assistant: Deal with upcoming git's refusal to merge unrelated histories by ↵Gravatar Joey Hess2016-04-22
| | | | | | | | | | | | | default git 2.8.1 (or perhaps 2.9.0) is going to prevent git merge from merging in unrelated branches. Since the webapp's pairing etc features often combine together repositories with unrelated histories, work around this behavior change by setting GIT_MERGE_ALLOW_UNRELATED_HISTORIES when the assistant merges. Note though that this is not done for git annex sync's merges, so it will follow git's default or configured behavior.
* adjusted branches need git 2.2.0 or newerGravatar Joey Hess2016-04-22
| | | | | | When git-annex is used with a git version older than 2.2.0, disable support for adjusted branches, since GIT_COMMON_DIR is needed to update them and was first added in that version of git.
* add AdjBranch newtype; some simplicationsGravatar Joey Hess2016-04-09
|
* change name of basis branchGravatar Joey Hess2016-04-09
| | | | Making the name look too much like the adjusted branch was ambiguous.
* fix master push overwrite race when updating adjusted branch, by maintaining ↵Gravatar Joey Hess2016-04-09
| | | | basis ref
* fix commit tree after merge into adjusted branchGravatar Joey Hess2016-04-06
|
* run out of tree merge with --no-ffGravatar Joey Hess2016-04-06
| | | | | | This is how direct mode does it too, and somehow, for reasons that currently escape me, this makes git merge not care if it's run with an empty work tree.
* fix auto merge conflict resolution when doing out of tree merge for adjusted ↵Gravatar Joey Hess2016-04-06
| | | | branch
* new method for merging changes into adjusted branch that avoids unncessary ↵Gravatar Joey Hess2016-04-06
| | | | | | merge conflicts Still needs work when there are actual merge conflicts.
* todoGravatar Joey Hess2016-04-04
|
* deal with cloning a repo that has an ajdusted branch checked outGravatar Joey Hess2016-04-04
|
* make way for git checkout outputGravatar Joey Hess2016-04-04
|
* Upgrading a direct mode repository to v6 has changed to enter an adjusted ↵Gravatar Joey Hess2016-04-04
| | | | | | | | unlocked branch. This makes the direct mode to v6 upgrade able to be performed in one clone of a repository without affecting other clones, which can continue using v5 and direct mode.
* fixed merging of changes from adjusted branch + a remoteGravatar Joey Hess2016-03-31
|
* made some progress on syncing adjusted branches, but still buggyGravatar Joey Hess2016-03-31
|
* add reflog messagesGravatar Joey Hess2016-03-31
|
* clean up handling of commit lockGravatar Joey Hess2016-03-31
| | | | | Closing the lock manually caused a later exception when the bracket tried to close it again.
* init: Automatically enter the adjusted unlocked branch when in a v6 repo on ↵Gravatar Joey Hess2016-03-29
| | | | a filesystem not supporting symlinks.
* git annex add in adjusted unlocked branchGravatar Joey Hess2016-03-29
| | | | | Cached the current branch lookup just because it seems unnecessary overhead to run an extra git command per add to query the current branch.
* remove hashPointerFile'Gravatar Joey Hess2016-03-29
| | | | | no longer needed now that hashPointerFile uses a long-running git hash-object handle
* implement another adjustment -- easy to do now!Gravatar Joey Hess2016-03-11
|
* simplify adjustment reversalGravatar Joey Hess2016-03-11
|
* fix deletion of files in adjustTreeGravatar Joey Hess2016-03-11
|
* improve propigation of commits from adjusted branchesGravatar Joey Hess2016-03-11
| | | | | | | | | | | Only reverse adjust the changes in the commit, which means that adjustments do not need to be generally cleanly reversable. For example, an adjustment can unlock all locked files, but does not need to worry about files that were originally unlocked when reversing, because it will only ever be run on files that have been changed. So, it's ok if it locks all files when reversed, or even leaves all files as-is when reversed.
* rebase on top of updated original branchGravatar Joey Hess2016-03-03
|
* fix abs filepath generationGravatar Joey Hess2016-03-03
|
* change name of adjusted branches to eg adjusted/master(unlocked)Gravatar Joey Hess2016-03-03
| | | | | | | Using adjusted/unlocked/master made lots of git stuff dealing with "master" complain that it was ambiguous. This new appoach is more like view branch names, and shows the adjustment right there in the branch display even if only the basename of the branch is shown.
* working toward adjusted commit propigationGravatar Joey Hess2016-03-03
|
* can't checkout adjusted branch while index is still lockedGravatar Joey Hess2016-03-03
| | | | | | | There's a race here, but entering an adjusted branch for the first time is not something to do when a commit is being made at the same time. Although, may want to prevent the assistant from committing while entering the adjusted branch.
* push original branch, not adjusted branchGravatar Joey Hess2016-03-03
|
* lock index while making index-less commitsGravatar Joey Hess2016-03-03
| | | | | Avoids race with another git commit at the same time adjusted branch is being updated.
* remove debugGravatar Joey Hess2016-02-29
|
* update keys database when adjusting branchesGravatar Joey Hess2016-02-29
|