Merge branch 'jc/logsemantics'
* jc/logsemantics: "format-patch --root rev" is the way to show everything. Porcelain level "log" family should recurse when diffing.maint
commit
04b508f22b
|
@ -16,21 +16,32 @@ SYNOPSIS
|
||||||
[--in-reply-to=Message-Id] [--suffix=.<sfx>]
|
[--in-reply-to=Message-Id] [--suffix=.<sfx>]
|
||||||
[--ignore-if-in-upstream]
|
[--ignore-if-in-upstream]
|
||||||
[--subject-prefix=Subject-Prefix]
|
[--subject-prefix=Subject-Prefix]
|
||||||
<since>[..<until>]
|
[ <since> | <revision range> ]
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
Prepare each commit between <since> and <until> with its patch in
|
Prepare each commit with its patch in
|
||||||
one file per commit, formatted to resemble UNIX mailbox format.
|
one file per commit, formatted to resemble UNIX mailbox format.
|
||||||
If ..<until> is not specified, the head of the current working
|
|
||||||
tree is implied. For a more complete list of ways to spell
|
|
||||||
<since> and <until>, see "SPECIFYING REVISIONS" section in
|
|
||||||
gitlink:git-rev-parse[1].
|
|
||||||
|
|
||||||
The output of this command is convenient for e-mail submission or
|
The output of this command is convenient for e-mail submission or
|
||||||
for use with gitlink:git-am[1].
|
for use with gitlink:git-am[1].
|
||||||
|
|
||||||
|
There are two ways to specify which commits to operate on.
|
||||||
|
|
||||||
|
1. A single commit, <since>, specifies that the commits leading
|
||||||
|
to the tip of the current branch that are not in the history
|
||||||
|
that leads to the <since> to be output.
|
||||||
|
|
||||||
|
2. Generic <revision range> expression (see "SPECIFYING
|
||||||
|
REVISIONS" section in gitlink:git-rev-parse[1]) means the
|
||||||
|
commits in the specified range. A single commit, when
|
||||||
|
interpreted as a <revision range> expression, means
|
||||||
|
"everything that leads to that commit", but that is taken as
|
||||||
|
the special case above. If you want to format everything
|
||||||
|
since project inception to one commit, say "git format-patch
|
||||||
|
\--root <that-commit>", as showing the root commit as patch
|
||||||
|
requires \--root option anyway.
|
||||||
|
|
||||||
By default, each output file is numbered sequentially from 1, and uses the
|
By default, each output file is numbered sequentially from 1, and uses the
|
||||||
first line of the commit message (massaged for pathname safety) as
|
first line of the commit message (massaged for pathname safety) as
|
||||||
the filename. With the --numbered-files option, the output file names
|
the filename. With the --numbered-files option, the output file names
|
||||||
|
@ -153,6 +164,10 @@ git-format-patch origin::
|
||||||
not in the origin branch. For each commit a separate file
|
not in the origin branch. For each commit a separate file
|
||||||
is created in the current directory.
|
is created in the current directory.
|
||||||
|
|
||||||
|
git-format-patch \--root origin::
|
||||||
|
Extract all commits which that leads to 'origin' since the
|
||||||
|
inception of the project.
|
||||||
|
|
||||||
git-format-patch -M -B origin::
|
git-format-patch -M -B origin::
|
||||||
The same as the previous one. Additionally, it detects
|
The same as the previous one. Additionally, it detects
|
||||||
and handles renames and complete rewrites intelligently to
|
and handles renames and complete rewrites intelligently to
|
||||||
|
|
|
@ -96,7 +96,7 @@ git log --since="2 weeks ago" \-- gitk::
|
||||||
The "--" is necessary to avoid confusion with the *branch* named
|
The "--" is necessary to avoid confusion with the *branch* named
|
||||||
'gitk'
|
'gitk'
|
||||||
|
|
||||||
git log -r --name-status release..test::
|
git log --name-status release..test::
|
||||||
|
|
||||||
Show the commits that are in the "test" branch but not yet
|
Show the commits that are in the "test" branch but not yet
|
||||||
in the "release" branch, along with the list of paths
|
in the "release" branch, along with the list of paths
|
||||||
|
|
|
@ -921,7 +921,7 @@ file such that it contained the given content either before or after the
|
||||||
commit. You can find out with this:
|
commit. You can find out with this:
|
||||||
|
|
||||||
-------------------------------------------------
|
-------------------------------------------------
|
||||||
$ git log --raw -r --abbrev=40 --pretty=oneline -- filename |
|
$ git log --raw --abbrev=40 --pretty=oneline -- filename |
|
||||||
grep -B 1 `git hash-object filename`
|
grep -B 1 `git hash-object filename`
|
||||||
-------------------------------------------------
|
-------------------------------------------------
|
||||||
|
|
||||||
|
|
|
@ -55,6 +55,7 @@ static void cmd_log_init(int argc, const char **argv, const char *prefix,
|
||||||
rev->abbrev = DEFAULT_ABBREV;
|
rev->abbrev = DEFAULT_ABBREV;
|
||||||
rev->commit_format = CMIT_FMT_DEFAULT;
|
rev->commit_format = CMIT_FMT_DEFAULT;
|
||||||
rev->verbose_header = 1;
|
rev->verbose_header = 1;
|
||||||
|
rev->diffopt.recursive = 1;
|
||||||
rev->show_root_diff = default_show_root;
|
rev->show_root_diff = default_show_root;
|
||||||
rev->subject_prefix = fmt_patch_subject_prefix;
|
rev->subject_prefix = fmt_patch_subject_prefix;
|
||||||
argc = setup_revisions(argc, argv, rev, "HEAD");
|
argc = setup_revisions(argc, argv, rev, "HEAD");
|
||||||
|
@ -116,7 +117,6 @@ int cmd_whatchanged(int argc, const char **argv, const char *prefix)
|
||||||
git_config(git_log_config);
|
git_config(git_log_config);
|
||||||
init_revisions(&rev, prefix);
|
init_revisions(&rev, prefix);
|
||||||
rev.diff = 1;
|
rev.diff = 1;
|
||||||
rev.diffopt.recursive = 1;
|
|
||||||
rev.simplify_history = 0;
|
rev.simplify_history = 0;
|
||||||
cmd_log_init(argc, argv, prefix, &rev);
|
cmd_log_init(argc, argv, prefix, &rev);
|
||||||
if (!rev.diffopt.output_format)
|
if (!rev.diffopt.output_format)
|
||||||
|
@ -165,7 +165,6 @@ int cmd_show(int argc, const char **argv, const char *prefix)
|
||||||
git_config(git_log_config);
|
git_config(git_log_config);
|
||||||
init_revisions(&rev, prefix);
|
init_revisions(&rev, prefix);
|
||||||
rev.diff = 1;
|
rev.diff = 1;
|
||||||
rev.diffopt.recursive = 1;
|
|
||||||
rev.combine_merges = 1;
|
rev.combine_merges = 1;
|
||||||
rev.dense_combined_merges = 1;
|
rev.dense_combined_merges = 1;
|
||||||
rev.always_show_header = 1;
|
rev.always_show_header = 1;
|
||||||
|
@ -586,12 +585,19 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rev.pending.nr == 1) {
|
if (rev.pending.nr == 1) {
|
||||||
if (rev.max_count < 0) {
|
if (rev.max_count < 0 && !rev.show_root_diff) {
|
||||||
|
/*
|
||||||
|
* This is traditional behaviour of "git format-patch
|
||||||
|
* origin" that prepares what the origin side still
|
||||||
|
* does not have.
|
||||||
|
*/
|
||||||
rev.pending.objects[0].item->flags |= UNINTERESTING;
|
rev.pending.objects[0].item->flags |= UNINTERESTING;
|
||||||
add_head(&rev);
|
add_head(&rev);
|
||||||
}
|
}
|
||||||
/* Otherwise, it is "format-patch -22 HEAD", and
|
/*
|
||||||
* get_revision() would return only the specified count.
|
* Otherwise, it is "format-patch -22 HEAD", and/or
|
||||||
|
* "format-patch --root HEAD". The user wants
|
||||||
|
* get_revision() to do the usual traversal.
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue