<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sect1 SYSTEM "../../../dtd/dblite.dtd">
<sect1 id="tgit-dug-showlog">
	<title>Log Dialog</title>
	<indexterm>
		<primary>log</primary>
	</indexterm>
	<indexterm>
		<primary>history</primary>
	</indexterm>
	<indexterm>
		<primary>commit messages</primary>
	</indexterm>
	<indexterm>
		<primary>log messages</primary>
	</indexterm>
	<indexterm>
		<primary>revision log dialog</primary>
	</indexterm>
	<?dbhh topicname="HIDD_LOGMESSAGE"?>
	<?dbhh topicname="HIDD_LOGORDERING"?>
	<para>
		For every change you make and commit, you should provide
		a log message for that change. That way you can later find out
		what changes you made and why, and you have a detailed log for
		your development process.
	</para>
	<para>
		The Log Dialog retrieves all those log messages and shows them
		to you.
		The display is divided into 3 panes.
		<itemizedlist>
			<listitem>
				<para>
					The top pane shows a list of revisions where changes to the
					file/folder have been committed. This summary includes the
					date and time, the person who committed the revision and the
					start of the log message.
				</para>
				<para>
					The line shown in bold indicates the HEAD commit and the entry "Working tree changes" is a virtual entry representing the current (uncommitted) state of your working tree.
				</para>
			</listitem>
			<listitem>
				<para>
					The middle pane shows the full log message for the selected
					revision.
				</para>
			</listitem>
			<listitem>
				<para>
					The bottom pane shows a list of all files and folders that
					were changed as part of the selected revision.
				</para>
			</listitem>
		</itemizedlist>
		But it does much more than that - it provides context menu
		commands which you can use to get even more information about the
		project history.
	</para>
	<sect2 id="tgit-dug-showlog-1">
		<title>Invoking the Revision Log Dialog</title>
		<para>
			<figure id="tgit-dug-showlog-1-dia-1">
				<title>The Revision Log Dialog</title>
				<graphic fileref="../images/LogMessages.png"/>
			</figure>
			There are several places from where you can show the Log dialog:
			<itemizedlist>
				<listitem>
					<para>
						From the explorer context menu using
						<menuchoice>
							<guimenu>TortoiseGit</guimenu>
							<guimenuitem>Show log...</guimenuitem>
						</menuchoice>.
					</para>
				</listitem>
				<listitem>
					<para>
						From various TortoiseGit dialogs where you can select a commit (oftentimes using a <guibutton>...</guibutton> button).
					</para>
				</listitem>
				<listitem>
					<para>
						From various TortoiseGit dialogs where commit entries or files are shown using the context menu.
					</para>
				</listitem>
			</itemizedlist>
		</para>
	</sect2>
	<sect2 id="tgit-dug-showlog-actions">
		<title>Revision Log Actions</title>
		<para>
			The top pane has an <guilabel>Actions</guilabel> column containing
			icons that summarize what has been done in that revision.
			There are four different icons, each shown in its own column.
		</para>
		<para>
			<graphic fileref="../images/ActionModifiedIcon.png"/>
			If a revision modified a file or directory, the
			<emphasis>modified</emphasis> icon is shown in the first column.
		</para>
		<para>
			<graphic fileref="../images/ActionAddedIcon.png"/>
			If a revision added a file or directory, the
			<emphasis>added</emphasis> icon is shown in the second column.
		</para>
		<para>
			<graphic fileref="../images/ActionDeletedIcon.png"/>
			If a revision deleted a file or directory, the
			<emphasis>deleted</emphasis> icon is shown in the third column.
		</para>
		<para>
			<graphic fileref="../images/ActionReplacedIcon.png"/>
			If a revision replaced(rename) a file, the
			<emphasis>replaced</emphasis> icon is shown in the fourth column.
		</para>
	</sect2>
	<sect2 id="tgit-dug-showlog-graph">
		<title>The revision graph</title>
		<para>
			The top pane has a <guilabel>Graph</guilabel> column with a line showing
			the commits, merges and branches. There are two types of shapes.
		</para>
		<para>
			The circles indicate normal commits w/o any branching.
		</para>
		<para>
			The squares indicate merges and branchings. In the first case these are merge commits
			(i.e., a commit with more than one parent) and in the latter case these are also normal commits.
			A square was chosen here to indicate that a branch goes off.
		</para>
		<para>
			The colors of the lines (and of the shapes) are there to make the graph better readable (i.e., to see to which branch they belong).
			The colors are configurable (cf. <xref linkend="tgit-dug-settings-colours3"/>).
		</para>
	</sect2>
	<sect2 id="tgit-dug-showlog-messages">
		<title>Commit messages and branch/tag indicators</title>
		<para>
			The top pane also has a <guilabel>message</guilabel> column.
			In this column the subjects of the commits are shown.
			Commits which have an associated reference are decorated with a label.
		</para>
		<para>
			Tags are by default displayed as yellow rectangles. In Git there are two tag types: normal tags and annotated tags. The annotated ones have an apex at the right side.
		</para>
		<para>
			Normally branches are displayed as normal rectangles. The active branch is displayed as a dark red rectangle (by default), the green ones are local branches and the peach ones are remote branches.
		</para>
		<para>
			The boxes with rounded corners for local branches indicate that it has an associated remote tracking. The boxes with rounded corners for remote tracking branches are used to indicate which of (possible several remote branches) is the corresponding remote tracking branch (e.g., master and origin/master).
		</para>
		<para>
			The stash has a dark gray rectangle.
		</para>
		<para>
			There are also rectangles to indicate the bad versions (light red) on bisecting, blue for known good and gray for skip.
		</para>
		<para>
			Depending on what branch/tag label you open the context menu, it is optimized for that ref it was opened on (e.g., a local branch offers directly to switch to it and to push it whereas a remote branch has no push option).
		</para>
		<para>
			The colors are configurable (cf. <xref linkend="tgit-dug-settings-colours2"/>). Also, the labels can be configured to be a the right side of the commit message or the displayed text to contain the whole of the commit message (cf. <xref linkend="tgit-dug-settings-dialogs"/>).
		</para>
	</sect2>
	<sect2 id="tgit-dug-showlog-2">
		<title>Getting Additional Information</title>
		<para>
			<figure id="tgit-dug-showlog-2-dia-1">
				<title>The Revision Log Dialog Top Pane with Context Menu</title>
				<graphic fileref="../images/LogContextMenu.png"/>
			</figure>
			The top pane of the Log dialog has a context menu that allows you to
			access much more information. <!-- Some of these menu entries appear only
			when the log is shown for a file, and some only when the log is shown
			for a folder. --> You can press the <keycap>Shift</keycap> key to see the extended menu with some more options (e.g., pushing and opening the log from every commit).
			<variablelist>
				<varlistentry>
					<term>Compare with working tree</term>
					<listitem>
						<para>
							Compare the selected revision with your working tree.
							The default Diff-Tool is TortoiseGitMerge which
							is supplied with TortoiseGit.
							If the log dialog is for a folder, this will show you a list
							of changed files, and allow you to review the changes made
							to each file individually.
						</para>
					</listitem>
				</varlistentry>
				<varlistentry>
					<term>Show changes as unified diff</term>
					<listitem>
						<para>
							View the changes made in the selected revision as a
							Unified-Diff file (GNU patch format). This shows
							only the differences with a few lines of context. It
							is harder to read than a visual file compare, but will
							show all file changes together in a compact format.
						</para>
					</listitem>
				</varlistentry>
				<varlistentry>
					<term>Compare with previous revision</term>
					<listitem>
						<para>
							Compare the selected revision with the previous revision.
							This works in a similar manner to comparing with your
							working tree.
							For folders this option will first show the changed files
							dialog allowing you to select files to compare.
						</para>
					</listitem>
				</varlistentry>
				<varlistentry>
					<term>Browse repository</term>
					<listitem>
						<para>
							Open the repository browser to examine the selected file or
							folder in the repository as it was at the selected revision (cf. <xref linkend="tgit-dug-repobrowser"/>).
						</para>
					</listitem>
				</varlistentry>
				<varlistentry>
					<term>Reset (current branch) to this</term>
					<listitem>
						<para>
							Resets the HEAD to the selected commit (cf. <xref linkend="tgit-dug-reset"/>).
						</para>
					</listitem>
				</varlistentry>
				<varlistentry>
					<term>Switch / Checkout to revision</term>
					<listitem>
						<para>
							Update your working tree to the selected revision.
							Useful if you want to have your working tree reflect
							a time in the past, or if there have been further commits to
							the repository and you want to update your working tree one
							step at a time.
						</para>
					</listitem>
				</varlistentry>

				<varlistentry>
					<term>Create branch from revision</term>
					<listitem>
						<para>
							Create a branch based on the selected revision (cf. <xref linkend="tgit-dug-branchtag"/>).
						</para>
					</listitem>
				</varlistentry>
				<varlistentry>
					<term>Create tag from revision</term>
					<listitem>
						<para>
							Create a tag on a selected revision (cf. <xref linkend="tgit-dug-branchtag"/>).
						</para>
					</listitem>
				</varlistentry>
				<varlistentry>
					<term>Rebase (current branch) to this</term>
					<listitem>
						<para>
							Rebase current branch on top of the selected commit (cf. <xref linkend="tgit-dug-rebase"/>).
						</para>
					</listitem>
				</varlistentry>
				<varlistentry>
					<term>Export this version...</term>
					<listitem>
						<para>
							Export the selected revision to an archive file such as zip. This brings up a dialog for you to confirm the
							revision, and select a location for the export (cf. <xref linkend="tgit-dug-export"/>).
						</para>
					</listitem>
				</varlistentry>
				<varlistentry>
					<term>Revert change by this commit</term>
					<listitem>
						<para>
							Revert changes from which were made in the selected
							revision. All changes are integrated into your working tree.
							You may choose to commit immediately or edit and commit later.
							To abandon the reverted changes, perform a hard reset.
						</para>
					</listitem>
				</varlistentry>
				<varlistentry>
					<term>Edit notes</term>
					<listitem>
						<para>
							Edit notes of the selected commit.
						</para>
					</listitem>
				</varlistentry>
				<varlistentry>
					<term>Collapse revisions</term>
					<listitem>
						<para>
							Do not show parent commits up to a merge or branch point or a commit
							marked with a branch or tag. This is similar to
							<menuchoice>
								<guimenu>Walk Behavior</guimenu>
								<guimenuitem>Compressed Graph</guimenuitem>
							</menuchoice>,
							but only for selected revisions.
						</para>
						<para>
							Collapsed items are displayed in the graph with hollow circles and squares.
							In the following screenshot the commits of the merged branch in which issue 3764 was fixed and also all commits starting from the libgit2 update commit until the next merge commit were collapsed.
							<figure id="tgit-dug-showlog-collapsed-dia-1">
								<title>Collapsed revisions</title>
								<graphic fileref="../images/LogCollapsedRevs.png"/>
							</figure>
						</para>
					</listitem>
				</varlistentry>
				<varlistentry>
					<term>Expand hidden revisions</term>
					<listitem>
						<para>
							This is shown for collapsed items instead of <guilabel>Collapse revisions</guilabel>
							and reverts the action.
						</para>
					</listitem>
				</varlistentry>
				<varlistentry>
					<term>Cherry Pick this commit</term>
					<listitem>
						<para>
							Cherry Pick this commit on top of HEAD (cf. <xref linkend="tgit-dug-cherrypick"/>).
						</para>
					</listitem>
				</varlistentry>
				<varlistentry>
					<term>Bisect start</term>
					<listitem>
						<para>
							Start bisection. Find by binary search the change that introduced a bug (cf. <xref linkend="tgit-dug-bisect"/>).
						</para>
					</listitem>
				</varlistentry>
				<varlistentry>
					<term>Format Patch...</term>
					<listitem>
						<para>
							Create Patches from this commit.
						</para>
					</listitem>
				</varlistentry>
				<varlistentry>
					<term>Copy SHA-1 to clipboard</term>
					<listitem>
						<para>
							Copy the commit hash of the selected revision to the clipboard.
						</para>
					</listitem>
				</varlistentry>
				<varlistentry>
					<term>Copy to clipboard</term>
					<listitem>
						<para>
							Copy the log details of the selected revisions to the clipboard.
							This will copy the revision number, author, date, log message
							and the list of changed items for each revision.
						</para>
					</listitem>
				</varlistentry>
				<varlistentry>
					<term>Copy log message to clipboard</term>
					<listitem>
						<para>
							Copy the log message of the selected revision to the clipboard.
						</para>
					</listitem>
				</varlistentry>
				<varlistentry>
					<term>Search log messages...</term>
					<listitem>
						<figure id="tgit-dug-showlog-1-dia-2">
							<title>The Search Log Messages Dialog</title>
							<graphic fileref="../images/LogSearch.png"/>
						</figure>
						<para>
							Search log messages for the text you enter. This searches
							the log messages that you entered and also the action summaries
							created by Git (shown in the bottom pane).
						</para>
						<tip>
							<para>
								This allows you to easily search for refs (tags and branches).
							</para>
							<para>
								If you press <keycap>SHIFT</keycap> while clicking on a ref or on <guibutton>Find</guibutton> you can navigate to the commit w/o selecting it.
							</para>
							<para>
								The Search Log Messages dialog is complementary to the Log Filter which is implemented using the controls at the top of the Log dialog (cf. <xref linkend="tgit-dug-showlog-filter"/>).
							</para>
						</tip>
					</listitem>
				</varlistentry>
				<varlistentry>
					<term>Shows branches this commit is on</term>
					<listitem>
						<para>
							Shows the branches that the select commit belongs to.
							It shows both local and remote branches.
						</para>
					</listitem>
				</varlistentry>
			</variablelist>
		</para>
		<para>
			<figure id="tgit-dug-showlog-2-dia-1a">
				<title>Top Pane Context Menu for 2 Selected Revisions</title>
				<graphic fileref="../images/LogContextMenu1.png"/>
			</figure>
			If you select two revisions at once (using the usual
			<keycap>Ctrl</keycap>-modifier), the context menu changes and
			gives you fewer options:
			<variablelist>
				<varlistentry>
					<term>Compare revisions</term>
					<listitem>
						<para>
							Compare the two selected revisions using a visual
							difference tool. The default Diff-Tool is TortoiseGitMerge
							which is supplied with TortoiseGit.
						</para>
					</listitem>
				</varlistentry>
				<varlistentry>
					<term>Show differences as unified diff</term>
					<listitem>
						<para>
							View the differences between the two selected revisions
							as a Unified-Diff file. This works for files and folders.
						</para>
					</listitem>
				</varlistentry>
				<varlistentry>
					<term>Revert changes by these commits</term>
					<listitem>
						<para>
							Revert changes from which were made in the selected
							revisions. All changes are integrated into your working tree.
							You may choose to commit immediately or edit and commit later.
							To abandon the reverted changes, perform a hard reset.
						</para>
					</listitem>
				</varlistentry>
				<varlistentry>
					<term>Combine to one commit</term>
					<listitem>
						<para>
							Combine continuous commits to one commit.
						</para>
					</listitem>
				</varlistentry>
				<varlistentry>
					<term>Cherry Pick selected commits</term>
					<listitem>
						<para>
							Cherry Pick chosen Commits on top of current HEAD (cf. <xref linkend="tgit-dug-cherrypick"/>).
						</para>
					</listitem>
				</varlistentry>
				<varlistentry>
					<term>Format Patch...</term>
					<listitem>
						<para>
							Create patches between two chosen commits.
						</para>
					</listitem>
				</varlistentry>
				<varlistentry>
					<term>Copy SHA-1 to clipboard</term>
					<listitem>
						<para>
							Copy the commit hashes of the selected revisions to the clipboard, delimited by CRLF.
						</para>
					</listitem>
				</varlistentry>
				<varlistentry>
					<term>Copy to clipboard</term>
					<listitem>
						<para>
							Copy log messages to clipboard as described above.
						</para>
					</listitem>
				</varlistentry>
				<varlistentry>
					<term>Copy log messages to clipboard</term>
					<listitem>
						<para>
							Copy the log messages of the selected revisions to the clipboard.
							This will copy the log message for each revision.
							This facilitates the preparation of release notes.
						</para>
					</listitem>
				</varlistentry>
				<varlistentry>
					<term>Search log messages...</term>
					<listitem>
						<para>
							Search log messages as described above.
						</para>
					</listitem>
				</varlistentry>
			</variablelist>
		</para>
		<para>
			If you select two or more revisions (using the usual
			<keycap>Ctrl</keycap> or <keycap>Shift</keycap> modifiers),
			You can combine select commits to one commit. And cherry pick
			these commits to current branch.
		</para>
		<para>
			<figure id="tgit-dug-showlog-2-dia-2">
				<title>The Log Dialog Bottom Pane with Context Menu</title>
				<graphic fileref="../images/LogContextMenu2.png"/>
			</figure>
			The bottom pane of the Log dialog also has a context menu that allows you to
			<variablelist>
				<varlistentry>
					<term>Compare with base</term>
					<listitem>
						<para>
							Compare chosen file with base version.
						</para>
					</listitem>
				</varlistentry>

				<varlistentry>
					<term>Show as unified diff</term>
					<listitem>
						<para>
							Show file changes in unified diff format.
							This context menu is only available for
							files shown as <emphasis>modified</emphasis>.
						</para>
					</listitem>
				</varlistentry>
				<varlistentry>
					<term>Compare with working tree</term>
					<listitem>
						<para>
							Compare chosen file with working tree.
						</para>
					</listitem>
				</varlistentry>

				<varlistentry>
					<term>Revert changes to this revision</term>
					<listitem>
						<para>
							Revert chosen files to the state of this revision.
						</para>
					</listitem>
				</varlistentry>
				<varlistentry>
					<term>Revert changes to parent revision</term>
					<listitem>
						<para>
							Revert chosen files to the state before this revision.
						</para>
					</listitem>
				</varlistentry>
				<varlistentry>
					<term>Show log</term>
					<listitem>
						<para>
							Show the revision log for the selected single file.
						</para>
					</listitem>
				</varlistentry>

				<varlistentry>
					<term>Blame...</term>
					<listitem>
						<para>
							Opens the Blame dialog, allowing you to blame up to the
							selected revision (cf. <xref linkend="tgit-dug-blame"/>).
						</para>
					</listitem>
				</varlistentry>

				<varlistentry>
					<term>Save revision to...</term>
					<listitem>
						<para>
							Save the selected revision to a file so you
							have an older version of that file.
						</para>
					</listitem>
				</varlistentry>

				<varlistentry>
					<term>Export selection to...</term>
					<listitem>
						<para>
							Saves the selected files to a target directory. Compared to "Save revision to..." this preserves the directory structure.
						</para>
					</listitem>
				</varlistentry>

				<varlistentry>
					<term>View revision in alternative editor</term>
					<listitem>
						<para>
							Show chosen file with an alternative editor such as notepad2 with chosen commit.
						</para>
					</listitem>
				</varlistentry>

				<varlistentry>
					<term>Open/Open with...</term>
					<listitem>
						<para>
							Open the selected file, either with the default viewer for
							that file type, or with a program you choose.
						</para>
					</listitem>
				</varlistentry>

				<varlistentry>
					<term>Explore to</term>
					<listitem>
						<para>
							Open directory of file with Explore.
						</para>
					</listitem>
				</varlistentry>

				<varlistentry>
					<term>Copy paths to clipboard</term>
					<listitem>
						<para>
							Copy paths to clipboard
						</para>
					</listitem>
				</varlistentry>

				<varlistentry>
					<term>Copy all information to clipboard</term>
					<listitem>
						<para>
							Copy all information to clipboard, include version info.
						</para>
					</listitem>
				</varlistentry>
			</variablelist>
		</para>
		<tip>
			<para>
				You may notice that sometimes we refer to changes and other times
				to differences. What's the difference?
			</para>
		</tip>
	</sect2>
	<sect2 id="tgit-dug-showlog-filter">
		<title>Filtering Log Messages</title>
		<indexterm>
			<primary>filter</primary>
		</indexterm>
		<para>
			If you want to restrict the log messages to show only those
			you are interested in rather than scrolling through a list
			of hundreds, you can use the filter controls at the top of
			the Log Dialog.
		</para>
		<para>
			The first element is the branch/revision filter.
			Clicking on it opens the Reference Browser (see <xref linkend="tgit-dug-browse-ref"/>).
			There you can select single or multiple references. If you select exactly two references,
			you can choose how to combine them (showing especially both A and B "A B"; showing
			differences "A...B" or all commits between A and B "A..B").
			This filter element also contains a special context menu. Here shortcuts for "HEAD",
			"FETCH_HEAD", "All" and "All local branches" are available. Also, the last manual selected
			filters are included there.
		</para>
		<para>
			The start and end date controls allow you
			to restrict the output to a known date range. The search
			box allows you to show only messages which contain a
			particular phrase. A default limitation for <guilabel>From</guilabel> or the number of log entries displayed can be configured in the settings dialog on the <guilabel>Dialogs 1</guilabel> page (cf. <xref linkend="tgit-dug-settings-dialogs"/>). When a default limitation is active, the <guilabel>From</guilabel> has a blueish background. By opening the context menu on the date picker, you can configure the default limit or disable the default limit for the current dialogue.
		</para>
		<para>
			Click on the search icon (the magnifier glass) to select which information you want
			to search in, to choose <emphasis>regex</emphasis> mode, and to toggle case sensitivity.
			Deselecting "Paths" can significantly speed up the filter.

			<figure id="tgit-dug-showlog-filter-dia-1">
				<title>Option Menu for the Log Filter</title>
				<graphic fileref="../images/LogFilterOptions.png"/>
			</figure>

			Normally you will only need a simple sub-string search, but if you
			need to more flexible search terms, you can use regular expressions.
			If you hover the mouse over the box, a tooltip will give hints
			on how to use the regex functions.
			To invert the results for the entire search expression, start the string with an exclamation mark ('!').
			You can also find online documentation and a tutorial at
			<ulink url="https://www.regular-expressions.info/">
				<citetitle>https://www.regular-expressions.info/</citetitle>
			</ulink>.
			The filter works by checking whether your filter string matches
			the log entries, and then only those entries which <emphasis>match</emphasis>
			the filter string are shown.
		</para>
		<para>
			Simple sub-string search works in a manner similar to a search engine.
			Strings to search for are separated by spaces, and all strings must
			match. You can use a leading <literal>-</literal> to specify that a
			particular sub-string is not found (invert matching for that term),
			and you can use <literal>!</literal> at the start of the expression
			to invert matching for the entire expression.
			You can use a leading <literal>+</literal> to specify that a sub-string
			should be included, even if previously excluded with a <literal>-</literal>.
			Note that the order of inclusion/exclusion is significant here.
			You can use quotation marks to surround a string which must contain spaces,
			and if you want to search for a literal quotation mark you can use two
			quotation marks together as a self-escaping sequence.
			Note that the backslash character is <emphasis>not</emphasis> used as
			an escape character and has no special significance in simple sub-string
			searches. Examples will make this easier:
			<screen>
Alice Bob -Eve
			</screen>
			searches for strings containing both Alice and Bob but not Eve
			<screen>
Alice -Bob +Eve
			</screen>
			searches for strings containing both Alice but not Bob, or strings
			which contain Eve.
			<screen>
-Case +SpecialCase
			</screen>
			searches for strings which do not contain Case, but still include
			strings which contain SpecialCase.
			<screen>
!Alice Bob
			</screen>
			searches for strings which do not contain both Alice and Bob
			<screen>
!-Alice -Bob
			</screen>
			do you remember De Morgan's theorem? NOT(NOT Alice AND NOT Bob)
			reduces to (Alice OR Bob).
			<screen>
"Alice and Bob"
			</screen>
			searches for the literal expression <quote>Alice and Bob</quote>
			<screen>
""
			</screen>
			searches for a double-quote anywhere in the text
			<screen>
"Alice says ""hi"" to Bob"
			</screen>
			searches for the literal expression <quote>Alice says "hi" to Bob</quote>.
		</para>
		<para>
			You can also filter the path names in the bottom pane using the
			<menuchoice>
				<guimenu>View</guimenu>
				<guimenuitem>Hide unrelated changed paths</guimenuitem>
			</menuchoice>
			Related paths are those which contain the path used to display
			the log. If you fetch the log for a folder, that means anything
			in that folder or below it. For a file it means just that one file.
			If you want to gray out the unrelated ones, check
			<menuchoice>
				<guimenu>View</guimenu>
				<guimenuitem>Gray unrelated changed paths</guimenuitem>
			</menuchoice>
			Uncheck both menu items to hide the unrelated paths completely.
		</para>
		<para>
			In the lower left there are the checkboxes <guilabel>All branches</guilabel> and <guilabel>Show whole project</guilabel>. Use these to override the branch resp. a file/folder filter and show the log for the whole repository. Please note that these settings are remembered for a repository - even if you started the log dialog on a single file.
		</para>
		<para>
			You can show whole project history, no choose directory or file by click
			<guilabel>Show Whole Project</guilabel>
		</para>
		<para>
			<menuchoice>
				<guimenu>View</guimenu>
				<guimenu>Labels</guimenu>
				<guimenuitem>Tags</guimenuitem>
			</menuchoice>
			<menuchoice>
				<guimenu>View</guimenu>
				<guimenu>Labels</guimenu>
				<guimenuitem>Local branches</guimenuitem>
			</menuchoice>
			<menuchoice>
				<guimenu>View</guimenu>
				<guimenu>Labels</guimenu>
				<guimenuitem>Remote branches</guimenuitem>
			</menuchoice>
			You can disable showing some reference types in the log graph.
		</para>
		<para>
			<menuchoice>
				<guimenu>View</guimenu>
				<guimenuitem>Gravatar</guimenuitem>
			</menuchoice>
			You can enable/disable Gravatar for a specific repository.
		</para>
		<para>
			<menuchoice>
				<guimenu>Walk Behavior</guimenu>
				<guimenuitem>First Parent</guimenuitem>
			</menuchoice>
			just follow up first parent commit. This will help understand the overall history.
		</para>
		<para>
			<menuchoice>
				<guimenu>Walk Behavior</guimenu>
				<guimenuitem>No merges</guimenuitem>
			</menuchoice>
			Skips all merge points.
		</para>
		<para>
			<menuchoice>
				<guimenu>Walk Behavior</guimenu>
				<guimenuitem>Follow renames</guimenuitem>
			</menuchoice>
			This is available to a single file only, which tracks renames.
			Otherwise, the log list stops at the commit that the current filename introduced.
		</para>
		<para>
			<menuchoice>
				<guimenu>Walk Behavior</guimenu>
				<guimenuitem>Compressed Graph</guimenuitem>
			</menuchoice>
			The log graph is simplified to include merge points, commits with references, and possibly other commits.
		</para>
		<para>
			<menuchoice>
				<guimenu>Walk Behavior</guimenu>
				<guimenuitem>Show labeled commits only</guimenuitem>
			</menuchoice>
			The log graph is simplified to include commits with references only.
		</para>
	</sect2>
	<sect2 id="tgit-dug-showlog-navigation">
		<title>Navigation</title>
		<indexterm>
			<primary>log navigation</primary>
		</indexterm>
		<para>
			You can use the drop-down control on the upper right to select a navigation type
			(e.g. Author Email, Parent 1, Selection history),
			then use the <guibutton>Up</guibutton>
			and <guibutton>Down</guibutton> green buttons
			to navigate through the commits which match the navigation type
			relative to the current selected one.
		</para>
		<para>
			Alternatively to the <guibutton>Up</guibutton>
			and <guibutton>Down</guibutton> green buttons,
			hotkeys <keycap>ALT</keycap>+<keycap>UP</keycap>
			and <keycap>ALT</keycap>+<keycap>DOWN</keycap>
			are also available.
		</para>
		<para>
			Regarding the navigation type "Selection History",
			TortoiseGit memorizes the history of selected commits,
			so that you can navigate through those commits
			you selected in the past easily.
			You can also navigate them by pressing
			<keycap>ALT</keycap>+<keycap>LEFT</keycap>,
			<keycap>ALT</keycap>+<keycap>RIGHT</keycap>,
			<keycap>Browse Back</keycap>,
			and <keycap>Browse Forward</keycap>.
			<keycap>Back</keycap> and <keycap>Forward</keycap> buttons
			on mouse are also available.
		</para>
		<para>
			If you also press <keycap>SHIFT</keycap>
			you can navigate through the selection history
			without selecting the last commits
			(i.e., just scrolling to and highlighting them).
			This helps you to navigate through commits
			and then select the commit(s) you really want to select
			(e.g. you can compare the current selected commit
			with the one you selected before).
		</para>
		<para>
			If you want to jump to a commit with a particular hash, you may
			do so by pressing <keycap>Ctrl+V</keycap> or <keycap>Shift+Insert</keycap>
			(into any log dialog element other than the search box) to paste the hash
			from the clipboard. If it has the form of a valid commit hash, the log
			dialog will attempt to jump to it.
		</para>
	</sect2>
	<sect2 id="tgit-dug-showlog-5">
		<?dbhh topicname="HIDD_STATGRAPH"?>
		<title>Statistical Information</title>
		<indexterm>
			<primary>statistics</primary>
		</indexterm>
		<para>
			The <guibutton>Statistics</guibutton> button brings up a box
			showing some interesting information about the revisions
			shown in the Log dialog. This shows how many authors have
			been at work, how many commits they have made, progress
			by week, and much more. Now you can see at a glance who
			has been working hardest and who is slacking ;-)
		</para>
		<sect3 id="tgit-dug-showlog-stats-1">
			<title>Statistics Page</title>
			<para>
				This page gives you all the numbers you can think of,
				in particular the period and number of revisions covered,
				and some min/max/average values.
			</para>
		</sect3>
		<sect3 id="tgit-dug-showlog-stats-2">
			<title>Commits by Author Page</title>
			<para>
				<figure id="tgit-dug-showlog-stats-dia-2">
					<title>Commits-by-Author Histogram</title>
					<graphic fileref="../images/StatsByAuthor.png"/>
				</figure>
				This graph shows you which authors have been active on the
				project as a simple histogram, stacked histogram or
				pie chart.
				<figure id="tgit-dug-showlog-stats-dia-3">
					<title>Commits-by-Author Pie Chart</title>
					<graphic fileref="../images/StatsByAuthPie.png"/>
				</figure>
			</para>
			<para>
				Where there are a few major authors and many minor contributors,
				the number of tiny segments can make the graph more difficult to
				read. The slider at the bottom allows you to set a threshold
				(as a percentage of total commits) below which any activity is
				grouped into an <emphasis>Others</emphasis> category.
			</para>
		</sect3>
		<sect3 id="tgit-dug-showlog-stats-3">
			<title>Commits by date Page</title>
			<para>
				<figure id="tgit-dug-showlog-stats-dia-4">
					<title>Commits-by-date Graph</title>
					<graphic fileref="../images/StatsByDate.png"/>
				</figure>
				This page gives you a graphical representation of project
				activity in terms of number of commits <emphasis>and</emphasis>
				author. This gives some idea of when a project is being worked
				on, and who was working at which time.
			</para>
			<para>
				When there are several authors, you will get many lines on the
				graph. There are two views available here: <emphasis>normal</emphasis>,
				where each author's activity is relative to the base line, and
				<emphasis>stacked</emphasis>, where each author's activity is
				relative to the line underneath.
				The latter option avoids the lines crossing over, which can make
				the graph easier to read, but less easy to see one author's output.
			</para>
		</sect3>
		<para>
			By default the analysis is case-sensitive, so users
			<literal>PeterEgan</literal> and <literal>PeteRegan</literal>
			are treated as different authors. However, in many cases user names
			are not case-sensitive, and are sometimes entered inconsistently,
			so you may want <literal>DavidMorgan</literal> and
			<literal>davidmorgan</literal> to be treated as the same person.
			Use the <guilabel>Authors case insensitive</guilabel> checkbox
			to control how this is handled.
		</para>
		<para>
			The statistics dialog also honors the <filename>.mailmap</filename> file
			(see <gitdoclink cmd="gitmailmap" section="5"/>).
		</para>
		<para>
			Note that the statistics cover the same period as the
			Log dialog. If that is only displaying one revision
			then the statistics will not tell you very much.
		</para>
	</sect2>
	<sect2 id="tgit-dug-showlog-refresh">
		<title>Refreshing the View</title>
		<para>
			If you want to check the repository again for newer log messages,
			you can simply refresh the view using <keycap>F5</keycap>.
		</para>
	</sect2>
</sect1>
