improve man page and comment

This commit is contained in:
Joey Hess 2025-01-03 13:05:23 -04:00
parent 1eb11808cb
commit c20f86b1c8
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
2 changed files with 47 additions and 4 deletions

View file

@ -0,0 +1,43 @@
[[!comment format=mdwn
username="joey"
subject="""comment 1"""
date="2025-01-03T16:33:46Z"
content="""
It seems to me that "git-annex merge git-annex" is explicity asking
git-annex to merge the git-annex branch into whatever branch you have
checked out, the same as "git merge git-annex" is. Adding a special case to
prevent this footgun would not prevent the "git merge git-annex" footgun.
(Also I don't like adding DWIM special cases to git-annex.)
git has --allow-unrelated-histories exactly to prevent this
particular kind of mistake. I see you used it, but I don't understand why
you thought that would make sense to use it. Best I can come up with is
that you know two git-annex branches started independently will have
unrelated histories. Of course, git-annex deals with that itself when
merging such branches.
I have slightly improved the git-annex-merge man page to hopefully make
more clear what it does when you ask it to merge a specific branch.
---
As to why "git-annex merge" does not show it is merging the datalad-public
remote's git-annex branch, there is a simple explanation:
That branch has already been merged.
We can see this is the case in you `git-annex info`, which is able to list
the UUID of that remote. That UUID comes from that branch. So git-annex has
merged it already.
It's also easy to show that git-annex merge has no difficulty with merging the
git-annex branch in the situation where a remote has only a git-annex branch
and no other branches. Eg:
> git init y; git init x; cd x; git-annex init; cd ../y;
> git remote add x localhost:tmp/x
> git fetch x
> git-annex merge
merge git-annex (merging x/git-annex into git-annex...)
So, this seems to have been operator error as far as I can see.
"""]]

View file

@ -12,10 +12,10 @@ When run without any parameters, this performs the same merging (and merge
conflict resolution) that is done by the `git-annex pull` and `git-annex sync` conflict resolution) that is done by the `git-annex pull` and `git-annex sync`
commands, but without uploading or downloading any data. commands, but without uploading or downloading any data.
When a branch to merge is specified, this merges it, using the same merge When a branch to merge is specified, this merges it into the current branch,
conflict resolution as the `git-annex pull` command. This is especially useful on using the same merge conflict resolution as the `git-annex pull` command.
an adjusted branch, because it applies the same adjustment to the This is especially useful on an adjusted branch, because it applies the same
branch before merging it. adjustment to the branch before merging it.
When annex.resolvemerge is set to false, merge conflict resolution When annex.resolvemerge is set to false, merge conflict resolution
will not be done. will not be done.