website/docs/commands/log.md
show commit history
Print the revision history of the specified files or the entire project.
If no revision range is specified, the default is the current commit
and all of its ancestors (::.).
File history is shown without following the rename or copy
history of files. To follow file history across renames and
copies, use the -f/-- follow option. If the --follow
option is used without a filename, only the ancestors or
descendants of the starting revision are shown.
By default, sl log prints the commit's hash, non-trivial
parents, user, date, time, and the single-line summary. When the
-v/--verbose option is used, the list of changed files and
full commit message are shown.
With the --graph option, revisions are shown as an ASCII art
graph with the most recent commit at the top. The graph nodes
are depicted as follows: o is a commit, @ is a working
directory parent, x is obsolete, and + represents a fork
where the commit from the lines below is a parent of the o
merge on the same line. Paths in the graph are represented with
|, / and so forth. : in place of a | indicates
one or more revisions in a path are omitted.
Use the -L/--line-range FILE,M:N option to follow the
history of lines from M to N in FILE. With the -p/-- patch option, only diff hunks affecting specified line range
will be shown. The -L option can be specified multiple
times and requires the --follow option. Currently, the line
range option is not compatible with --graph and is an
experimental feature.
sl log --patch may generate unexpected diff output for merge
commits, as it will only compare the merge commit against
its first parent. Also, only files different from BOTH parents
will appear in the files: section.
For performance reasons, sl log FILE may omit duplicate changes
made on branches and will not show removals or mode changes. To
see all such changes, use the --removed switch.
The history resulting from -L/--line-range options depends on
diff options: for instance, if white-spaces are ignored,
respective changes with only white-spaces in specified line range
will not be listed.
Some examples:
sl log -v
sl log -f
sl log -l 10 -b .
sl log --removed file.c
sl log -Mp lib/
sl log -k bug --template "{rev}\n"
sl log -r . --template "{node}\n"
sl log -T list
sl log -r "a21ccf and ancestor(release_1.9)"
sl log -k alice -d "may 2008 to jul 2008"
sl log -L file.c,13:23
sl log -L file.c,13:23 -L main.c,2:6 -p
See sl help dates for a list of formats valid for -d/--date.
See sl help revisions for more about specifying and ordering
revisions.
See sl help templates for more about pre-packaged styles and
specifying custom templates. The default template used by the log
command can be customized via the ui.logtemplate configuration
setting.
Returns 0 on success.
| shortname | fullname | default | description |
|---|---|---|---|
-f | --follow | follow changeset history, or file history across copies and renames | |
-d | --date | show revisions matching date spec | |
-C | --copies | show copied files | |
-k | --keyword | do case-insensitive search for a given text | |
-r | --rev | show the specified revision or revset | |
--removed | include revisions where files were removed | ||
-u | --user | revisions committed by user | |
-P | --prune | do not display revision or any of its ancestors | |
-p | --patch | show patch | |
-g | --git | use git extended diff format | |
-l | --limit | limit number of changes displayed | |
-M | --no-merges | do not show merges | |
--stat | output diffstat-style summary of changes | ||
-G | --graph | show the revision DAG | |
-T | --template | display with template | |
-I | --include | include files matching the given patterns | |
-X | --exclude | exclude files matching the given patterns | |
--all | shows all changesets in the repo | ||
--sparse | limit to changesets affecting the sparse checkout | ||
--remote | show remote names even if hidden |