diff options
Diffstat (limited to 'Documentation')
-rw-r--r-- | Documentation/Makefile | 8 | ||||
-rw-r--r-- | Documentation/RelNotes/2.36.1.txt | 33 | ||||
-rw-r--r-- | Documentation/RelNotes/2.37.0.txt | 90 | ||||
-rw-r--r-- | Documentation/config/mergetool.txt | 9 | ||||
-rw-r--r-- | Documentation/config/safe.txt | 4 | ||||
-rw-r--r-- | Documentation/git-mergetool.txt | 8 | ||||
-rw-r--r-- | Documentation/git-rebase.txt | 5 | ||||
-rw-r--r-- | Documentation/git.txt | 4 | ||||
-rw-r--r-- | Documentation/mergetools/vimdiff.txt | 194 | ||||
-rw-r--r-- | Documentation/rev-list-options.txt | 5 |
10 files changed, 351 insertions, 9 deletions
diff --git a/Documentation/Makefile b/Documentation/Makefile index 44c080e..adb2f1b 100644 --- a/Documentation/Makefile +++ b/Documentation/Makefile @@ -302,12 +302,12 @@ $(mergetools_txt): mergetools-list.made mergetools-list.made: ../git-mergetool--lib.sh $(wildcard ../mergetools/*) $(QUIET_GEN) \ - $(SHELL_PATH) -c 'MERGE_TOOLS_DIR=../mergetools && \ + $(SHELL_PATH) -c 'MERGE_TOOLS_DIR=../mergetools && TOOL_MODE=diff && \ . ../git-mergetool--lib.sh && \ - show_tool_names can_diff "* " || :' >mergetools-diff.txt && \ - $(SHELL_PATH) -c 'MERGE_TOOLS_DIR=../mergetools && \ + show_tool_names can_diff' | sed -e "s/\([a-z0-9]*\)/\`\1\`;;/" >mergetools-diff.txt && \ + $(SHELL_PATH) -c 'MERGE_TOOLS_DIR=../mergetools && TOOL_MODE=merge && \ . ../git-mergetool--lib.sh && \ - show_tool_names can_merge "* " || :' >mergetools-merge.txt && \ + show_tool_names can_merge' | sed -e "s/\([a-z0-9]*\)/\`\1\`;;/" >mergetools-merge.txt && \ date >$@ TRACK_ASCIIDOCFLAGS = $(subst ','\'',$(ASCIIDOC_COMMON):$(ASCIIDOC_HTML):$(ASCIIDOC_DOCBOOK)) diff --git a/Documentation/RelNotes/2.36.1.txt b/Documentation/RelNotes/2.36.1.txt new file mode 100644 index 0000000..a961709 --- /dev/null +++ b/Documentation/RelNotes/2.36.1.txt @@ -0,0 +1,33 @@ +Git v2.36.1 Release Notes +========================= + +Fixes since v2.36 +----------------- + + * "git submodule update" without pathspec should silently skip an + uninitialized submodule, but it started to become noisy by mistake. + + * "diff-tree --stdin" has been broken for about a year, but 2.36 + release broke it even worse by breaking running the command with + <pathspec>, which in turn broke "gitk" and got noticed. This has + been corrected by aligning its behaviour to that of "log". + + * Regression fix for 2.36 where "git name-rev" started to sometimes + reference strings after they are freed. + + * "git show <commit1> <commit2>... -- <pathspec>" lost the pathspec + when showing the second and subsequent commits, which has been + corrected. + + * "git fast-export -- <pathspec>" lost the pathspec when showing the + second and subsequent commits, which has been corrected. + + * "git format-patch <args> -- <pathspec>" lost the pathspec when + showing the second and subsequent commits, which has been + corrected. + + * Get rid of a bogus and over-eager coccinelle rule. + + * Correct choices of C compilers used in various CI jobs. + +Also contains minor documentation updates and code clean-ups. diff --git a/Documentation/RelNotes/2.37.0.txt b/Documentation/RelNotes/2.37.0.txt new file mode 100644 index 0000000..ac8fd41 --- /dev/null +++ b/Documentation/RelNotes/2.37.0.txt @@ -0,0 +1,90 @@ +Git v2.37 Release Notes +======================= + +UI, Workflows & Features + + * "vimdiff[123]" mergetool drivers have been reimplemented with a + more generic layout mechanism. + + +Performance, Internal Implementation, Development Support etc. + + * The performance of the "untracked cache" feature has been improved + when "--untracked-files=<mode>" and "status.showUntrackedFiles" + are combined. + + +Fixes since v2.36 +----------------- + + * "git submodule update" without pathspec should silently skip an + uninitialized submodule, but it started to become noisy by mistake. + (merge 4f1ccef87c gc/submodule-update-part2 later to maint). + + * "diff-tree --stdin" has been broken for about a year, but 2.36 + release broke it even worse by breaking running the command with + <pathspec>, which in turn broke "gitk" and got noticed. This has + been corrected by aligning its behaviour to that of "log". + (merge f8781bfda3 jc/diff-tree-stdin-fix later to maint). + + * Regression fix for 2.36 where "git name-rev" started to sometimes + reference strings after they are freed. + (merge 45a14f578e rs/name-rev-fix-free-after-use later to maint). + + * "git show <commit1> <commit2>... -- <pathspec>" lost the pathspec + when showing the second and subsequent commits, which has been + corrected. + (merge 5cdb38458e jc/show-pathspec-fix later to maint). + + * "git fast-export -- <pathspec>" lost the pathspec when showing the + second and subsequent commits, which has been corrected. + (merge d1c25272f5 rs/fast-export-pathspec-fix later to maint). + + * "git format-patch <args> -- <pathspec>" lost the pathspec when + showing the second and subsequent commits, which has been + corrected. + (merge 91f8f7e46f rs/format-patch-pathspec-fix later to maint). + + * "git clone --origin X" leaked piece of memory that held value read + from the clone.defaultRemoteName configuration variable, which has + been plugged. + (merge 6dfadc8981 jc/clone-remote-name-leak-fix later to maint). + + * Get rid of a bogus and over-eager coccinelle rule. + (merge 08bdd3a185 jc/cocci-xstrdup-or-null-fix later to maint). + + * The path taken by "git multi-pack-index" command from the end user + was compared with path internally prepared by the tool withut first + normalizing, which lead to duplicated paths not being noticed, + which has been corrected. + (merge 11f9e8de3d ds/midx-normalize-pathname-before-comparison later to maint). + + * Correct choices of C compilers used in various CI jobs. + (merge 3506cae04f ab/cc-package-fixes later to maint). + + * Various cleanups to "git p4". + (merge 4ff0108d9e jh/p4-various-fixups later to maint). + + * The progress meter of "git blame" was showing incorrect numbers + when processing only parts of the file. + (merge e5f5d7d42e ea/progress-partial-blame later to maint). + + * "git rebase --keep-base <upstream> <branch-to-rebase>" computed the + commit to rebase onto incorrectly, which has been corrected. + (merge 9e5ebe9668 ah/rebase-keep-base-fix later to maint). + + * Fix a leak of FILE * in an error codepath. + (merge c0befa0c03 kt/commit-graph-plug-fp-leak-on-error later to maint). + + * Avoid problems from interaction between malloc_check and address + sanitizer. + (merge 067109a5e7 pw/test-malloc-with-sanitize-address later to maint). + + * The commit summary shown after making a commit is matched to what + is given in "git status" not to use the break-rewrite heuristics. + (merge 84792322ed rs/commit-summary-wo-break-rewrite later to maint). + + * Other code cleanup, docfix, build fix, etc. + (merge e6b2582da3 cm/reftable-0-length-memset later to maint). + (merge 0b75e5bf22 ab/misc-cleanup later to maint). + (merge 52e1ab8a76 ea/rebase-code-simplify later to maint). diff --git a/Documentation/config/mergetool.txt b/Documentation/config/mergetool.txt index cafbbef..90b3809 100644 --- a/Documentation/config/mergetool.txt +++ b/Documentation/config/mergetool.txt @@ -45,6 +45,15 @@ mergetool.meld.useAutoMerge:: value of `false` avoids using `--auto-merge` altogether, and is the default value. +mergetool.vimdiff.layout:: + The vimdiff backend uses this variable to control how its split + windows look like. Applies even if you are using Neovim (`nvim`) or + gVim (`gvim`) as the merge tool. See BACKEND SPECIFIC HINTS section +ifndef::git-mergetool[] + in linkgit:git-mergetool[1]. +endif::[] + for details. + mergetool.hideResolved:: During a merge Git will automatically resolve as many conflicts as possible and write the 'MERGED' file containing conflict markers around diff --git a/Documentation/config/safe.txt b/Documentation/config/safe.txt index 6d764fe..ae0e2e3 100644 --- a/Documentation/config/safe.txt +++ b/Documentation/config/safe.txt @@ -13,8 +13,8 @@ override any such directories specified in the system config), add a `safe.directory` entry with an empty value. + This config setting is only respected when specified in a system or global -config, not when it is specified in a repository config or via the command -line option `-c safe.directory=<path>`. +config, not when it is specified in a repository config, via the command +line option `-c safe.directory=<path>`, or in environment variables. + The value of this setting is interpolated, i.e. `~/<path>` expands to a path relative to the home directory and `%(prefix)/<path>` expands to a diff --git a/Documentation/git-mergetool.txt b/Documentation/git-mergetool.txt index e587c77..f784027 100644 --- a/Documentation/git-mergetool.txt +++ b/Documentation/git-mergetool.txt @@ -101,6 +101,7 @@ success of the resolution after the custom tool has exited. CONFIGURATION ------------- +:git-mergetool: 1 include::config/mergetool.txt[] TEMPORARY FILES @@ -113,6 +114,13 @@ Setting the `mergetool.keepBackup` configuration variable to `false` causes `git mergetool` to automatically remove the backup as files are successfully merged. +BACKEND SPECIFIC HINTS +---------------------- + +vimdiff +~~~~~~~ +include::mergetools/vimdiff.txt[] + GIT --- Part of the linkgit:git[1] suite diff --git a/Documentation/git-rebase.txt b/Documentation/git-rebase.txt index 9da4647..262fb01 100644 --- a/Documentation/git-rebase.txt +++ b/Documentation/git-rebase.txt @@ -215,9 +215,10 @@ leave out at most one of A and B, in which case it defaults to HEAD. --keep-base:: Set the starting point at which to create the new commits to the - merge base of <upstream> <branch>. Running + merge base of <upstream> and <branch>. Running 'git rebase --keep-base <upstream> <branch>' is equivalent to - running 'git rebase --onto <upstream>... <upstream>'. + running + 'git rebase --onto <upstream>...<branch> <upstream> <branch>'. + This option is useful in the case where one is developing a feature on top of an upstream branch. While the feature is being worked on, the diff --git a/Documentation/git.txt b/Documentation/git.txt index 13f83a2..302607a 100644 --- a/Documentation/git.txt +++ b/Documentation/git.txt @@ -9,7 +9,7 @@ git - the stupid content tracker SYNOPSIS -------- [verse] -'git' [--version] [--help] [-C <path>] [-c <name>=<value>] +'git' [-v | --version] [-h | --help] [-C <path>] [-c <name>=<value>] [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path] [-p|--paginate|-P|--no-pager] [--no-replace-objects] [--bare] [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>] @@ -39,6 +39,7 @@ or https://git-scm.com/docs. OPTIONS ------- +-v:: --version:: Prints the Git suite version that the 'git' program came from. + @@ -46,6 +47,7 @@ This option is internally converted to `git version ...` and accepts the same options as the linkgit:git-version[1] command. If `--help` is also given, it takes precedence over `--version`. +-h:: --help:: Prints the synopsis and a list of the most commonly used commands. If the option `--all` or `-a` is given then all diff --git a/Documentation/mergetools/vimdiff.txt b/Documentation/mergetools/vimdiff.txt new file mode 100644 index 0000000..2d631e9 --- /dev/null +++ b/Documentation/mergetools/vimdiff.txt @@ -0,0 +1,194 @@ +Description +^^^^^^^^^^^ + +When specifying `--tool=vimdiff` in `git mergetool` Git will open Vim with a 4 +windows layout distributed in the following way: +.... +------------------------------------------ +| | | | +| LOCAL | BASE | REMOTE | +| | | | +------------------------------------------ +| | +| MERGED | +| | +------------------------------------------ +.... +`LOCAL`, `BASE` and `REMOTE` are read-only buffers showing the contents of the +conflicting file in specific commits ("commit you are merging into", "common +ancestor commit" and "commit you are merging from" respectively) + +`MERGED` is a writable buffer where you have to resolve the conflicts (using the +other read-only buffers as a reference). Once you are done, save and exit Vim as +usual (`:wq`) or, if you want to abort, exit using `:cq`. + +Layout configuration +^^^^^^^^^^^^^^^^^^^^ + +You can change the windows layout used by Vim by setting configuration variable +`mergetool.vimdiff.layout` which accepts a string where the following separators +have special meaning: + + - `+` is used to "open a new tab" + - `,` is used to "open a new vertical split" + - `/` is used to "open a new horizontal split" + - `@` is used to indicate which is the file containing the final version after + solving the conflicts. If not present, `MERGED` will be used by default. + +The precedence of the operators is this one (you can use parentheses to change +it): + + `@` > `+` > `/` > `,` + +Let's see some examples to understand how it works: + +* `layout = "(LOCAL,BASE,REMOTE)/MERGED"` ++ +-- +This is exactly the same as the default layout we have already seen. + +Note that `/` has precedence over `,` and thus the parenthesis are not +needed in this case. The next layout definition is equivalent: + + layout = "LOCAL,BASE,REMOTE / MERGED" +-- +* `layout = "LOCAL,MERGED,REMOTE"` ++ +-- +If, for some reason, we are not interested in the `BASE` buffer. +.... +------------------------------------------ +| | | | +| | | | +| LOCAL | MERGED | REMOTE | +| | | | +| | | | +------------------------------------------ +.... +-- +* `layout = "MERGED"` ++ +-- +Only the `MERGED` buffer will be shown. Note, however, that all the other +ones are still loaded in vim, and you can access them with the "buffers" +command. +.... +------------------------------------------ +| | +| | +| MERGED | +| | +| | +------------------------------------------ +.... +-- +* `layout = "@LOCAL,REMOTE"` ++ +-- +When `MERGED` is not present in the layout, you must "mark" one of the +buffers with an asterisk. That will become the buffer you need to edit and +save after resolving the conflicts. +.... +------------------------------------------ +| | | +| | | +| | | +| LOCAL | REMOTE | +| | | +| | | +| | | +------------------------------------------ +.... +-- +* `layout = "LOCAL,BASE,REMOTE / MERGED + BASE,LOCAL + BASE,REMOTE"` ++ +-- +Three tabs will open: the first one is a copy of the default layout, while +the other two only show the differences between (`BASE` and `LOCAL`) and +(`BASE` and `REMOTE`) respectively. +.... +------------------------------------------ +| <TAB #1> | TAB #2 | TAB #3 | | +------------------------------------------ +| | | | +| LOCAL | BASE | REMOTE | +| | | | +------------------------------------------ +| | +| MERGED | +| | +------------------------------------------ +.... +.... +------------------------------------------ +| TAB #1 | <TAB #2> | TAB #3 | | +------------------------------------------ +| | | +| | | +| | | +| BASE | LOCAL | +| | | +| | | +| | | +------------------------------------------ +.... +.... +------------------------------------------ +| TAB #1 | TAB #2 | <TAB #3> | | +------------------------------------------ +| | | +| | | +| | | +| BASE | REMOTE | +| | | +| | | +| | | +------------------------------------------ +.... +-- +* `layout = "LOCAL,BASE,REMOTE / MERGED + BASE,LOCAL + BASE,REMOTE + (LOCAL/BASE/REMOTE),MERGED"` ++ +-- +Same as the previous example, but adds a fourth tab with the same +information as the first tab, with a different layout. +.... +--------------------------------------------- +| TAB #1 | TAB #2 | TAB #3 | <TAB #4> | +--------------------------------------------- +| LOCAL | | +|---------------------| | +| BASE | MERGED | +|---------------------| | +| REMOTE | | +--------------------------------------------- +.... +Note how in the third tab definition we need to use parenthesis to make `,` +have precedence over `/`. +-- + +Variants +^^^^^^^^ + +Instead of `--tool=vimdiff`, you can also use one of these other variants: + + * `--tool=gvimdiff`, to open gVim instead of Vim. + + * `--tool=nvimdiff`, to open Neovim instead of Vim. + +When using these variants, in order to specify a custom layout you will have to +set configuration variables `mergetool.gvimdiff.layout` and +`mergetool.nvimdiff.layout` instead of `mergetool.vimdiff.layout` + +In addition, for backwards compatibility with previous Git versions, you can +also append `1`, `2` or `3` to either `vimdiff` or any of the variants (ex: +`vimdiff3`, `nvimdiff1`, etc...) to use a predefined layout. +In other words, using `--tool=[g,n,]vimdiffx` is the same as using +`--tool=[g,n,]vimdiff` and setting configuration variable +`mergetool.[g,n,]vimdiff.layout` to... + + * `x=1`: `"@LOCAL, REMOTE"` + * `x=2`: `"LOCAL, MERGED, REMOTE"` + * `x=3`: `"MERGED"` + +Example: using `--tool=gvimdiff2` will open `gvim` with three columns (LOCAL, +MERGED and REMOTE). diff --git a/Documentation/rev-list-options.txt b/Documentation/rev-list-options.txt index fd4f4e2..195e74e 100644 --- a/Documentation/rev-list-options.txt +++ b/Documentation/rev-list-options.txt @@ -25,6 +25,11 @@ ordering and formatting options, such as `--reverse`. --after=<date>:: Show commits more recent than a specific date. +--since-as-filter=<date>:: + Show all commits more recent than a specific date. This visits + all commits in the range, rather than stopping at the first commit which + is older than a specific date. + --until=<date>:: --before=<date>:: Show commits older than a specific date. |