git-annex/doc/git-annex-merge.mdwn
Joey Hess 5df89d58c7
git-annex pull and push
Split out two new commands, git-annex pull and git-annex push. Those plus a
git commit are equivilant to git-annex sync.

In a sense, git-annex sync conflates 3 things, and it would have been
better to have push and pull from the beginning and not sync. Although
note that git-annex sync --content is faster than a pull followed by a
push, because it only has to walk the tree once, look at preferred
content once, etc. So there is some value in git-annex sync in speed, as
well as user convenience.

And it would be hard to split out pull and push from sync, as far as the
implementaton goes. The implementation inside sync was easy, just adjust
SyncOptions so it does the right thing.

Note that the new commands default to syncing content, unless
annex.synccontent is explicitly set to false. I'd like sync to also do
that, but that's a hard transition to make. As a start to that
transition, I added a note to git-annex-sync.mdwn that it may start to
do so in a future version of git-annex. But a real transition would
necessarily involve displaying warnings when sync is used without
--content, and time.

Sponsored-by: Kevin Mueller on Patreon
2023-05-16 16:51:07 -04:00

56 lines
1.3 KiB
Markdown

# NAME
git-annex merge - merge changes from remotes
# SYNOPSIS
git annex merge [branch]
# DESCRIPTION
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`
commands, but without uploading or downloading any data.
When a branch to merge is specified, this merges it, using the same merge
conflict resolution as the `git-annex pull` command. This is especially useful on
an adjusted branch, because it applies the same adjustment to the
branch before merging it.
When annex.resolvemerge is set to false, merge conflict resolution
will not be done.
# OPTIONS
* `--allow-unrelated-histories`, `--no-allow-unrelated-histories`
Passed on to `git merge`, to control whether or not to merge
histories that do not share a common ancestor.
* `--json`
Enable JSON output. This is intended to be parsed by programs that use
git-annex. Each line of output is a JSON object.
* `--json-error-messages`
Messages that would normally be output to standard error are included in
the JSON instead.
* Also, the [[git-annex-common-options]](1) can be used.
# SEE ALSO
[[git-annex]](1)
[[git-annex-pull]](1)
[[git-annex-sync]](1)
[[git-annex-adjust]](1)
# AUTHOR
Joey Hess <id@joeyh.name>
Warning: Automatically converted into a man page by mdwn2man. Edit with care.