pull: update docs & code for option compatibility with rebasing
git-pull.txt includes merge-options.txt, which is written assuming merges will happen. git-pull has allowed rebases for many years; update the documentation to reflect that. While at it, pass any `--signoff` flag through to the rebase backend too so that we don't have to document it as merge-specific. Rebase has supported the --signoff flag for years now as well. Signed-off-by: Elijah Newren <newren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
							parent
							
								
									031e2f7ae1
								
							
						
					
					
						commit
						359ff69389
					
				|  | @ -61,6 +61,8 @@ merge has resulted in conflicts. | |||
|  | ||||
| OPTIONS | ||||
| ------- | ||||
| :git-merge: 1 | ||||
|  | ||||
| include::merge-options.txt[] | ||||
|  | ||||
| -m <msg>:: | ||||
|  |  | |||
|  | @ -19,13 +19,12 @@ Incorporates changes from a remote repository into the current branch. | |||
| If the current branch is behind the remote, then by default it will | ||||
| fast-forward the current branch to match the remote.  If the current | ||||
| branch and the remote have diverged, the user needs to specify how to | ||||
| reconcile the divergent branches with `--no-ff`, `--ff`, or `--rebase` | ||||
| (or the corresponding configuration options in `pull.ff` or | ||||
| `pull.rebase`). | ||||
| reconcile the divergent branches with `--rebase` or `--no-rebase` (or | ||||
| the corresponding configuration option in `pull.rebase`). | ||||
|  | ||||
| More precisely, `git pull` runs `git fetch` with the given parameters | ||||
| and then depending on configuration options or command line flags, | ||||
| will call either `git merge` or `git rebase` to reconcile diverging | ||||
| will call either `git rebase` or `git merge` to reconcile diverging | ||||
| branches. | ||||
|  | ||||
| <repository> should be the name of a remote repository as | ||||
|  | @ -136,7 +135,7 @@ published that history already.  Do *not* use this option | |||
| unless you have read linkgit:git-rebase[1] carefully. | ||||
|  | ||||
| --no-rebase:: | ||||
| 	Override earlier --rebase. | ||||
| 	This is shorthand for --rebase=false. | ||||
|  | ||||
| Options related to fetching | ||||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||||
|  |  | |||
|  | @ -2,6 +2,9 @@ | |||
| --no-commit:: | ||||
| 	Perform the merge and commit the result. This option can | ||||
| 	be used to override --no-commit. | ||||
| ifdef::git-pull[] | ||||
| 	Only useful when merging. | ||||
| endif::git-pull[] | ||||
| + | ||||
| With --no-commit perform the merge and stop just before creating | ||||
| a merge commit, to give the user a chance to inspect and further | ||||
|  | @ -39,6 +42,7 @@ set to `no` at the beginning of them. | |||
| 	to `MERGE_MSG` before being passed on to the commit machinery in the | ||||
| 	case of a merge conflict. | ||||
|  | ||||
| ifdef::git-merge[] | ||||
| --ff:: | ||||
| --no-ff:: | ||||
| --ff-only:: | ||||
|  | @ -47,6 +51,22 @@ set to `no` at the beginning of them. | |||
| 	default unless merging an annotated (and possibly signed) tag | ||||
| 	that is not stored in its natural place in the `refs/tags/` | ||||
| 	hierarchy, in which case `--no-ff` is assumed. | ||||
| endif::git-merge[] | ||||
| ifdef::git-pull[] | ||||
| --ff-only:: | ||||
| 	Only update to the new history if there is no divergent local | ||||
| 	history.  This is the default when no method for reconciling | ||||
| 	divergent histories is provided (via the --rebase=* flags). | ||||
|  | ||||
| --ff:: | ||||
| --no-ff:: | ||||
| 	When merging rather than rebasing, specifies how a merge is | ||||
| 	handled when the merged-in history is already a descendant of | ||||
| 	the current history.  If merging is requested, `--ff` is the | ||||
| 	default unless merging an annotated (and possibly signed) tag | ||||
| 	that is not stored in its natural place in the `refs/tags/` | ||||
| 	hierarchy, in which case `--no-ff` is assumed. | ||||
| endif::git-pull[] | ||||
| + | ||||
| With `--ff`, when possible resolve the merge as a fast-forward (only | ||||
| update the branch pointer to match the merged branch; do not create a | ||||
|  | @ -55,9 +75,11 @@ descendant of the current history), create a merge commit. | |||
| + | ||||
| With `--no-ff`, create a merge commit in all cases, even when the merge | ||||
| could instead be resolved as a fast-forward. | ||||
| ifdef::git-merge[] | ||||
| + | ||||
| With `--ff-only`, resolve the merge as a fast-forward when possible. | ||||
| When not possible, refuse to merge and exit with a non-zero status. | ||||
| endif::git-merge[] | ||||
|  | ||||
| -S[<keyid>]:: | ||||
| --gpg-sign[=<keyid>]:: | ||||
|  | @ -73,6 +95,9 @@ When not possible, refuse to merge and exit with a non-zero status. | |||
| 	In addition to branch names, populate the log message with | ||||
| 	one-line descriptions from at most <n> actual commits that are being | ||||
| 	merged. See also linkgit:git-fmt-merge-msg[1]. | ||||
| ifdef::git-pull[] | ||||
| 	Only useful when merging. | ||||
| endif::git-pull[] | ||||
| + | ||||
| With --no-log do not list one-line descriptions from the | ||||
| actual commits being merged. | ||||
|  | @ -102,10 +127,17 @@ With --no-squash perform the merge and commit the result. This | |||
| option can be used to override --squash. | ||||
| + | ||||
| With --squash, --commit is not allowed, and will fail. | ||||
| ifdef::git-pull[] | ||||
| + | ||||
| Only useful when merging. | ||||
| endif::git-pull[] | ||||
|  | ||||
| --no-verify:: | ||||
| 	This option bypasses the pre-merge and commit-msg hooks. | ||||
| 	See also linkgit:githooks[5]. | ||||
| ifdef::git-pull[] | ||||
| 	Only useful when merging. | ||||
| endif::git-pull[] | ||||
|  | ||||
| -s <strategy>:: | ||||
| --strategy=<strategy>:: | ||||
|  | @ -127,6 +159,10 @@ With --squash, --commit is not allowed, and will fail. | |||
| 	default trust model, this means the signing key has been signed by | ||||
| 	a trusted key.  If the tip commit of the side branch is not signed | ||||
| 	with a valid key, the merge is aborted. | ||||
| ifdef::git-pull[] | ||||
| + | ||||
| Only useful when merging. | ||||
| endif::git-pull[] | ||||
|  | ||||
| --summary:: | ||||
| --no-summary:: | ||||
|  | @ -166,3 +202,7 @@ endif::git-pull[] | |||
| 	projects that started their lives independently. As that is | ||||
| 	a very rare occasion, no configuration variable to enable | ||||
| 	this by default exists and will not be added. | ||||
| ifdef::git-pull[] | ||||
| + | ||||
| Only useful when merging. | ||||
| endif::git-pull[] | ||||
|  |  | |||
|  | @ -893,6 +893,8 @@ static int run_rebase(const struct object_id *newbase, | |||
| 	strvec_pushv(&args, opt_strategy_opts.v); | ||||
| 	if (opt_gpg_sign) | ||||
| 		strvec_push(&args, opt_gpg_sign); | ||||
| 	if (opt_signoff) | ||||
| 		strvec_push(&args, opt_signoff); | ||||
| 	if (opt_autostash == 0) | ||||
| 		strvec_push(&args, "--no-autostash"); | ||||
| 	else if (opt_autostash == 1) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Elijah Newren
						Elijah Newren