From a76cb0ddee6992aaa65bee5ee4138f655892300d Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 13 Aug 2008 20:04:10 +0000 Subject: [PATCH] Autogenerated HTML docs for v1.6.0-rc3 --- RelNotes-1.6.0.txt | 4 +- git-log.html | 177 ++++++++++++++++++++++++++++---- git-rev-list.html | 233 ++++++++++++++++++++++++++++++------------- gitattributes.html | 34 ++++++- gitattributes.txt | 15 ++- rev-list-options.txt | 155 ++++++++++++++++++++++++---- 6 files changed, 502 insertions(+), 116 deletions(-) diff --git a/RelNotes-1.6.0.txt b/RelNotes-1.6.0.txt index e3c0c1d88..9e2e417ef 100644 --- a/RelNotes-1.6.0.txt +++ b/RelNotes-1.6.0.txt @@ -178,7 +178,7 @@ Updates since v1.5.6 * git-diff --check now checks leftover merge conflict markers. * "git-diff -p" learned to grab a better hunk header lines in - Pascal/Delphi and Ruby source files, and also pays attention to + BibTex, Pascal/Delphi, and Ruby files and also pays attention to chapter and part boundary in TeX documents. * When remote side used to have branch 'foo' and git-fetch finds that now @@ -254,6 +254,6 @@ this release, unless otherwise noted. --- exec >/var/tmp/1 -O=v1.6.0-rc2-21-g0bb3a0b +O=v1.6.0-rc3 echo O=$(git describe refs/heads/master) git shortlog --no-merges $O..refs/heads/master ^refs/heads/maint diff --git a/git-log.html b/git-log.html index 688438646..3cadd9006 100644 --- a/git-log.html +++ b/git-log.html @@ -950,7 +950,8 @@ format, often found in E-mail messages.

- Print the parents of the commit. + Print the parents of the commit. Also enables parent + rewriting, see History Simplification below.

@@ -958,7 +959,8 @@ format, often found in E-mail messages.

- Print the children of the commit. + Print the children of the commit. Also enables parent + rewriting, see History Simplification below.

@@ -1163,18 +1165,6 @@ limiting may be applied.

---full-history -
-
-

- Show also parts of history irrelevant to current state of a given - path. This turns off history simplification, which removed merges - which didn't change anything at all at some child. It will still actually - simplify away merges that didn't change anything at all into either - child. -

-
-
--no-merges
@@ -1273,21 +1263,166 @@ See also git-reflog(1). not shown.

+ +

History Simplification

+

When optional paths are given, git-rev-list simplifies commits with +various strategies, according to the options you have selected.

+

Suppose you specified foo as the <paths>. We shall call commits +that modify foo !TREESAME, and the rest TREESAME. (In a diff +filtered for foo, they look different and equal, respectively.)

+

In the following, we will always refer to the same example history to +illustrate the differences between simplification settings. We assume +that you are filtering for a file foo in this commit graph:

+
+
+
          .-A---M---N---O---P
+         /     /   /   /   /
+        I     B   C   D   E
+         \   /   /   /   /
+          `-------------'
+
+

The horizontal line of history A--P is taken to be the first parent of +each merge. The commits are:

+
+

rev-list walks backwards through history, including or excluding +commits based on whether --full-history and/or parent rewriting +(via --parents or --children) are used. The following settings +are available.

+
+
+Default mode +
+
+

+ Commits are included if they are not TREESAME to any parent + (though this can be changed, see --sparse below). If the + commit was a merge, and it was TREESAME to one parent, follow + only that parent. (Even if there are several TREESAME + parents, follow only one of them.) Otherwise, follow all + parents. +

+

This results in:

+
+
+
          .-A---N---O
+         /         /
+        I---------D
+
+

Note how the rule to only follow the TREESAME parent, if one is +available, removed B from consideration entirely. C was +considered via N, but is TREESAME. Root commits are compared to an +empty tree, so I is !TREESAME.

+

Parent/child relations are only visible with --parents, but that does +not affect the commits selected in default mode, so we have shown the +parent lines.

+
+
+--full-history without parent rewriting +
+
+

+ This mode differs from the default in one point: always follow + all parents of a merge, even if it is TREESAME to one of them. + Even if more than one side of the merge has commits that are + included, this does not imply that the merge itself is! In + the example, we get +

+
+
+
        I  A  B  N  D  O
+
+

P and M were excluded because they are TREESAME to a parent. E, +C and B were all walked, but only B was !TREESAME, so the others +do not appear.

+

Note that without parent rewriting, it is not really possible to talk +about the parent/child relationships between the commits, so we show +them disconnected.

+
+
+--full-history with parent rewriting +
+
+

+ Ordinary commits are only included if they are !TREESAME + (though this can be changed, see --sparse below). +

+

Merges are always included. However, their parent list is rewritten: +Along each parent, prune away commits that are not included +themselves. This results in

+
+
+
          .-A---M---N---O---P
+         /     /   /   /   /
+        I     B   /   D   /
+         \   /   /   /   /
+          `-------------'
+
+

Compare to --full-history without rewriting above. Note that E +was pruned away because it is TREESAME, but the parent list of P was +rewritten to contain E's parent I. The same happened for C and +N. Note also that P was included despite being TREESAME.

+
+
+

In addition to the above settings, you can change whether TREESAME +affects inclusion:

+
--dense
+
+

+ Commits that are walked are included if they are not TREESAME + to any parent. +

+
--sparse

-When optional paths are given, the default behaviour (--dense) is to -only output commits that changes at least one of them, and also ignore -merges that do not touch the given paths. + All commits that are walked are included.

-

Use the --sparse flag to makes the command output all eligible commits -(still subject to count and age limitation), but apply merge -simplification nevertheless.

+

Note that without --full-history, this still simplifies merges: if +one of the parents is TREESAME, we follow only that one, so the other +sides of the merge are never walked.

Commit Ordering

@@ -2031,7 +2166,7 @@ reversible operation.

diff --git a/git-rev-list.html b/git-rev-list.html index c0915c490..3955a0b18 100644 --- a/git-rev-list.html +++ b/git-rev-list.html @@ -481,7 +481,8 @@ format, often found in E-mail messages.

- Print the parents of the commit. + Print the parents of the commit. Also enables parent + rewriting, see History Simplification below.

@@ -489,7 +490,8 @@ format, often found in E-mail messages.

- Print the children of the commit. + Print the children of the commit. Also enables parent + rewriting, see History Simplification below.

@@ -546,51 +548,6 @@ format, often found in E-mail messages.

--date-order option may also be specified.

-

Diff Formatting

-

Below are listed options that control the formatting of diff output. -Some of them are specific to git-rev-list(1), however other diff -options may be given. See git-diff-files(1) for more options.

-
-
--c -
-
-

- This flag changes the way a merge commit is displayed. It shows - the differences from each of the parents to the merge result - simultaneously instead of showing pairwise diff between a parent - and the result one at a time. Furthermore, it lists only files - which were modified from all parents. -

-
-
---cc -
-
-

- This flag implies the -c options and further compresses the - patch output by omitting uninteresting hunks whose contents in - the parents have only two variants and the merge result picks - one of them without modification. -

-
-
--r -
-
-

- Show recursive diffs. -

-
-
--t -
-
-

- Show the tree objects in the diff output. This implies -r. -

-
-

Commit Limiting

Besides specifying a range of commits that should be listed using the special notations explained in the description, additional commit @@ -713,18 +670,6 @@ limiting may be applied.

---full-history -
-
-

- Show also parts of history irrelevant to current state of a given - path. This turns off history simplification, which removed merges - which didn't change anything at all at some child. It will still actually - simplify away merges that didn't change anything at all into either - child. -

-
-
--no-merges
@@ -844,22 +789,170 @@ See also git-reflog(1). not shown.

+ +

History Simplification

+

When optional paths are given, git-rev-list simplifies commits with +various strategies, according to the options you have selected.

+

Suppose you specified foo as the <paths>. We shall call commits +that modify foo !TREESAME, and the rest TREESAME. (In a diff +filtered for foo, they look different and equal, respectively.)

+

In the following, we will always refer to the same example history to +illustrate the differences between simplification settings. We assume +that you are filtering for a file foo in this commit graph:

+
+
+
          .-A---M---N---O---P
+         /     /   /   /   /
+        I     B   C   D   E
+         \   /   /   /   /
+          `-------------'
+
+

The horizontal line of history A--P is taken to be the first parent of +each merge. The commits are:

+
+

rev-list walks backwards through history, including or excluding +commits based on whether --full-history and/or parent rewriting +(via --parents or --children) are used. The following settings +are available.

+
+
+Default mode +
+
+

+ Commits are included if they are not TREESAME to any parent + (though this can be changed, see --sparse below). If the + commit was a merge, and it was TREESAME to one parent, follow + only that parent. (Even if there are several TREESAME + parents, follow only one of them.) Otherwise, follow all + parents. +

+

This results in:

+
+
+
          .-A---N---O
+         /         /
+        I---------D
+
+

Note how the rule to only follow the TREESAME parent, if one is +available, removed B from consideration entirely. C was +considered via N, but is TREESAME. Root commits are compared to an +empty tree, so I is !TREESAME.

+

Parent/child relations are only visible with --parents, but that does +not affect the commits selected in default mode, so we have shown the +parent lines.

+
+
+--full-history without parent rewriting +
+
+

+ This mode differs from the default in one point: always follow + all parents of a merge, even if it is TREESAME to one of them. + Even if more than one side of the merge has commits that are + included, this does not imply that the merge itself is! In + the example, we get +

+
+
+
        I  A  B  N  D  O
+
+

P and M were excluded because they are TREESAME to a parent. E, +C and B were all walked, but only B was !TREESAME, so the others +do not appear.

+

Note that without parent rewriting, it is not really possible to talk +about the parent/child relationships between the commits, so we show +them disconnected.

+
+
+--full-history with parent rewriting +
+
+

+ Ordinary commits are only included if they are !TREESAME + (though this can be changed, see --sparse below). +

+

Merges are always included. However, their parent list is rewritten: +Along each parent, prune away commits that are not included +themselves. This results in

+
+
+
          .-A---M---N---O---P
+         /     /   /   /   /
+        I     B   /   D   /
+         \   /   /   /   /
+          `-------------'
+
+

Compare to --full-history without rewriting above. Note that E +was pruned away because it is TREESAME, but the parent list of P was +rewritten to contain E's parent I. The same happened for C and +N. Note also that P was included despite being TREESAME.

+
+
+

In addition to the above settings, you can change whether TREESAME +affects inclusion:

+
--dense
+
+

+ Commits that are walked are included if they are not TREESAME + to any parent. +

+
--sparse

-When optional paths are given, the default behaviour (--dense) is to -only output commits that changes at least one of them, and also ignore -merges that do not touch the given paths. + All commits that are walked are included.

-

Use the --sparse flag to makes the command output all eligible commits -(still subject to count and age limitation), but apply merge -simplification nevertheless.

+

Note that without --full-history, this still simplifies merges: if +one of the parents is TREESAME, we follow only that one, so the other +sides of the merge are never walked.

+
+

Bisection Helpers

+
--bisect
@@ -868,6 +961,8 @@ simplification nevertheless.

Limit output to the one commit object which is roughly halfway between the included and excluded commits. Thus, if

+ +
        $ git-rev-list --bisect foo ^bar ^baz
@@ -882,7 +977,7 @@ the included and excluded commits. Thus, if introduces a regression is thus reduced to a binary search: repeatedly generate and test new 'midpoint's until the commit chain is of length one.

- +
--bisect-vars
@@ -909,14 +1004,14 @@ commits, ordered by their distance to the included and excluded commits. The farthest from them is displayed first. (This is the only one displayed by --bisect.)

+ +

This is useful because it makes it easy to choose a good commit to test when you want to avoid to test some of them for some reason (they may not compile for example).

This option can be used along with --bisect-vars, in this case, after all the sorted commit objects, there will be the same text as if --bisect-vars had been used alone.

- -

Commit Ordering

By default, the commits are shown in reverse chronological order.

@@ -1346,7 +1441,7 @@ and the git-list <git@vger.kernel.org>.

diff --git a/gitattributes.html b/gitattributes.html index 67924d0b9..576ee39c1 100644 --- a/gitattributes.html +++ b/gitattributes.html @@ -629,9 +629,35 @@ backslash, and zero or more occurrences of sub followed by

There are a few built-in patterns to make this easier, and tex is one of them, so you do not have to write the above in your configuration file (you still need to enable this with the -attribute mechanism, via .gitattributes). Another built-in -pattern is defined for java that defines a pattern suitable -for program text in Java language.

+attribute mechanism, via .gitattributes). The following built in +patterns are available:

+

Performing a three-way merge

The attribute merge affects how three versions of a file is merged when a file-level merge is necessary during git merge, @@ -874,7 +900,7 @@ frotz unspecified

diff --git a/gitattributes.txt b/gitattributes.txt index d7b41142d..db16b0ca5 100644 --- a/gitattributes.txt +++ b/gitattributes.txt @@ -307,9 +307,18 @@ backslash, and zero or more occurrences of `sub` followed by There are a few built-in patterns to make this easier, and `tex` is one of them, so you do not have to write the above in your configuration file (you still need to enable this with the -attribute mechanism, via `.gitattributes`). Another built-in -pattern is defined for `java` that defines a pattern suitable -for program text in Java language. +attribute mechanism, via `.gitattributes`). The following built in +patterns are available: + +- `bibtex` suitable for files with BibTeX coded references. + +- `java` suitable for source code in the Java lanugage. + +- `pascal` suitable for source code in the Pascal/Delphi language. + +- `ruby` suitable for source code in the Ruby language. + +- `tex` suitable for source code for LaTeX documents. Performing a three-way merge diff --git a/rev-list-options.txt b/rev-list-options.txt index 1d857559e..735cf07b2 100644 --- a/rev-list-options.txt +++ b/rev-list-options.txt @@ -43,11 +43,13 @@ endif::git-rev-list[] --parents:: - Print the parents of the commit. + Print the parents of the commit. Also enables parent + rewriting, see 'History Simplification' below. --children:: - Print the children of the commit. + Print the children of the commit. Also enables parent + rewriting, see 'History Simplification' below. ifdef::git-rev-list[] --timestamp:: @@ -94,6 +96,7 @@ you would get an output like this: This implies the '--topo-order' option by default, but the '--date-order' option may also be specified. +ifndef::git-rev-list[] Diff Formatting ~~~~~~~~~~~~~~~ @@ -123,6 +126,7 @@ options may be given. See linkgit:git-diff-files[1] for more options. -t:: Show the tree objects in the diff output. This implies '-r'. +endif::git-rev-list[] Commit Limiting ~~~~~~~~~~~~~~~ @@ -191,14 +195,6 @@ endif::git-rev-list[] Stop when a given path disappears from the tree. ---full-history:: - - Show also parts of history irrelevant to current state of a given - path. This turns off history simplification, which removed merges - which didn't change anything at all at some child. It will still actually - simplify away merges that didn't change anything at all into either - child. - --no-merges:: Do not print commits with more than one parent. @@ -280,18 +276,144 @@ See also linkgit:git-reflog[1]. Output uninteresting commits at the boundary, which are usually not shown. +-- + +History Simplification +~~~~~~~~~~~~~~~~~~~~~~ + +When optional paths are given, 'git-rev-list' simplifies commits with +various strategies, according to the options you have selected. + +Suppose you specified `foo` as the . We shall call commits +that modify `foo` !TREESAME, and the rest TREESAME. (In a diff +filtered for `foo`, they look different and equal, respectively.) + +In the following, we will always refer to the same example history to +illustrate the differences between simplification settings. We assume +that you are filtering for a file `foo` in this commit graph: +----------------------------------------------------------------------- + .-A---M---N---O---P + / / / / / + I B C D E + \ / / / / + `-------------' +----------------------------------------------------------------------- +The horizontal line of history A--P is taken to be the first parent of +each merge. The commits are: + +* `I` is the initial commit, in which `foo` exists with contents + "asdf", and a file `quux` exists with contents "quux". Initial + commits are compared to an empty tree, so `I` is !TREESAME. + +* In `A`, `foo` contains just "foo". + +* `B` contains the same change as `A`. Its merge `M` is trivial and + hence TREESAME to all parents. + +* `C` does not change `foo`, but its merge `N` changes it to "foobar", + so it is not TREESAME to any parent. + +* `D` sets `foo` to "baz". Its merge `O` combines the strings from + `N` and `D` to "foobarbaz"; i.e., it is not TREESAME to any parent. + +* `E` changes `quux` to "xyzzy", and its merge `P` combines the + strings to "quux xyzzy". Despite appearing interesting, `P` is + TREESAME to all parents. + +'rev-list' walks backwards through history, including or excluding +commits based on whether '\--full-history' and/or parent rewriting +(via '\--parents' or '\--children') are used. The following settings +are available. + +Default mode:: + + Commits are included if they are not TREESAME to any parent + (though this can be changed, see '\--sparse' below). If the + commit was a merge, and it was TREESAME to one parent, follow + only that parent. (Even if there are several TREESAME + parents, follow only one of them.) Otherwise, follow all + parents. ++ +This results in: ++ +----------------------------------------------------------------------- + .-A---N---O + / / + I---------D +----------------------------------------------------------------------- ++ +Note how the rule to only follow the TREESAME parent, if one is +available, removed `B` from consideration entirely. `C` was +considered via `N`, but is TREESAME. Root commits are compared to an +empty tree, so `I` is !TREESAME. ++ +Parent/child relations are only visible with --parents, but that does +not affect the commits selected in default mode, so we have shown the +parent lines. + +--full-history without parent rewriting:: + + This mode differs from the default in one point: always follow + all parents of a merge, even if it is TREESAME to one of them. + Even if more than one side of the merge has commits that are + included, this does not imply that the merge itself is! In + the example, we get ++ +----------------------------------------------------------------------- + I A B N D O +----------------------------------------------------------------------- ++ +`P` and `M` were excluded because they are TREESAME to a parent. `E`, +`C` and `B` were all walked, but only `B` was !TREESAME, so the others +do not appear. ++ +Note that without parent rewriting, it is not really possible to talk +about the parent/child relationships between the commits, so we show +them disconnected. + +--full-history with parent rewriting:: + + Ordinary commits are only included if they are !TREESAME + (though this can be changed, see '\--sparse' below). ++ +Merges are always included. However, their parent list is rewritten: +Along each parent, prune away commits that are not included +themselves. This results in ++ +----------------------------------------------------------------------- + .-A---M---N---O---P + / / / / / + I B / D / + \ / / / / + `-------------' +----------------------------------------------------------------------- ++ +Compare to '\--full-history' without rewriting above. Note that `E` +was pruned away because it is TREESAME, but the parent list of P was +rewritten to contain `E`'s parent `I`. The same happened for `C` and +`N`. Note also that `P` was included despite being TREESAME. + +In addition to the above settings, you can change whether TREESAME +affects inclusion: + --dense:: + + Commits that are walked are included if they are not TREESAME + to any parent. + --sparse:: -When optional paths are given, the default behaviour ('--dense') is to -only output commits that changes at least one of them, and also ignore -merges that do not touch the given paths. + All commits that are walked are included. ++ +Note that without '\--full-history', this still simplifies merges: if +one of the parents is TREESAME, we follow only that one, so the other +sides of the merge are never walked. -Use the '--sparse' flag to makes the command output all eligible commits -(still subject to count and age limitation), but apply merge -simplification nevertheless. ifdef::git-rev-list[] +Bisection Helpers +~~~~~~~~~~~~~~~~~ + --bisect:: Limit output to the one commit object which is roughly halfway between @@ -341,7 +463,6 @@ after all the sorted commit objects, there will be the same text as if `--bisect-vars` had been used alone. endif::git-rev-list[] --- Commit Ordering ~~~~~~~~~~~~~~~ -- 2.26.2