1 <?xml version="1.0" encoding="UTF-8"?>
\r
2 <!DOCTYPE sect1 SYSTEM "../../../dtd/dblite.dtd">
\r
3 <sect1 id="tgit-dug-revgraph">
\r
4 <?dbhh topicname="HIDD_REVISIONGRAPH"?>
\r
5 <title>Revision Graphs</title>
\r
7 <primary>revision</primary>
\r
10 <primary>graph</primary>
\r
13 <primary>revision graph</primary>
\r
16 <figure id="tgit-dug-revgraph-dia-1">
\r
17 <title>A Revision Graph</title>
\r
18 <graphic fileref="../images/RevisionGraph.png"/>
\r
20 Sometimes you need to know where branches and tags were taken from
\r
21 the point, and the ideal way to view this sort of information is
\r
22 as a graph or tree structure. That's when you need to use
\r
24 <guimenu>TortoiseGit</guimenu>
\r
25 <guimenuitem>Revision Graph...</guimenuitem>
\r
29 This command analyses the revision history and attempts to create
\r
30 a direct graph showing the points at tag, branch and other reference.
\r
34 In order to generate the graph, TortoiseGit must fetch all log messages
\r
35 from the repository root. Just show commits which have some reference point to.
\r
38 <sect2 id="tgit-dug-revgraph-nodes">
\r
39 <title>Revision Graph Nodes</title>
\r
41 Each revision graph node represents a revision in the repository
\r
42 where something changed in the tree you are looking at.
\r
43 Different types of node can be distinguished by colour.
\r
44 but colours can be set using
\r
46 <guimenu>TortoiseGit</guimenu>
\r
47 <guimenuitem>Settings</guimenuitem>
\r
52 <term>Added or copied items</term>
\r
55 Items which have been added, or created by copying
\r
56 another file/folder are shown using a rounded rectangle.
\r
57 The default colour is green. Tags and trunks are treated
\r
58 as a special case and use a different shade, depending
\r
61 <guimenu>TortoiseSVN</guimenu>
\r
62 <guimenuitem>Settings</guimenuitem>
\r
68 <term>Deleted items</term>
\r
71 Deleted items e.g. a branch which is no longer required,
\r
72 are shown using an octagon (rectangle with corners cut off).
\r
73 The default colour is red.
\r
78 <term>Renamed items</term>
\r
81 Renamed items are also shown using an octagon,
\r
82 but the default colour is blue.
\r
87 <term>Branch tip revision</term>
\r
90 The graph is normally restricted to showing branch points,
\r
91 but it is often useful to be able to see the respective HEAD
\r
92 revision for each branch too. If you select
\r
93 <guilabel>Show HEAD revisions</guilabel>, each HEAD
\r
94 revision nodes will be shown as an ellipse.
\r
95 Note that HEAD here refers to the last revision committed
\r
96 on that path, not to the HEAD revision of the repository.
\r
101 <term>Working copy revision</term>
\r
104 If you invoked the revision graph from a working copy,
\r
105 you can opt to show the BASE revision on the graph using
\r
106 <guilabel>Show WC revision</guilabel>, which marks
\r
107 the BASE node with a bold outline.
\r
112 <term>Modified working copy</term>
\r
115 If you invoked the revision graph from a working copy,
\r
116 you can opt to show an additional node representing your
\r
117 modified working copy using
\r
118 <guilabel>Show WC modifications</guilabel>. This is an
\r
119 elliptical node with a bold outline in red by default.
\r
124 <term>Normal item</term>
\r
127 All other items are shown using a plain rectangle.
\r
135 Note that the graph only shows the points at which items were
\r
136 reference by tag, branch or the other ref. Showing every revision of a project will
\r
137 generate a very large graph for non-trivial cases.
\r
141 The default view (grouping off) places the nodes such that their vertical
\r
142 position is in strict revision order, so you have a visual cue for the
\r
143 order in which things were done. Where two nodes are in the same column
\r
144 the order is very obvious. When two nodes are in adjacent columns the
\r
145 offset is much smaller because there is no need to prevent the nodes
\r
146 from overlapping, and as a result the order is a little less obvious.
\r
147 Such optimisations are necessary to keep complex graphs to a reasonable
\r
149 Please note that this ordering uses the <emphasis>edge</emphasis> of
\r
150 the node on the <emphasis>older</emphasis> side as a reference, i.e.
\r
151 the bottom edge of the node when the graph is shown with oldest node
\r
152 at the bottom. The reference edge is significant because the node shapes
\r
153 are not all the same height.
\r
158 <sect2 id="tgit-dug-revgraph-views">
\r
159 <?dbhh topicname="HIDD_REVGRAPHFILTER"?>
\r
160 <title>Changing the View</title>
\r
162 Because a revision graph is often quite complex, there are a number
\r
163 of features which can be used to tailor the view the way you want it.
\r
164 These are available in the <guilabel>View</guilabel> menu and from the
\r
168 <term>Group branches</term>
\r
171 The default behavior (grouping off) has all rows sorted
\r
172 strictly by revision. As a result, long-living branches
\r
173 with sparse commits occupy a whole column for only a few
\r
174 changes and the graph becomes very broad.
\r
177 This mode groups changes by branch, so that there is no
\r
178 global revision ordering: Consecutive revisions on
\r
179 a branch will be shown in (often) consecutive lines.
\r
180 Sub-branches, however, are arranged in such a way that
\r
181 later branches will be shown in the same column above
\r
182 earlier branches to keep the graph slim. As a result, a
\r
183 given row may contain changes from different revisions.
\r
188 <term>Oldest on top</term>
\r
191 Normally the graph shows the oldest revision at the bottom,
\r
192 and the tree grows upwards. Use this option to grow down
\r
193 from the top instead.
\r
198 <term>Align trees on top</term>
\r
201 When a graph is broken into several smaller trees, the
\r
202 trees may appear either in natural revision order, or
\r
203 aligned at the bottom of the window, depending on whether
\r
204 you are using the <guilabel>Group Branches</guilabel>
\r
205 option. Use this option to grow all trees down from the
\r
211 <term>Reduce cross lines</term>
\r
214 This option is normally enabled and avoids showing
\r
215 the graph with a lot of confused crossing lines.
\r
216 However this may also make the layout columns appear
\r
217 in less logical places, for example in a diagonal line
\r
218 rather than a column, and the graph may require a
\r
219 larger area to draw. If this is a problem you can disable
\r
220 the option from the <guilabel>View</guilabel> menu.
\r
225 <term>Differential path names</term>
\r
228 Long path names can take a lot of space and make the
\r
229 node boxes very large. Use this option to show only
\r
230 the changed part of a path, replacing the common part
\r
231 with dots. E.g. if you create a branch
\r
232 <literal>/branches/1.2.x/doc/html</literal> from
\r
233 <literal>/trunk/doc/html</literal> the branch could
\r
234 be shown in compact form as
\r
235 <literal>/branches/1.2.x/..</literal> because the last
\r
236 two levels, <literal>doc</literal> and
\r
237 <literal>html</literal>, did not change.
\r
242 <term>Show all revisions</term>
\r
245 This does just what you expect and shows every revision
\r
246 where something (in the tree that you are graphing) has
\r
247 changed. For long histories this can produce a truly
\r
253 <term>Show HEAD revisions</term>
\r
256 This ensures that the latest revision on every branch is
\r
257 always shown on the graph.
\r
262 <term>Exact copy sources</term>
\r
265 When a branch/tag is made, the default behaviour is to
\r
266 show the branch as taken from the last node where a
\r
267 change was made. Strictly speaking this is inaccurate
\r
268 since the branches are often made from the current HEAD
\r
269 rather than a specific revision. So it is possible to show
\r
270 the more correct (but less useful) revision that was
\r
271 used to create the copy. Note that this revision may
\r
272 be younger than the HEAD revision of the source branch.
\r
277 <term>Fold tags</term>
\r
280 When a project has many tags, showing every tag as a
\r
281 separate node on the graph takes a lot of space and
\r
282 obscures the more interesting development branch structure.
\r
283 At the same time you may need to be able to access the
\r
284 tag content easily so that you can compare revisions.
\r
285 This option hides the nodes for tags and
\r
286 shows them instead in the tooltip for the node that
\r
287 they were copied from. A tag icon on the right side
\r
288 of the source node indicates that tags were made.
\r
289 This greatly simplifies the view.
\r
292 Note that if a tag is itself used as the source for a
\r
293 copy, perhaps a new branch based on a tag, then that
\r
294 tag will be shown as a separate node rather than folded.
\r
299 <term>Hide deleted paths</term>
\r
302 Hides paths which are no longer present at the HEAD
\r
303 revision of the repository, e.g. deleted branches.
\r
306 If you have selected the <guilabel>Fold tags</guilabel>
\r
307 option then a deleted branch from which tags were taken
\r
308 will still be shown, otherwise the tags would disappear too.
\r
309 The last revision that was tagged will be shown in the
\r
310 colour used for deleted nodes instead of showing a separate
\r
314 If you select the <guilabel>Hide tags</guilabel> option
\r
315 then these branches will disappear again as they are not
\r
316 needed to show the tags.
\r
321 <term>Hide unused branches</term>
\r
324 Hides branches where no changes were committed to the
\r
325 respective file or sub-folder. This does not necessarily
\r
326 indicate that the branch was not used, just that no
\r
327 changes were made to <emphasis>this</emphasis> part of it.
\r
332 <term>Show WC revision</term>
\r
335 Marks the revision on the graph which corresponds to the
\r
336 update revision of the item you fetched the graph for.
\r
337 If you have just updated, this will be HEAD, but if others
\r
338 have committed changes since your last update your WC
\r
339 may be a few revisions lower down.
\r
340 The node is marked by giving it a bold outline.
\r
345 <term>Show WC modifications</term>
\r
348 If your WC contains local changes, this option draws it
\r
349 as a separate elliptical node, linked back to the node
\r
350 that your WC was last updated to.
\r
351 The default outline colour is red.
\r
352 You may need to refresh the graph using
\r
353 <keycap>F5</keycap> to capture recent changes.
\r
358 <term>Filter</term>
\r
361 Sometimes the revision graph contains more revisions
\r
362 than you want to see. This option opens a dialog which
\r
363 allows you to restrict the range of revisions
\r
364 displayed, and to hide particular paths by name.
\r
367 If you hide a particular path and that node has child
\r
368 nodes, the children will be shown as a separate tree.
\r
369 If you want to hide all children as well, use the
\r
370 <guilabel>Remove the whole subtree(s)</guilabel> checkbox.
\r
375 <term>Tree stripes</term>
\r
378 Where the graph contains several trees, it is sometimes
\r
379 useful to use alternating colours on the background to
\r
380 help distinguish between trees.
\r
385 <term>Show overview</term>
\r
388 Shows a small picture of the entire graph, with the current
\r
389 view window as a rectangle which you can drag. This allows
\r
390 you to navigate the graph more easily. Note that for very
\r
391 large graphs the overview may become useless due to the
\r
392 extreme zoom factor and will therefore not be shown in such
\r
401 <sect2 id="tgit-dug-revgraph-use">
\r
402 <title>Using the Graph</title>
\r
404 To make it easier to navigate a large graph, use the overview window.
\r
405 This shows the entire graph in a small window, with the currently
\r
406 displayed portion highlighted. You can drag the highlighted area to
\r
407 change the displayed region.
\r
410 The revision date, author and comments are shown in a hint box whenever
\r
411 the mouse hovers over a revision box.
\r
414 If you select two revisions (Use <keycap>Ctrl</keycap>-<action>left click</action>),
\r
415 you can use the context menu to show the
\r
416 differences between these revisions. You can choose to show differences
\r
417 as at the branch creation points, but usually you will want to show the
\r
418 differences at the branch end points, i.e. at the HEAD revision.
\r
421 You can view the differences as a Unified-Diff file, which shows all
\r
422 differences in a single file with minimal context. If you opt to
\r
424 <guimenu>Context Menu</guimenu>
\r
425 <guimenuitem>Compare Revisions</guimenuitem>
\r
427 you will be presented with a list of changed files.
\r
428 <action>Double click</action> on a file name to fetch both revisions
\r
429 of the file and compare them using the visual difference tool.
\r
432 If you <action>right click</action> on a revision you can use
\r
434 <guimenu>Context Menu</guimenu>
\r
435 <guimenuitem>Show Log</guimenuitem>
\r
437 to view the history.
\r
441 You can also merge changes in the selected revision(s) into a
\r
442 different working copy. A folder selection dialog allows you to
\r
443 choose the working copy to merge into, but after that there is
\r
444 no confirmation dialog, nor any opportunity to try a test merge.
\r
445 It is a good idea to merge into an unmodified working copy so
\r
446 that you can revert the changes if it doesn't work out!
\r
447 This is a useful feature if you want to merge selected
\r
448 revisions from one branch to another.
\r
453 <title>Learn to Read the Revision Graph</title>
\r
455 First-time users may be surprised by the fact that the revision
\r
456 graph shows something that does not match the user's mental model.
\r
457 If a revision changes multiple copies or branches of a file or
\r
458 folder, for instance, then there will be multiple nodes for that
\r
459 single revision. It is a good practice to start with the leftmost
\r
460 options in the toolbar and customize the graph step-by-step until
\r
461 it comes close to your mental model.
\r
464 All filter options try lose as little information as possible.
\r
465 That may cause some nodes to change their color, for instance.
\r
466 Whenever the result is unexpected, undo the last filter operation
\r
467 and try to understand what is special about that particular revision
\r
468 or branch. In most cases, the initially expected outcome of the
\r
469 filter operation would either be inaccurate or misleading.
\r
474 <sect2 id="tgit-dug-revgraph-refresh">
\r
475 <title>Refreshing the View</title>
\r
477 If you want to check the server again for newer information,
\r
478 you can simply refresh the view using <keycap>F5</keycap>.
\r