From: Junio C Hamano
+ If some files could not be added because of errors indexing
+ them, do not abort the operation, but continue adding the
+ others. The command shall still exit with non-zero status.
+DESCRIPTION
The graph API is used to draw a text-based representation of the commit +history. The API generates the graph in a line-by-line fashion.
+Core functions:
++graph_init() creates a new struct git_graph +
++graph_release() destroys a struct git_graph, and frees the memory + associated with it. +
++graph_update() moves the graph to a new commit. +
++graph_next_line() outputs the next line of the graph into a strbuf. It + does not add a terminating newline. +
++graph_padding_line() outputs a line of vertical padding in the graph. It + is similar to graph_next_line(), but is guaranteed to never print the line + containing the current commit. Where graph_next_line() would print the + commit line next, graph_padding_line() prints a line that simply extends + all branch lines downwards one row, leaving their positions unchanged. +
++graph_is_commit_finished() determines if the graph has output all lines + necessary for the current commit. If graph_update() is called before all + lines for the current commit have been printed, the next call to + graph_next_line() will output an ellipsis, to indicate that a portion of + the graph was omitted. +
+The following utility functions are wrappers around graph_next_line() and +graph_is_commit_finished(). They always print the output to stdout. +They can all be called with a NULL graph argument, in which case no graph +output will be printed.
++graph_show_commit() calls graph_next_line() until it returns non-zero. + This prints all graph lines up to, and including, the line containing this + commit. Output is printed to stdout. The last line printed does not contain + a terminating newline. This should not be called if the commit line has + already been printed, or it will loop forever. +
++graph_show_oneline() calls graph_next_line() and prints the result to + stdout. The line printed does not contain a terminating newline. +
++graph_show_padding() calls graph_padding_line() and prints the result to + stdout. The line printed does not contain a terminating newline. +
++graph_show_remainder() calls graph_next_line() until + graph_is_commit_finished() returns non-zero. Output is printed to stdout. + The last line printed does not contain a terminating newline. Returns 1 if + output was printed, and 0 if no output was necessary. +
++graph_show_strbuf() prints the specified strbuf to stdout, prefixing all + lines but the first with a graph line. The caller is responsible for + ensuring graph output for the first line has already been printed to stdout. + (This can be done with graph_show_commit() or graph_show_oneline().) If + a NULL graph is supplied, the strbuf is printed as-is. +
++graph_show_commit_msg() is similar to graph_show_strbuf(), but it also + prints the remainder of the graph, if more lines are needed after the strbuf + ends. It is better than directly calling graph_show_strbuf() followed by + graph_show_remainder() since it properly handles buffers that do not end in + a terminating newline. The output printed by graph_show_commit_msg() will + end in a newline if and only if the strbuf ends in a newline. +
+struct git_graph is an opaque data type used to store the current graph +state.
++Create a struct git_graph by calling graph_init(). When using the + revision walking API, this is done automatically by setup_revisions() if + the —graph option is supplied. +
++Use the revision walking API to walk through a group of contiguous commits. + The get_revision() function automatically calls graph_update() each time + it is invoked. +
++For each commit, call graph_next_line() repeatedly, until + graph_is_commit_finished() returns non-zero. Each call go + graph_next_line() will output a single line of the graph. The resulting + lines will not contain any newlines. graph_next_line() returns 1 if the + resulting line contains the current commit, or 0 if this is merely a line + needed to adjust the graph before or after the current commit. This return + value can be used to determine where to print the commit summary information + alongside the graph output. +
++graph_update() must be called with commits in topological order. It should + not be called on a commit if it has already been invoked with an ancestor of + that commit, or the graph output will be incorrect. +
++graph_update() must be called on a contiguous group of commits. If + graph_update() is called on a particular commit, it should later be called + on all parents of that commit. Parents must not be skipped, or the graph + output will appear incorrect. +
+graph_update() may be used on a pruned set of commits only if the parent list +has been rewritten so as to include only ancestors from the pruned set.
++The graph API does not currently support reverse commit ordering. In + order to implement reverse ordering, the graphing API needs an + (efficient) mechanism to find the children of a commit. +
+struct commit *commit; +struct git_graph *graph = graph_init(); + +while ((commit = get_revision(opts)) != NULL) { + graph_update(graph, commit); + while (!graph_is_commit_finished(graph)) + { + struct strbuf sb; + int is_commit_line; + + strbuf_init(&sb, 0); + is_commit_line = graph_next_line(graph, &sb); + fputs(sb.buf, stdout); + + if (is_commit_line) + log_tree_commit(opts, commit); + else + putchar(opts->diffopt.line_termination); + } +} + +graph_release(graph);+
The following is an example of the output from the graph API. This output does +not include any commit summary information—callers are responsible for +outputting that information, if desired.
+* +* +M +|\ +* | +| | * +| \ \ +| \ \ +M-. \ \ +|\ \ \ \ +| | * | | +| | | | | * +| | | | | * +| | | | | M +| | | | | |\ +| | | | | | * +| * | | | | | +| | | | | M \ +| | | | | |\ | +| | | | * | | | +| | | | * | | | +* | | | | | | | +| |/ / / / / / +|/| / / / / / +* | | | | | | +|/ / / / / / +* | | | | | +| | | | | * +| | | | |/ +| | | | *+
diff --git a/git-add.txt b/git-add.txt
index e0e730b6c..bb4abe26b 100644
--- a/git-add.txt
+++ b/git-add.txt
@@ -9,7 +9,7 @@ SYNOPSIS
--------
[verse]
'git-add' [-n] [-v] [-f] [--interactive | -i] [--patch | -p] [-u] [--refresh]
- [--]
Specify the location of the CVS checkout to use for the export. This option does not require GIT_DIR to be set before execution if the - current directory is within a git repository. + current directory is within a git repository. The default is the + value of cvsexportcommit.cvsdir.
+ The default location of the CVS checkout to use for the export. +
+This serves git-archive --remote. It is disabled by default, but a repository can enable it by setting - daemon.uploadarchive configuration item to true. + daemon.uploadarch configuration item to true.
[daemon] uploadpack = false - uploadarchive = true+ uploadarch = true
+ Draw a text-based graphical representation of the commit history + on the left hand side of the output. This may cause extra lines + to be printed in between commits, in order for the graph history + to be drawn properly. +
+This implies the --topo-order option by default, but the +--date-order option may also be specified.
+Below are listed options that control the formatting of diff output. @@ -1929,7 +1942,7 @@ reversible operation.
diff --git a/git-rev-list.html b/git-rev-list.html index d05c4c405..7a19b6dda 100644 --- a/git-rev-list.html +++ b/git-rev-list.html @@ -475,6 +475,19 @@ format, often found in E-mail messages.
-xxxxxxx... 1st on a +
+
+ Draw a text-based graphical representation of the commit history + on the left hand side of the output. This may cause extra lines + to be printed in between commits, in order for the graph history + to be drawn properly. +
+This implies the --topo-order option by default, but the +--date-order option may also be specified.
+Below are listed options that control the formatting of diff output. @@ -1211,7 +1224,7 @@ and the git-list <git@vger.kernel.org>.
diff --git a/git-rev-parse.html b/git-rev-parse.html index b3f7a956b..527597bdb 100644 --- a/git-rev-parse.html +++ b/git-rev-parse.html @@ -851,6 +851,40 @@ C? option C with an optional argument" eval `echo "$OPTS_SPEC" | git-rev-parse --parseopt -- "$@" || echo exit $?` +
+
+Print the object name of the current commit: +
+$ git rev-parse --verify HEAD+
+Print the commit object name from the revision in the $REV shell variable: +
+$ git rev-parse --verify $REV+
This will error out if $REV is empty or not a valid revision.
++Same as above: +
+$ git rev-parse --default master --verify $REV+
but if $REV is empty, the commit object name from master will be printed.
+Written by Linus Torvalds <torvalds@osdl.org> . @@ -866,7 +900,7 @@ Junio C Hamano <junkio@cox.net> and Pierre Habouzit <madcoder@debian.or
diff --git a/git-rev-parse.txt b/git-rev-parse.txt index b6b2fe92a..69599ffb6 100644 --- a/git-rev-parse.txt +++ b/git-rev-parse.txt @@ -378,6 +378,31 @@ C? option C with an optional argument" eval `echo "$OPTS_SPEC" | git-rev-parse --parseopt -- "$@" || echo exit $?` ------------ +EXAMPLES +-------- + +* Print the object name of the current commit: ++ +------------ +$ git rev-parse --verify HEAD +------------ + +* Print the commit object name from the revision in the $REV shell variable: ++ +------------ +$ git rev-parse --verify $REV +------------ ++ +This will error out if $REV is empty or not a valid revision. + +* Same as above: ++ +------------ +$ git rev-parse --default master --verify $REV +------------ ++ +but if $REV is empty, the commit object name from master will be printed. + Author ------ diff --git a/git-svn.html b/git-svn.html index 2db4ab83d..6cebaf7ee 100644 --- a/git-svn.html +++ b/git-svn.html @@ -625,7 +625,8 @@ environment). This command has the same behaviour.
Recursively finds the svn:ignore property on directories and creates matching .gitignore files. The resulting files are staged to - be committed, but are not committed. + be committed, but are not committed. Use -r/--revision to refer to a + specfic revision.
+ Lists the properties stored in the Subversion repository about a + given file or directory. Use -r/--revision to refer to a specific + Subversion revision. +
++
+
+ Gets the Subversion property given as the first argument, for a + file. A specific revision can be specified with -r/--revision. +
++
+
+ Shows the Subversion externals. Use -r/--revision to specify a + specific revision. +
+@@ -1120,7 +1149,7 @@ should be manually entered with a text-editor or using
diff --git a/git-svn.txt b/git-svn.txt index c6b56b4ef..3eae1ebb7 100644 --- a/git-svn.txt +++ b/git-svn.txt @@ -196,10 +196,10 @@ Any other arguments are passed directly to `git log' independently of git-svn functions. 'create-ignore':: - Recursively finds the svn:ignore property on directories and creates matching .gitignore files. The resulting files are staged to - be committed, but are not committed. + be committed, but are not committed. Use -r/--revision to refer to a + specfic revision. 'show-ignore':: Recursively finds and lists the svn:ignore property on @@ -223,6 +223,19 @@ Any other arguments are passed directly to `git log' argument. Use the --url option to output only the value of the 'URL:' field. +'proplist':: + Lists the properties stored in the Subversion repository about a + given file or directory. Use -r/--revision to refer to a specific + Subversion revision. + +'propget':: + Gets the Subversion property given as the first argument, for a + file. A specific revision can be specified with -r/--revision. + +'show-externals':: + Shows the Subversion externals. Use -r/--revision to specify a + specific revision. + -- OPTIONS diff --git a/rev-list-options.txt b/rev-list-options.txt index 2648a5508..ce6a1017a 100644 --- a/rev-list-options.txt +++ b/rev-list-options.txt @@ -75,6 +75,16 @@ you would get an output line this: -xxxxxxx... 1st on a ----------------------------------------------------------------------- +--graph:: + + Draw a text-based graphical representation of the commit history + on the left hand side of the output. This may cause extra lines + to be printed in between commits, in order for the graph history + to be drawn properly. ++ +This implies the '--topo-order' option by default, but the +'--date-order' option may also be specified. + Diff Formatting ~~~~~~~~~~~~~~~ diff --git a/technical/api-history-graph.html b/technical/api-history-graph.html new file mode 100644 index 000000000..a0e0231e5 --- /dev/null +++ b/technical/api-history-graph.html @@ -0,0 +1,508 @@ + + +
+ + + +
+ +
+