diff options
author | Junio C Hamano <gitster@pobox.com> | 2007-08-28 21:49:01 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2007-08-28 21:49:01 -0700 |
commit | 04b508f22b34e1b7461ab6414e1612547d87f08e (patch) | |
tree | 972cb02972d61d28c58252810f0ff03bb16a2c53 | |
parent | 0c783f66df9470ec789825ca3df8fb2922c3c8bd (diff) | |
parent | 8a1d076e21810f5bc7e9ef10d84f7ca9637b89af (diff) | |
download | git-04b508f22b34e1b7461ab6414e1612547d87f08e.tar.gz git-04b508f22b34e1b7461ab6414e1612547d87f08e.tar.xz |
Merge branch 'jc/logsemantics'
* jc/logsemantics:
"format-patch --root rev" is the way to show everything.
Porcelain level "log" family should recurse when diffing.
-rw-r--r-- | Documentation/git-format-patch.txt | 29 | ||||
-rw-r--r-- | Documentation/git-log.txt | 2 | ||||
-rw-r--r-- | Documentation/user-manual.txt | 2 | ||||
-rw-r--r-- | builtin-log.c | 16 |
4 files changed, 35 insertions, 14 deletions
diff --git a/Documentation/git-format-patch.txt b/Documentation/git-format-patch.txt index c514fdd93..5e6d5373a 100644 --- a/Documentation/git-format-patch.txt +++ b/Documentation/git-format-patch.txt @@ -16,21 +16,32 @@ SYNOPSIS [--in-reply-to=Message-Id] [--suffix=.<sfx>] [--ignore-if-in-upstream] [--subject-prefix=Subject-Prefix] - <since>[..<until>] + [ <since> | <revision range> ] 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. -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 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 first line of the commit message (massaged for pathname safety) as 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 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:: The same as the previous one. Additionally, it detects and handles renames and complete rewrites intelligently to diff --git a/Documentation/git-log.txt b/Documentation/git-log.txt index 1e6dbd93b..5ec547cc0 100644 --- a/Documentation/git-log.txt +++ b/Documentation/git-log.txt @@ -96,7 +96,7 @@ git log --since="2 weeks ago" \-- gitk:: The "--" is necessary to avoid confusion with the *branch* named '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 in the "release" branch, along with the list of paths diff --git a/Documentation/user-manual.txt b/Documentation/user-manual.txt index 06ab79fbd..35298e626 100644 --- a/Documentation/user-manual.txt +++ b/Documentation/user-manual.txt @@ -921,7 +921,7 @@ file such that it contained the given content either before or after the 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` ------------------------------------------------- diff --git a/builtin-log.c b/builtin-log.c index 13bae3110..fa81c2592 100644 --- a/builtin-log.c +++ b/builtin-log.c @@ -55,6 +55,7 @@ static void cmd_log_init(int argc, const char **argv, const char *prefix, rev->abbrev = DEFAULT_ABBREV; rev->commit_format = CMIT_FMT_DEFAULT; rev->verbose_header = 1; + rev->diffopt.recursive = 1; rev->show_root_diff = default_show_root; rev->subject_prefix = fmt_patch_subject_prefix; 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); init_revisions(&rev, prefix); rev.diff = 1; - rev.diffopt.recursive = 1; rev.simplify_history = 0; cmd_log_init(argc, argv, prefix, &rev); 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); init_revisions(&rev, prefix); rev.diff = 1; - rev.diffopt.recursive = 1; rev.combine_merges = 1; rev.dense_combined_merges = 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.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; 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. */ } |