Kiln » TortoiseHg » TortoiseHg
Clone URL:  
Pushed to one repository · View In Graph Contained in 0.9, 0.9.1, and 0.9.1.1

merge with stable

Changeset 888b8a88301d

Parents 9e815f5a66cf

Parents ab18f41b523d

by Steve Borho

Changes to 44 files · Browse files at 888b8a88301d Showing diff from parent 9e815f5a66cf ab18f41b523d Diff from another changeset...

Change 1 of 1 Show Entire File MANIFEST.in Stacked
 
2
3
4
5
6
 
2
3
4
 
5
@@ -2,5 +2,4 @@
 include contrib/_hgtk  include contrib/nautilus-thg.py  include COPYING.txt ReleaseNotes.txt -recursive-include locale *.mo  recursive-include i18n *.po
Change 1 of 2 Show Entire File ReleaseNotes.txt Stacked
 
 
 
1
2
3
 
355
356
357
358
 
359
360
361
 
1
2
3
4
5
 
357
358
359
 
360
361
362
363
@@ -1,3 +1,5 @@
+# -*- coding: UTF-8 -*- +   Release Notes for TortoiseHg    This file contains last minute notes to users about the releases, which may not @@ -355,7 +357,7 @@
  * [ 2103749 ] Changelog viewer doesn't refresh after making local tag     * nautilus: fix error when there is no repo in the current directory - (by Germn Po-Caamao) + (by Germán Póo-Caamaño)      New features and improvement in 0.4.1:
 
1
2
3
4
 
5
6
7
 
1
2
3
 
4
5
6
7
@@ -1,7 +1,7 @@
 [py2exe]  excludes=pywin, pywin.dialogs, pywin.dialogs.list, PyQt, PyQt4.QtCode, PyQt4.QtGui  includes=cairo, pango, pangocairo, atk, gobject, dbhash, gtk.keysyms -packages=ctypes, email, hgext, hgext.convert, encodings, hggtk, hggtk.logview, thgutil, thgutil.iniparse +packages=ctypes, email, hgext, hgext.convert, encodings, hggtk, hggtk.logview, thgutil, iniparse    dll_excludes=iconv.dll, intl.dll, libatk-1.0-0.dll, libgdk_pixbuf-2.0-0.dll, libgdk-win32-2.0-0.dll, libglib-2.0-0.dll, libgmodule-2.0-0.dll, libgobject-2.0-0.dll, libgthread-2.0-0.dll, libgtk-win32-2.0-0.dll, libpango-1.0-0.dll, libpangowin32-1.0-0.dll, libcairo-2.dll, libglade-2.0-0.dll, libpangocairo-1.0-0.dll, libpangoft2-1.0-0.dll  
Change 1 of 1 Show Entire File doc/​Build.bat Stacked
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
@@ -0,0 +1,75 @@
+@echo off + +set hhc_compiler="%ProgramFiles%\HTML Help Workshop\hhc.exe" +set PDFLATEX=PdfLatex +set OUTPUTDIR=build +set SPHINXBUILD=sphinx-build +set ALLSPHINXOPTS=-d %OUTPUTDIR%/doctrees %SPHINXOPTS% source +if NOT "%PAPER%" == "" ( + set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% +) + +if "%1" == "" goto help + +if "%1" == "help" ( + :help + echo.Please use `make ^<target^>` where ^<target^> is one of + echo. html to make standalone HTML files + echo. htmlhelp to make HTML files and a HTML help project + echo. chm to make CHM file + echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter + echo. pdf to make PDF file, you can set PAPER=a4 or PAPER=letter + goto end +) + +if "%1" == "clean" ( + for /d %%i in (%OUTPUTDIR%\*) do rmdir /q /s %%i + del /q /s %OUTPUTDIR%\* + goto end +) + +if "%1" == "html" ( + %SPHINXBUILD% -b html %ALLSPHINXOPTS% %OUTPUTDIR%/html + echo. + echo.Build finished. The HTML pages are in %OUTPUTDIR%/html. + goto end +) + +if "%1" == "htmlhelp" ( + %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %OUTPUTDIR%/htmlhelp + echo. + echo.Build finished; now you can run HTML Help Workshop with the ^ +.hhp project file in %OUTPUTDIR%/htmlhelp. + goto end +) + +if "%1" == "chm" ( + %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %OUTPUTDIR%/chm + %hhc_compiler% %OUTPUTDIR%/chm/TortoiseHGdoc.hhp + echo. + echo.Build finished. The CHM file is in %OUTPUTDIR%/chm. + goto end +) + +if "%1" == "latex" ( + %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %OUTPUTDIR%/latex + echo. + echo.Build finished; the LaTeX files are in %OUTPUTDIR%/latex. + goto end +) + +if "%1" == "pdf" ( + %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %OUTPUTDIR%/pdf + pushd . + cd %OUTPUTDIR%\pdf + %PDFLATEX% TortoiseHG.tex + popd + echo. + echo.Build finished; the PDF file is in %OUTPUTDIR%/pdf. + goto end +) + +:end + + +
Change 1 of 1 Show Entire File doc/​Makefile Stacked
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
@@ -0,0 +1,75 @@
+# Makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +PAPER = + +# Internal variables. +PAPEROPT_a4 = -D latex_paper_size=a4 +PAPEROPT_letter = -D latex_paper_size=letter +ALLSPHINXOPTS = -d build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source + +.PHONY: help clean html web pickle htmlhelp latex changes linkcheck + +help: + @echo "Please use \`make <target>' where <target> is one of" + @echo " html to make standalone HTML files" + @echo " pickle to make pickle files" + @echo " json to make JSON files" + @echo " htmlhelp to make HTML files and a HTML help project" + @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" + @echo " changes to make an overview over all changed/added/deprecated items" + @echo " linkcheck to check all external links for integrity" + +clean: + -rm -rf build/* + +html: + mkdir -p build/html build/doctrees + $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) build/html + @echo + @echo "Build finished. The HTML pages are in build/html." + +pickle: + mkdir -p build/pickle build/doctrees + $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) build/pickle + @echo + @echo "Build finished; now you can process the pickle files." + +web: pickle + +json: + mkdir -p build/json build/doctrees + $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) build/json + @echo + @echo "Build finished; now you can process the JSON files." + +htmlhelp: + mkdir -p build/htmlhelp build/doctrees + $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) build/htmlhelp + @echo + @echo "Build finished; now you can run HTML Help Workshop with the" \ + ".hhp project file in build/htmlhelp." + +latex: + mkdir -p build/latex build/doctrees + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) build/latex + @echo + @echo "Build finished; the LaTeX files are in build/latex." + @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \ + "run these through (pdf)latex." + +changes: + mkdir -p build/changes build/doctrees + $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) build/changes + @echo + @echo "The overview file is in build/changes." + +linkcheck: + mkdir -p build/linkcheck build/doctrees + $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) build/linkcheck + @echo + @echo "Link check complete; look for any errors in the above output " \ + "or in build/linkcheck/output.txt."
Change 1 of 1 Show Entire File doc/​ReadMe.txt Stacked
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@@ -0,0 +1,22 @@
+TortoiseHg Documentation + +To build this documentation you need sphinx installed. On Ubuntu this +is the python-sphinx package. On Windows your best bet is +easy_install. + +To build PDF files you need latex packages. On Ubuntu this is +texlive-latex-extra and all of it's dependencies. On Windows the best +choice is miktex. + +Once all of the prerequisites are in place, you can use the makefile to +build targets: html htmlhelp latex + +Once latex is built, you have to cd into that output directory and run +make all-pdf to build the actual PDF file. + +Once htmlhelp is built, you have to run the actual help compiler on a +Windows machine. + +On Windows, if you have no make tool you can use build.bat. If HTML +compiler and miktex are installed you can directly generate chm +(build chm) and pdf (build pdf).
Change 1 of 1 Show Entire File doc/​TODO Stacked
 
 
 
 
 
 
 
 
1
2
3
4
5
6
@@ -0,0 +1,6 @@
+Needs an Intro page explaining TortoiseHg and it's ports. Include links +Changelog needs much more detail +Commit needs more detail, including ignore and guess dialogs +Add links to BB wiki and Mercurial wiki +Describe path editing and [auth] hgrc section +Need a page explaining merges and merge undo
Show Entire File doc/​source/​.static/​.keep Stacked
(No changes)
Change 1 of 1 Show Entire File doc/​source/​changelog.txt Stacked
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
@@ -0,0 +1,189 @@
+=========================== +TortoiseHg Changelog Viewer +=========================== + +.. module:: changelog.dialog + :synopsis: Dialog used to view log + +.. figure:: figures/log.png + :alt: Changelog + + Changelog viewer dialog + +The toolbar buttons from left to right: + +:guilabel:`Refresh` + Reload the revision history (if you commit in another window, etc) +:guilabel:`Filter` + Open revision filter dialog, also has drop-down for common filters +:guilabel:`Datamine` + Open datamine application for history searches and file annotations +:guilabel:`Other Parent` + Only active when viewing merge changesets, toggles parents +:guilabel:`Synchronize` + Communicate changes with other repositories + +The changelog tool is primarily used to visualize the revision history +of your repository. It presents a graph of the revision history, showing +the parent/child relationship of each change. At each revision you can +view the files that it modified and the contents of those changes. These +are the obvious features that a revision history browser provides. + +This changelog browser offers much more. + +Revision Graph Details +---------------------- + +The graph column shows the child-parent relationships between revisions +in your repository history. This column auto-sizes for as many lines of +ancestry that are required to visualize the revisions you have loaded. +The column does have a hard-limit width to prevent some degenerative +cases from breaking the viewer. + +On the right of the revision graph are three buttons. From top to bottom +these are: + +:guilabel:`column toggles` + toggle the display of columns in the graph +:guilabel:`next-N revisions` + load the next N revisions into the graph +:guilabel:`all revisions` + load all remaining revisions into the graph + +Revision Context Menus +---------------------- + +Right-clicking on a revision in the (top) graph pane will bring up the +revision context menu. + +:guilabel:`visualize change` + open this change in your visual diff tool +:guilabel:`display change` + open this changeset in the changeset browser (more below) +:guilabel:`diff to local` + display changes (visual diff) between this revision and your current + working directory +:guilabel:`update` + update your working directory to this revision [1] +:guilabel:`merge with` + merge with this revision [2] +:guilabel:`copy hash` + copy current revision's full hash to the clipboard +:guilabel:`export patch` + generate a patch file of this revision's changes +:guilabel:`email patch` + send this revision's changes to email recipient [3] +:guilabel:`bundle rev:tip` + create a bundle with all revs from selected to tip +:guilabel:`add/remove tag` + opens the TortoiseHg tag dialog with this revision selected +:guilabel:`backout` + create a backout changeset for selected revision +:guilabel:`revert` + revert working copy to this revision's contents, without updating working + directory parent revision. Use with care. +:guilabel:`strip` + Remove the selected revision and all of it's descendants from the repository [4] + + +If you right-click on a row other than the one that was currently selected, you get a different context menu. +This one is for visualizing diffs between two arbitrary revisions. + +:guilabel:`diff with selected` + Description +:guilabel:`visual diff with selected` [5] + Description +:guilabel:`email from here to selected` + Description +:guilabel:`bundle from here to selected` + Description +:guilabel:`merge with selected` [6] + Description + +1) Opens the TortoiseHg update/checkout dialog with this revision selected. +2) Opens the TortoiseHg merge dialog with this revision selected. +3) Opens the TortoiseHg email dialog with this revision selected. +4) The strip command will store the stripped revisions in a bundle file + that can later be reapplied. See also_ +5) :menuselection:`Settings --> Global --> TortoiseHg --> Visual Diff Command` +6) Only sensitive if the selected revision is your current working + directory parent + +.. _also: http://www.selenic.com/mercurial/wiki/index.cgi/EditingHistory + + +File List Context Menus +----------------------- + +Right-clicking on filenames in the file list (bottom left) pane will +bring up a context menu for the selected file: + +:guilabel:`visual diff` + Open this revision of the file in your visual editor[1] +:guilabel:`diff to local` + Visualize differences between this revision and your checked out version +:guilabel:`save at revision` + Write this revision of the file to specified location +:guilabel:`file history` + Show revisions that modified this file [2] +:guilabel:`annotate file` + Open this file in the datamine app, annotated at this revision +:guilabel:`revert file contents` + Checkout this specific revision of this file [3] + +1) :menuselection:`Settings --> Global --> TortoiseHg --> Visual Editor` +2) Does not show revisions where a file was deleted, as this is only a + manifest change, it does not modify the file's history. +3) The new contents will appear as local changes and must be committed. + + +Changeset browser +----------------- +The changelog and datamine tools can open the changeset browser to view +a single revision or the combined effect of a range of revisions. The +changeset browser is very similar to the commit and shelve tools. It has +a file list on the left of all files that have been changed, and a diff +pane on the right with the changes to each file. + +In release 0.7 of TortoiseHg, the 'diff change with' changeset browser +now supports change selection. You can select files and hunks that you +wish to extract from the changeset(s) you are browsing and write them to +a patch file using the :guilabel:`Save as` toolbar button. This is a very +efficient way to cherry pick changes made to a repository. +Unfortunately, TortoiseHg still does not have a dialog for importing +changes into a repository, so this must be done on the command line with +the :command:`hg import` command. + +This changeset browser also supports the :kbd:`CTRL-C` keyboard +accelerator to copy hightlighted diff hunks to the clipboard. + +Configurables +------------- + +The changelog browser has a few configurable options that can be set in +the TortoiseHg Settings dialog on the Changelog tab. + +:guilabel:`Author coloring` + If true, each author's changeset will be given a unique color +:guilabel:`Long Summary` + Concatenate commit message lines until 80 chars are reached +:guilabel:`Graph batch limit` + Number of revisions to read in each batch load +:guilabel:`Copy Hash` + Copy a revision's changeset id hash to the clipboard when selected + +The exact colors given to particular users can be configured by adding +lines like these to your :file:`Mercurial.ini` file: :: + + [tortoisehg] + authorcolor.USERNAME = color + +The changelog browser also respects the following settings on the +TortoiseHg tab: + +:guilabel:`Tab Width` + Number of spaces to expand tabs in diffs +:guilabel:`Max Diff Size` + Maximum size of file to be diffed +:guilabel:`Bottom Diffs` + Show diffs below file list
Change 1 of 1 Show Entire File doc/​source/​commit.txt Stacked
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
@@ -0,0 +1,320 @@
+====================== +TortoiseHg Commit Tool +====================== + +.. module:: commit.dialog + :synopsis: Dialog used to perform commit + +.. warning:: + The win32text extension can cause trouble with hunk selection. This + has been resolved in Mercurial 1.3 and TortoiseHg 0.8, but requires + proper configuration. See `issue #82 <http://bitbucket.org/tortoisehg/stable/issue/82/>`_. + + +The commit tool is an important part of TortoiseHG. It is, in fact, the +only component that is launchable from the first level of the context +menu. This is mainly because it is the most heavily used tool. Not only +can you commit your changes, but you can examine the state of your +working directory and perform most routine maintenance tasks (add new +files, record renames, manage the repository ignore filter, etc). + +.. figure:: figures/commit.png + :alt: Commit dialog + + Commit dialog + +Features +-------- + +Walking across the toolbar, the buttons perform the following tasks: + +:guilabel:`Refresh` + Reload the state of the working directory. It tries to retain file + check and selection state across refresh, but not hunks. +:guilabel:`Commit` + Commit selected diffs in checked files. +:guilabel:`Undo` + Undo (rollback) last immediate commit. Your commit message will be + available in the message history, so you can re-do the commit after + fixing whatever problem you noticed. +:guilabel:`Revert` + Revert checked files to last revisioned state. +:guilabel:`Add` + Add checked files that were in unknown '?' state. These files will + then be versioned as soon as they are committed. +:guilabel:`Move` + Move checked files to specified target directory. This move is done + with Mercurial's full knowledge. +:guilabel:`Remove` + Delete checked unversioned files and/or remove (mark as deleted) any + versioned files. + +Below the toolbar are two other useful widgets: + +:guilabel:`Branch name` + Shows the current branch name of the working directory. Normally + this is informational only, but you can create (open) a new branch + by changing this name before making a commit. Do not use this + feature unless you understand Mercurial's named branches. +:guilabel:`Recent Commit Messages` + A drop-down list of the 10 most recent commit messages. The behavior + of this drop-down has been tweaked in 0.7, and should behave + naturally. +:guilabel:`Patch name` + If you have enabled the MQ extension, there will also be a text + entry for a new patch name. Entering a name here will switch the + commit tool into 'QNew' mode where the working directory changes + will be applied to a new patch. + +Below the file list are checkboxes that toggle the inclusion of the +various classes of files {modified, added, removed, deleted, unknown, +clean, ignored}. + +Removed means a revisioned file has been marked as removed. Deleted +means a revisioned file is missing but Mercurial has not been told to +quit tracking that file. For instance, if you rename a revisioned file +in the explorer, the original filename will show up as deleted and the +new filename will show up as unknown. By right-clicking on the new +filename you can bring up the rename guessing dialog which can discover +the rename by comparing file contents and mark the old file as removed +and the new file as added while recording the whole operation as a +rename. + +Change Selection (record) +------------------------- + +So what does that mean when it says the commit button will commit the +selected diffs in checked files? Simple, the native TortoiseHg commit +tool supports change selection instrinsically in the diff browser. This +means that all of the changes you make to versioned files can be +individually selected to be included in the commit or left out of the +commit (but left in the working directory). Fans of darcs or +Mercurial's record extension will recognize this immediately. + +When is this necessary? +~~~~~~~~~~~~~~~~~~~~~~~ + +Most often, it is when you have made more than a single coherent change +to your source code and you would like to commit your changes piecemeal. +This can often be accomplished by filtering the list of files in each +commit, but there will be times when your changes intermingle in the +same set of files and that's when this change selection feature becomes +indespensable. + +How does it work? +~~~~~~~~~~~~~~~~~ + +By double-clicking on individual change hunks in the diff panel. +*Technically, any action which activates a change hunk row will toggle +it's selection status. The spacebar will also work.* When a hunk is +unselected, the syntax highlighting of the diff is disabled and the +background is turned gray. At the same time, the file's diff header is +updated to show the current selection state, the selected hunk count and +changed lines will be updated. Toggle the hunk a second time to reselect +it for inclusion in your commit. + +When a file is partially selected for commit, it's icon is changed from +a checkbox to a radio button. At a glance at the file list, you should +be able to find which files are entirely included in the commit, +partially included, or excluded entirely. + +What happens at commit time? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The short answer is that the selected files and hunks are committed to +the repository and the unselected changes are left in your working +directory for the next commit. + +The long answer is a little more complicated. What happens behind the +scenes is that the files which are partially selected are backed up in a +safe location, reverted to their last revisioned state, have their +selected change hunks applied back to them, committed, and then finally +recovered from backup (thus placing the rejected change hunks back into +the working copy). + +For files which are not partially selected, the commit operation avoids +the entire *backup, revert, patch, commit, recover* round trip and +simply commits those files in place. + +This longer answer is only interesting when something goes wrong, which +on Windows unfortunately has a probability greater than 0. If some +program (virus checker, compiler) locks your file in the middle of this +process you may see an error about a failed patch. These errors are +recoverable, simply delete any new :file:`.rej` files and try the commit again. + + + +Keyboard navigation +------------------- + +:kbd:`CTRL-ENTER` + will trigger the commit +:kbd:`CTRL-C` + In the diff panel will copy the currently highlighted (not selected, + but highlighted) diff hunks to the clipboard. These can be pasted + into a text buffer to generate any arbitrary patch based from the + changes in your working directory. + +The code which copies the hunks to the clipboard is intelligent about +diff headers. If your highlighted list includes a hunk from a file but +not it's file diff header, the diff header will be added to the +clipboard in the appropriate location in the stream to make the +clipboard contents always be a valid patch. + + +File Context Menus +------------------ + +By right clicking on files in the file list, you will get a context menu +of commands that are applicable to the selected file. If you configure a +visual editor in :menuselection:`Settings --> Global --> TortoiseHg --> Visual Editor` +there will be an option to open the file in your editor. For unknown **?** +files, the context menu will allow you to detect renames (if you think +the unknown file was a copy or rename of a revisioned file) or configure +the repository's ignore filter (if the file should never be revisioned +and you want Mercurial to ignore it). + + +Merges +------ + +The commit tool has a special mode when it is opened in a repository +that is in a merged state (technically, this means the current working +directory has two parent revisions). The file list has no checkboxes and +the diff pane does not allow selections. The commit 'manifest' is +essentially immutable, you must commit the entire working directory +after a merge. + +The merge state *ms* column is especially useful in this mode. Files +that are marked with *R* are files where Mercurial and/or the user have +successfully merged (resolved) changes from both branches. Files that +are marked with *U* have unresolved changes. You can use the *resolve* +context menu option to restart the merge for that file, or you can use +the *edit* context menu option to resolve the conflict by hand. When the +conflict has been resolved, you use the *mark resolved* context menu +option, which changes the file's merge state to *R*. + +Mercurial will not allow you to commit a merge if any files have +unresolved *U* merge states. + +For your reference, *local* is the revision you had checked out when you +started the merge and *other* is the revision you merged with. + + +Commit Message Format +--------------------- + +If your project has guidelines for commit message format, you can +configure those in the settings tool. Once configured, the commit tool +will inform you if you try to commit with a non-conforming message. +There is also an :guilabel:`apply format` context menu option available +on the commit message pane that will try to enforce your policy. + +MQ patches +---------- + +Many advanced Mercurial users use the MQ extension to manage a patch +queue. TortoiseHg does not offer much in the way of support for MQ, but +the commit tool will at least recognize when a patch is applied. When a +patch is applied, the usual commit command will not work, so the commit +tool enters *patch refresh* mode. The title bar will say "refreshing +patch *patchname*" and the patch comment will appear in the commit +message pane. + +The commit tool will present the entire contents of the top patch +including any changes that are in your working directory (un-refreshed +changes). This is essentially what the qdiff command would show you. +There is, in fact, no way to get just the working copy diffs beyond +running :command:`hg diff` on the command line. The reason the dialog +operates in this mode is that it allow you to use the integrated change +selection features to move changes into or out of the top patch. You can +move entire files or single changes in or out of the patch. + +The :guilabel:`commit` button, which has been renamed :guilabel:`qrefresh` +in this context, it will refresh the top patch with just the changes you +have selected (including the patch description). This may be a bit confusing at first +because the changes you leave out of the patch are still going to be in +the working directory after the refresh, so it will look like nothing +has changed. + +So, in summary, using MQ with TortoiseHg is still almost entirely a +command line operation, but you can use :command:`hgtk ci` to refresh your +patches and take advantage of our excellent change selection support. + + +Configurables +------------- + +:menuselection:`Commit --> Username` + Sets username associated with your commits +:menuselection:`Commit --> External Tool` + Allows you to select Qct as the your commit tool [DEPRECATED] +:menuselection:`Commit --> Summary Line Length` + Configures a 'policy' limit for summary lines +:menuselection:`Commit --> Message Line Length` + Configures a 'policy' limit for message lines +:menuselection:`Commit --> Bottom Diffs` + Toggles diff pane from left to below file list +:menuselection:`TortoiseHg --> Max Diff Size` + Configures the diff size limit + +External tool configuration is deprecated and will be removed in 0.9 + +Changes since 0.7 +----------------- + +* The :guilabel:`Show Diff` button has been removed. Diffs are always shown. +* The commit tool no longer shows all diffs at startup. Only the first + currently selected file is shown. +* Added support for closing a named branch +* The commit tool is now launchable from the merge dialog +* The message pane context menu now has options for inserting selected + filenames, and configuring/applying a layout format. +* :guilabel:`Ctrl-O` keyboard accelerator for triggering commit has been replaced with + :guilabel:`CTRL-Enter` accelerator which is common to many THG dialogs +* Support for two-parent state (merging) has been improved, especially + the file context menus. +* There is now a limit on the size of files that will be diffed by the commit + and changelog tools. Files above this size will simply show a message + indicating why the file was not diffed. This limit (default: 1MB) is + configurable (per-repository if necessary) via the settings dialog + :menuselection:`TortoiseHg --> Max Diff Size`. +* You can specify the commiter and date via the command line: see + :command:`hgtk commit -h` for details +* The :file:`qct.py` extension file is no longer bundled. It must be + downloaded separately if you wish to use Qct. + + +Changes since 0.6 +----------------- + +Large changes were made to the commit tool in the 0.7 release. The +previous default tool, Qct, was unbundled and TortoiseHg's native commit +tool was promoted to the top spot. See the `FAQ <http://bitbucket.org/tortoisehg/stable/wiki/FAQ#tortoisehg-faq>`_ +for instructions on recovering Qct, if you must, but we suggest you first +read the rest of this page to understand how the native tool now measures up. + +The default layout of the native commit tool is different than Qct. The +file list is on the left side of the diff panel. This layout is actually +configurable if you prefer the Qct layout, simply set the +:menuselection:`Commit --> Bottom Diffs` configuration item to :guilabel:`True` +in the TortoiseHg settings dialog. This change will take affect the next time +you start the commit tool. + +Also different in the native commit tool is that all the diffs in the +working directory are shown in the diff panel at startup. Selecting +files in the file list will zoom to that file's diffs in the diff panel. +In Qct, selecting a file would refresh the diff pane with just that +file's diffs (which was also the behavior of the native tool before +0.7). The new behavior gives a better view of what the changeset being +committed will look like (it matches more closely to the changelog +view). + +New in the native commit tool in 0.7 is the auto-checking of +*M* odified, *A* dded, and *R* emoved files at startup as these are +all change types that are automatically included in any :command:`hg commit` +command with no arguments. Similarly, unknown *?* files are shown by +default at startup since that is standard behaviour for the :command:`hg status` +command. Qct was already doing both of these things, so this +will come as no surprise to Qct users. +
Change 1 of 1 Show Entire File doc/​source/​common.txt Stacked
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
@@ -0,0 +1,97 @@
+=============== +Common Features +=============== + +.. module:: common.dialog + :synopsis: Common features to all the dialog + +These features are commonly available in many TortoiseHg tools, so we +document them here just once. + +Geometry Restore +================ + +Our primary applications like commit, changelog, and datamine, will +restore their geometry and position from the last time they were run. +This includes maximization. + +If the state to be restored does not fit within your current screen +dimensions, the application will revert to factory default dimensions. + +The TortoiseHg dialogs which are more transitory in nature (clone, init, +synch, update, merge) simply allow the window manager to place them +where it wishes. + +Keyboard Accelerators +===================== + +We define a few keyboard accelerators that all of the TortoiseHg tools support. + +:kbd:`CTRL-Q` + quit the application, including all open windows + +:kbd:`CTRL-W` + close the current window (same as :kbd:`CTRL-Q` if only one window is open) + +:kbd:`CTRL-D` + visual diff of currently selected file or changeset + +:kbd:`CTRL-ENTER` + activation + +:kbd:`F5` + refresh + +On `Mac OS X <http://bitbucket.org/tortoisehg/stable/wiki/MacOSX>`_, the apple +(command) key is used as the modifier instead of :kbd:`CTRL`. However some +keyboard accelerators are internal to GTK+ so you must use the control key to +access cut-paste functionality, for instance. + +Visual Diffs +============ + +0.8 introduced a visual diff dialog that solves four usability issues: + +1) The ability to select visual diff tools for individual files +2) Allows you to use visual diff tools that fork backround processes +3) Allows you to use visual diff tools that do not support directory diffs +4) Provides feedback when no files were modified + +If you prefer the previous (<=0.7) behavior of directly launching your +visual diff tool, then you can recover that behavior via the user +settings dialog and :menuselection:`TortoiseHg --> Skip Diff Window`. + +Treeview searches +================= + +Many TortoiseHg dialogs use treeviews to present lists of data to the +user. The file lists in the status, commit, shelve, and changelog tools +are treeviews. The changelog graph pane is a treeview. And even the +annotate pane in the datamine tool is a treeview. + +Most of the TortoiseHg treeviews (as of release 0.8) are configured for +live searches. You simply ensure that the treeview has focus (by +clicking on a row), then begin typing. A small entry window will appear +with the text you have typed and the treeview will immediately jump to +the first row that matches the text you have entered thus far. As you +enter more keys, it refines it's search. + +* :kbd:`CTRL-F` will bring up the search window explicitly +* :kbd:`CTRL-G` will advance the search to the next match, +* :kbd:`SHIFT-CTRL-G` goes backwards +* The mouse scroll wheel will advance forwards and backwards through matching lines + +HG command dialog +================= + +Many TortoiseHg tools use the *hgcmd* dialog to run Mercurial commands +that could potentially be interactive. In release 0.8, this dialog was +changed to draw all error messages in a dark red color to give it more +contrast with normal output messages. + +The window also properly focuses its :guilabel:`close` button when the +command has completed, so a simple :kbd:`Enter` is that that is required +to close the window. + +*hgcmd* also responds appropriately to the global :kbd:`CTRL-W` and +more drastic :kbd:`CTRL-Q` accelerators.
Change 1 of 1 Show Entire File doc/​source/​conf.py Stacked
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
@@ -0,0 +1,190 @@
+# -*- coding: utf-8 -*- +# +# TortoiseHg documentation build configuration file, created by +# sphinx-quickstart on Tue Jul 21 23:42:44 2009. +# +# This file is execfile()d with the current directory set to its containing dir. +# +# The contents of this file are pickled, so don't put values in the namespace +# that aren't pickleable (module imports are okay, they're removed automatically). +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +import sys, os + +# If your extensions (or modules documented by autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +#sys.path.append(os.path.abspath('.')) + +# General configuration +# --------------------- + +# Add any Sphinx extension module names here, as strings. They can be extensions +# coming with Sphinx (named 'sphinx.ext.*') or your custom ones. +extensions = ['sphinx.ext.autodoc'] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['.templates'] + +# The suffix of source filenames. +source_suffix = '.txt' + +# The encoding of source files. +#source_encoding = 'utf-8' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = u'TortoiseHg' +copyright = u'2009, Steve Borho and others' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +# The short X.Y version. +version = '0.8' +# The full version, including alpha/beta/rc tags. +release = '0.8.1' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +#language = None + +# There are two options for replacing |today|: either, you set today to some +# non-false value, then it is used: +#today = '' +# Else, today_fmt is used as the format for a strftime call. +#today_fmt = '%B %d, %Y' + +# List of documents that shouldn't be included in the build. +#unused_docs = [] + +# List of directories, relative to source directory, that shouldn't be searched +# for source files. +exclude_trees = [] + +# The reST default role (used for this markup: `text`) to use for all documents. +#default_role = None + +# If true, '()' will be appended to :func: etc. cross-reference text. +#add_function_parentheses = True + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +#add_module_names = True + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +#show_authors = False + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + + +# Options for HTML output +# ----------------------- + +# The style sheet to use for HTML and HTML Help pages. A file of that name +# must exist either in Sphinx' static/ path, or in one of the custom paths +# given in html_static_path. +html_style = 'default.css' + +# The name for this set of Sphinx documents. If None, it defaults to +# "<project> v<release> documentation". +#html_title = None + +# A shorter title for the navigation bar. Default is the same as html_title. +#html_short_title = None + +# The name of an image file (relative to this directory) to place at the top +# of the sidebar. +html_logo = 'figures/thg_logo_92x50.png' + +# The name of an image file (within the static path) to use as favicon of the +# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +#html_favicon = None + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['.static'] + +# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, +# using the given strftime format. +#html_last_updated_fmt = '%b %d, %Y' + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +#html_use_smartypants = True + +# Custom sidebar templates, maps document names to template names. +#html_sidebars = {} + +# Additional templates that should be rendered to pages, maps page names to +# template names. +#html_additional_pages = {} + +# If false, no module index is generated. +#html_use_modindex = True + +# If false, no index is generated. +#html_use_index = True + +# If true, the index is split into individual pages for each letter. +#html_split_index = False + +# If true, the reST sources are included in the HTML build as _sources/<name>. +#html_copy_source = True + +# If true, an OpenSearch description file will be output, and all pages will +# contain a <link> tag referring to it. The value of this option must be the +# base URL from which the finished HTML is served. +#html_use_opensearch = '' + +# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). +#html_file_suffix = '' + +# Output file base name for HTML help builder. +htmlhelp_basename = 'TortoiseHgdoc' + + +# Options for LaTeX output +# ------------------------ + +# The paper size ('letter' or 'a4'). +#latex_paper_size = 'letter' + +# The font size ('10pt', '11pt' or '12pt'). +#latex_font_size = '10pt' + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, author, document class [howto/manual]). +latex_documents = [ + ('index', 'TortoiseHg.tex', ur'TortoiseHg Documentation', + ur'Steve Borho and others', 'manual'), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +latex_logo = 'figures/thg_logo_pdf.png' + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +#latex_use_parts = False + +# Additional stuff for the LaTeX preamble. +#latex_preamble = '' + +# Documents to append as an appendix to all manuals. +latex_appendices = ['faq'] + +# If false, no module index is generated. +#latex_use_modindex = True
Change 1 of 1 Show Entire File doc/​source/​datamine.txt Stacked
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
@@ -0,0 +1,104 @@
+=================== +TortoiseHg Datamine +=================== + +.. module:: datamine.dialog + :synopsis: Dialog used to search in the history + +The datamine application is used to inspect the revision history of your +repository. It is a tabbed application that supports two tab types, +*Search* and *Annotate*. + + +Search Tabs +----------- + +.. figure:: figures/search.png + :alt: Search dialog + + Search dialog + +The search tab is used to search (*grep*) through your entire revision +history for keywords, variable names, functions, etc... + +The text entry fields have these purposes: + +*regexp* + this is where you enter your regular expression search criteria. +*includes* + a comma separated list of paths to include in your search. If no + paths are given, the search is assumed to be repository wide. In + other words, specifying an include path actually narrows the search + criteria. +*excludes* + a comma separated list of paths to exclude from your search. + Exclusion patterns are applied after inclusion patterns. + +The toggle buttons below the entry fields are for: + +:guilabel:`Follow copies and renames` + follow searches through copies and renames out of inclusion filters +:guilabel:`Ignore case` + Perform the search without case considerations +:guilabel:`Show line numbers` + Show line numbers at the front of the matching lines +:guilabel:`Show all matching revisions` + Show every instance where the search criteria matches in a file, not + just the most recent revision. It shows +/- to indicate whether the + change adds or removes your search text. + + +Search tabs are named after the search string most recently used to +start a search. The :guilabel:`New Search` toolbar button will obviously open a +new search tab while the :guilabel:`Stop` button will terminate an ongoing search +(the :guilabel:`Stop` button is only sensitive when a search is in progress). + +Matches +------- + +Each match will be a link to a changeset and will have a descriptive +tooltip (author, date/time, summary). Right clicking on a matched line +will bring up a context menu with these features: + +:guilabel:`display change` + open a changeset window with this changeset, to see the full context +:guilabel:`annotate file` + open an annotation tab for this file at this revision +:guilabel:`file history` + open a changelog window with this file's revision history + +Annotate Tabs +------------- + +.. figure:: figures/annotate.png + :alt: Annotate tabs + + Annotate tabs + + +The revision graph has a simple context menu for opening the entire +changeset in the changeset browser. Activating a row in the revision +graph updates the file annotation to that revision. + +In the bottom pane is the actual annotation. Each line in the annotation +is also a link to the changeset which provided that line. Activating a +row will open that changeset in the changeset browser. + +The color scheme in the annotation pane is two tier. Authors are +determined by hue, and age is determined by saturation. The older a +change is, the lighter the color becomes. + +By right-clicking on the annotate pane's column headers (Line, Rev, +Source) you can bring up a menu for showing two optional columns: +:guilabel:`filename` and :guilabel:`user`. + +Configurables +~~~~~~~~~~~~~ + +The annotate tabs support the following configurations defined primarily +for other tools: + +:menuselection:`Changelog --> Author Coloring` + Give each author a separate color in the changelog graph +:menuselection:`TortoiseHg --> Tab width` + Number of spaces to expand tabs in diffs and annotate output
Change 1 of 1 Show Entire File doc/​source/​explorer.txt Stacked
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
@@ -0,0 +1,69 @@
+============================ +Windows Explorer Integration +============================ + +.. module:: explorer + :synopsis: Windows explorer integration + +Overlay Icons +------------- +TortoiseHg provides visual representation of the file status via overlay +icons in the MS-Explorer windows. This is similar to those that found on +other Tortoise client, such as TortoiseCVS and TortoiseSVN. + +Beginning from TortoiseHg version 0.5, the overlay icons are shared with +TortoiseSVN (version 1.5.x or later) via the support of TortoiseOverlays +(another project created by TortoiseSVN team). + +.. figure:: figures/overlayicons.png + :alt: Overlay icons + + Overlay icons in Icons view (this image shows release 0.7 overlays) + +In release 0.8, we added an :guilabel:`Update Icons` context menu option +which forces TortoiseHg to refresh the icons in the currently browsed +repository or directory of repositories. The taskbar icon will turn +green and the directory icons will turn into question marks while this +refresh is in progress. + +Performance Issues +------------------ +When the repository being viewed contains a large number of folders or +files, the overlay icons may appear case a perceivable delay in +displaying/refreshing the windows explorer. In most cases, the delay is +more prominent when the first time the repositories are viewed. +Subsequently the caching of the file system usually helps to reduce the +delay rather significantly. + +The delay may also be felt on repositories located on network drives or +other slower media. + +In 0.8, the new C++ shell extension is an order of magnitude faster than +the Python extension used in previous releases, but we still make the +overlays configurable via the taskbar menu. Simply click on the +Mercurial (droplet) icon in the system tray and select :guilabel:`Options`. +In the options dialog you can disable overlays globally, or enable them for +local disks only. + +Context Menus +------------- + +The TortoiseHg commands (GUI window & dialogs) may be accessed via the +context menu of Explorer windows. The TortoiseHg context menu is +context sensitive, which varies according to the folder being viewed. + +.. figure:: figures/contextmenu.png + :alt: Context menu + + Context menu for a folder under Mercurial revision control (version 0.7) + +Currently TortoiseHg provides only the most regularly used Mercurial +commands, hence the less frequently used, or newly add, Mercurial +commands may still need be accessed on the CLI (command line interface) +through the :file:`cmd.exe` windows. + +In 0.8, the new C++ shell extension makes the context menu somewhat +configurable via the taskbar menu. Simply click on the Mercurial +(droplet) icon in the system tray and select :guilabel:`Options`. +In the options dialog you can promote individual menu options to +the top menu.
Change 1 of 1 Show Entire File doc/​source/​faq.txt Stacked
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
@@ -0,0 +1,205 @@
+============== +TortoiseHg FAQ +============== + + +*What is TortoiseHg?* + A Windows shell extension for the Mercurial revision control system, similar to the Tortoise + clients for Subversion and CVS. It also includes an hgtk application for command line + use on many platforms. + +*What comes included in the TortoiseHg binary installer for Windows?* + `Mercurial <http://www.selenic.com/mercurial/wiki/index.cgi>`_, `kdiff3 <http://kdiff3.sourceforge.net/>`_, + `TortoisePlink <http://www.chiark.greenend.org.uk/%7Esgtatham/putty/>`_ and and one bonus extension: hgfold. + +*How can I get translations for the Explorer context menu?* + See the `Download <http://bitbucket.org/tortoisehg/stable/wiki/install>`_ wiki page + +*How do I do merges and arbitrary version checkouts in 0.8?* + Merges and updates intended to be done from within the Changelog tool (:guilabel:`View Changelog` menu option) + in 0.8. + +*How do I fix* ``failed to import extension hgext.hgconfig...`` *warnings?* + Upgrading to release 0.7.2 or later should fix these warnings, but there are further complications on Vista. + See `issue #135 <http://bitbucket.org/tortoisehg/stable/issue/135/>`_. + +*Why can't I connect to an ssh server (TortoisePlink.exe* ``...cannot execute specified...`` *error message)?* + Release 0.7.2 and later include a version of TortoisePlink that does not have extra library + dependencies, so upgrading will probably fix this problem. See also `ssh <http://bitbucket.org/tortoisehg/stable/wiki/ssh>`_. + +*How can I use Qct with TortoiseHG, after version 0.7?* + We recommend that you try the commit tool that comes with TortoiseHg before running back to Qct, but here + are the instructions should you decide to stick with ole' reliable: + + 1. Download and install Qct-1.7-standalone-win32.exe from http://qct.sourceforge.net + 2. Add (or merge) the following into your :file:`Mercurial.ini` :: + + [extensions] + qct = C:\path\to\qct.py + + [tortoisehg] + extcommit = qct + + [qct] + path = "C:\Program Files\qct\qct.exe" + + Now the :guilabel:`HG Commit` menu option should launch Qct, and :command:`hg qct` should work from the command + line and hgtk ci should also launch Qct. + + In 0.9, hgtk ci will no longer launch Qct. We will drop support for any external commit tools. + +*How can I use hgk (hg view) with TortoiseHg?* + Download `tclkit <http://www.equi4.com/tclkit>`_ and place it in your TortoiseHg directory. + Download the `hgk <http://www.selenic.com/repo/hg/raw-file/tip/contrib/hgk>`_ script from the Mercurial + repository and place it in your :file:`TortoiseHg\contrib` directory. Create an :file:`hgk.cmd` file and + place it in :file:`TortoiseHg\\scripts`. This file should contain:: + + @set HG=C:\Program Files\TortoiseHg\hg.exe + @"C:\Program Files\TortoiseHg\tclkit-win32.exe" "C:\Program Files\TortoiseHg\contrib\hgk" %* + + Then enable hgk in your :file:`Mercurial.ini` file:: + + [extensions] + hgk = + + [hgk] + path=C:\Program Files\TortoiseHg\scripts\hgk.cmd + vdiff=vdiff + + This allows you launch :command:`hg view` from the command line. + +*How can I use WinMerge as my visual diff tool?* + Add these lines to your personal :file:`Mercurial.ini` file :: + + [extdiff] + cmd.winmerge = C:\Program Files\WinMerge\WinMerge.exe + opts.winmerge = /e /x /ub /wl + + Now run the :guilabel:`Global Settings` tool. On the :guilabel:`TortoiseHg` tab, you should see + :guilabel:`winmerge` available in the drop-down list for :guilabel:`Visual Diff Command`. + Select :guilabel:`winmerge`, apply, then close. + + This same approach can be used to add nearly any visual diff tool, but be aware that your diff tool must + be able to support directory diffs if it is to be used by TortoiseHg, unless you are using release 0.8 or + later. + +*How can I use Araxis Merge as my visual diff tool?* + Add these lines to your personal :file:`Mercurial.ini` file :: + + [extdiff] + cmd.adiff=C:\Program Files\Araxis\Araxis Merge v6.5\compare.exe + opts.adiff=/wait + + Now run the :guilabel:`Global Settings` tool. On the :guilabel:`TortoiseHg` tab, you should see + :guilabel:`adiff` available in the drop-down list for :guilabel:`Visual Diff Command`. + Select :guilabel:`adiff`, apply, then close. + +*Does TortoiseHg work on Vista?* + TortoiseHg 0.8 works well on x86 and x64 versions of Vista and Windows 7. + +*How can I get the context menus working on 64-bit Vista?* + Upgrade to TortoiseHg 0.8 + +*I'm a CLI user, how do I disable the shell extensions (overlay icons and context menus)?* + If you have TortoiseHg 0.8 or later, you can disable overlays via the taskbar options menu. + The only way to disable the context menu is to rename :file:`ThgShell.dll` in your install directory + and then restart explorer (this completely disables the shell extension). + + If you have an older TortoiseHg release, run this command with appropriate permissions: + :command:`regsvr32 /u "C:\\Program Files\\TortoiseHg\\tortoisehg.dll` + Run that command without the :command:`/u` argument to re-enable the extensions. Both operations take effect + after the next reboot. + +*How is TortoiseHg configured?* + TortoiseHg gets configuration settings from two systems. + + 1. The Mercurial configuration system, which is three-tiered + 1. Site-wide :file:`Mercurial.ini` in :file:`%ProgramFiles%\\TortoiseHg` + 2. Per-User :file:`Mercurial.ini` in :file:`%UserProfile%` + 3. Per-Repository :file:`Mercurial.ini` in :file:`{repo-root}\.hg\hgrc` + 2. :file:`%APPDATA%\Tortoisehg` settings for application state (window positions, etc) + + These are configurables that are stored the Mercurial configuration system. :: + + [tortoisehg] + extcommit = None + vdiff = vdiff + editor = gvim + tabwidth = 4 + longsummary = True + copyhash = False + graphlimit = 500 + authorcolor = True + authorcolor.steve = blue + + See also :doc:`settings`, and `issue #50 <http://bitbucket.org/tortoisehg/stable/issue/50/>`_. + +*Is it possible to change fonts?* + In some cases, yes. The gtools based dialogs (commit, status, shelve) allow some font configuration. :: + + [gtools] + # font used in changeset viewer and commit log text + fontcomment = courier 10 + # font used for diffs in status and commit tools + fontdiff = courier 10 + # font used in file lists in status and commit tools + fontlist = courier 9 + + # make the integrated diff window appear at the bottom or side + # (applies to commit and status dialogs) + diffbottom = False + +*How do I switch GTK themes?* + In 0.7, the theme was selectable at install time. For other releases, (and after install on 0.7) you can + still do this manually + + * cd :file:`C:\\Program Files\\TortoiseHg\\share\\themes` (>=0.8, this is :file:`gtk\\share\\themes`) + * look at the themes in this directory, remember their names or keep this folder open. + * :command:`cd ..\\..\\etc\\gtk-2.0` + * edit :file:`gtkrc` and change the name of the theme you wish to use + * Vista may try to prevent you from editing the file directly. I work around this by copying to your desktop, + editing it there, then copying it back (and answering all the security dialogs) + * Changes immediately take affect on all newly launched applications + + You also should be able to download new themes and copy them into the :file:`share\\themes` directory and + then enable them in your :file:`gtkrc`. + +*After uninstalling, it left a bunch of DLL and PYD files behind.* + Reboot, like the uninstaller told you to :-) The uninstaller marked those files for removal at the next boot + since most of them could not be removed while your system was running. + +*How can I convert a subversion repository to Mercurial?* + You must install svn-win32-1.6 command line tools, then add them to your path. Then you must enable the + `convert <http://www.selenic.com/mercurial/wiki/index.cgi/ConvertExtension>`_ extension. At this point, + you should be able to use the :command:`hg convert` command to do the conversion. Please direct + problems/questions about the convert extension to the Mercurial mailing list or #mercurial on irc.freenode.net. + +*Where do TortoiseHg extensions look for external Python modules on Windows?* + TortoiseHg includes an entire Python distribution bundled up as DLLs. The standard library modules are all + in the :file:`library.zip` file in :file:`C:\Program Files\TortoiseHg`. + + If you try to use an extension that imports a non-standard Python module, you will find that the extension + will fail to load because it can't find the module. For example the ReviewBoard extension imports the + simplejson module, which is not part of the standard Python distribution. + + In order to make it work you need to add a couple of lines to the top of the extension's .py file, before + the line that imports the foreign module:: + + import sys + sys.path.append('C:\\path\\to\\module') + + Note that this will not work for modules distributed as .egg files; the supplied path must contain the + module's .py or .pyc files. + +*How do I fix odd characters in dialog?* + In 0.8, we no longer distribute multiple themes and switched default theme to MS-Windows. + As a result, it might causes an issue related default font of MS-Windows theme in some environments. + In order to fix this issue, add following setting to TortoiseHg's :file:`gtkrc` file:: + + style "msw-default" + { + font_name = "MS UI Gothic 9" + } + + You can find :file:`gtkrc` file in your TortoiseHg install directory: + i.e. :file:`C:\\Program Files\\TortoiseHg\\gtk\\etc\\gtk-2.0\\gtkrc`
Added image
Added image
Added image
Added image
Added image
Added image
Added image
Added image
Added image
Added image
Added image
Added image
Added image
Added image
Change 1 of 1 Show Entire File doc/​source/​index.txt Stacked
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
@@ -0,0 +1,34 @@
+.. TortoiseHG documentation master file, created by + sphinx-quickstart on Tue Jul 21 13:14:26 2009. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to TortoiseHG's documentation! +====================================== + +Contents: + +.. toctree:: + :maxdepth: 2 + + preface + intro + common + explorer + commit + shelve + changelog + datamine + synchronize + serve + settings + recovery + faq + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` +
Change 1 of 1 Show Entire File doc/​source/​intro.txt Stacked
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
@@ -0,0 +1,8 @@
+======================= +TortoiseHg Introduction +======================= + +.. module:: introduction + :synopsis: Introduce TortoiseHg and its various parts + +TortoiseHg is...
Change 1 of 1 Show Entire File doc/​source/​preface.txt Stacked
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
 
@@ -0,0 +1,72 @@
+======= +Preface +======= + +.. module:: preface + :synopsis: About this manual + +Audience +======== + +This book is written for computer literate folk who want to use Mercurial to manage their data, but are +uncomfortable using the command line client to do so. Since TortoiseHG is a windows shell extension +it's assumed that the user is familiar with the windows explorer and knows how to use it. +TortoiseHG comes with a simple python application, hgtk, which allows you to launch the TortoiseHg dialogs +on any platform that supports Mercurial, and PyGtk. This is the easiest way to start using TortoiseHg on Linux +and Mac OS X. + + +Reading guide +============= + +This Preface explains a little about the TortoiseHG project, the community of people who work on it, +and the licensing conditions for using it and distributing it. + +The :doc:`intro`, explains what TortoiseHG is, what it does, where it comes from and the +basics for installing it on your PC. + +The Chapter 2 and others. TODO when the structure of the manual is enough stable. + +TortoiseHG is free! +=================== + +TODO + +Community +========= + +TODO + +Acknowledgement +=============== + +TODO + +Conventions used in this manual +=============================== + +The following typographical conventions are used in this manual: + +:kbd:`CTRL-A` + Indicates a key, or combination of keys, to press. + +:guilabel:`Commit` + Indicates a label, button or anything that appears in user interfaces. + +:menuselection:`TortoiseHG... --> About` + Indicates a menu choice, or a combination of menu choice, tab selection and GUI label. + For example :menuselection:`TortoiseHG... --> Global settings --> Commit --> User name` + means do something in :guilabel:`User name` label under :guilabel:`Commit` tab selectable from the + menu choice :menuselection:`TortoiseHG... --> Global settings`. + +:file:`.hg/hgrc` + Indicates a filename or directory name. + +:command:`hgtk log` + Indicates a command to digit in command window. + +.. note:: + This is a note. + +.. warning:: + An important note. Pay attention. \ No newline at end of file
Change 1 of 1 Show Entire File doc/​source/​recovery.txt Stacked
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
@@ -0,0 +1,29 @@
+=================== +TortoiseHg Recovery +=================== + +.. module:: recovery.dialog + :synopsis: Dialog used to perform recovery operations + +.. figure:: figures/recover.png + :alt: Recovery dialog + +The buttons all equate to a single Mercurial command (save stop, obviously) + +:guilabel:`clean` + :command:`hg update --clean` - performs a clean checkout of the existing + working directory parent revision. Undoes a partially completed + merge. + +:guilabel:`rollback` + :command:`hg rollback` - undo operation for most recent repository + transaction. Can undo a commit or pull. + +:guilabel:`recover` + :command:`hg recover` - recover from a badly aborted operation. Rarely + necessary, Mercurial will tell you if it needs to be performed. + +:guilabel:`verify` + :command:`hg verify` - perform a consistency check of the contents of your + repository +
Change 1 of 1 Show Entire File doc/​source/​serve.txt Stacked
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
@@ -0,0 +1,52 @@
+================ +TortoiseHg Serve +================ + +.. module:: serve.dialog + :synopsis: Dialog used to start/stop the web server + +The serve tool is a wrapper for Mercurial's built-in web server. Once +launched, any computer can attach to the http port and browse your +repository(ies) or perform clone, pull, or even push operations (if you +configure your server to allow it). + +.. figure:: figures/serve.png + :alt: Web server dialog + +:guilabel:`Start` + start the web server + +:guilabel:`Stop` + stop the web server + +:guilabel:`Browse` + open your default browser at the built-in web server + +:guilabel:`Configure` + Configure repository web style, description, and access policies + +When the settings dialog is launched via the :guilabel:`Configure` button, it is +run in the context of the current repository. Please visit the +Mercurial wiki for detailed descriptions of what the various web +configurations are for. + +If you wish to serve a many repositories with a single web server +instance, you can create an :file:`hgwebdir.conf` text file with the +following contents: :: + + [paths] + / = /path/to/repositories/* + +The first path '/' is where the repositories will appear in the context +of the web server and the second path describes here the repositories +can be found on your computer. Multiple entries are possible. + +To use this file you must launch the TortoiseHg serve dialog from the +command line via: :command:`hgtk serve --webdir-conf=hgwebdir.conf`. In a +future release of TortoiseHg, we hope to make this launchable from the +shell context menu. + +Changes since 0.7 +----------------- +* Improved error handling +* i18n fixes
Change 1 of 1 Show Entire File doc/​source/​settings.txt Stacked
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
@@ -0,0 +1,82 @@
+=================== +TortoiseHg Settings +=================== + +.. module:: settings.dialog + :synopsis: Dialog used to set preferences + +.. figure:: figures/settings.png + :alt: Settings dialog + + Settings dialog + +The Settings dialog is used to configure both TortoiseHg and the +underlying Mercurial DVCS. Since TortoiseHg uses Mercurial's underlying +configuration system to store and retrieve its settings, these are +essentially the same thing. + +Mercurial on Windows has a three-tier configuration system. + +1) A site-wide configuration file in + :file:`C:\\Program Files\\TortoiseHg\\Mercurial.ini` + This file is read first and thus has the lowest priority. +2) A per-user configuration file in + :file:`C:\\Documents and Settings\\username\\Mercurial.ini` + This file is read second and thus can override settings in the + site-wide configuration file. +3) A per-repository configuration file in :file:`repo-root\\.hg\\hgrc` This + file is read last and can override site-wide and user global settings. + +The site-wide file can be overwritten on upgrades so it is recommended +that you do not make changes to this file. Instead, you should make +changes to your user :file:`Mercurial.ini` and/or the repository +:file:`hgrc` file. The TortoiseHg Settings dialog enforces this +suggestion by only operating in two modes: + +Global + edits your user :file:`Mercurial.ini` file +Repository + edits a repository :file:`.hg/hgrc` file + +In TortoiseHg 0.8, you may toggle between the two modes using the combo +box at the top of the dialog. + +Most TortoiseHg users will want to store all configurables in their +global user settings, and only use the repository hgrc to store paths +(remote repository aliases) and web settings, though it is possible to +override many configurables per-repository (a common example is to +configure a different username for use in a repository). Also note that +the user and repository configuration files may not exist until you run +the Settings dialog for the first time. + +Tabs +==== + +The Settings tool is a tabbed application. + +Each tab corresponds roughly to a section of your :file:`Mercurial.ini` +file, though there is a certain amount of overlap. Some sections were +split across multiple tabs for clarity. + +Every tab except of the :guilabel:`Paths` tab has the same format, a list of +configurable options with a drop-down combo box with possible values and +a history of options you have used for that setting. The configurable +name (label) has a tooltip which describes in more detail what you are +configuring and its default value. + +The :guilabel:`Paths` tab is where you can store URLs (paths) to related +repositories. It is rare to store paths in the site-wide or user +configuration files, most of the time you will only store these in a +repository configuration file. Mercurial has two special path names that +can be used as default targets for some operations. + +default + the default URL to pull from, usually clone source +default-push + the default push target when using the command line + +Please consult the Mercurial wiki for more detailed information about +these configurables (except for the first three tabs: +:guilabel:`TortoiseHg`, :guilabel:`Commit`, :guilabel:`Changelog`, which +are specifically for TortoiseHg). +
Change 1 of 1 Show Entire File doc/​source/​shelve.txt Stacked
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
@@ -0,0 +1,121 @@
+====================== +TortoiseHg Shelve Tool +====================== + +.. module:: commit.dialog + :synopsis: Dialog used to perform shelve/unshelve operations + +.. warning:: + The win32text extension can cause trouble with hunk selection. This + has been resolved in Mercurial 1.3 and TortoiseHg 0.8, but requires + proper configuration. See `issue #82 <http://bitbucket.org/tortoisehg/stable/issue/82/>`_. + +.. figure:: figures/shelve.png + :alt: Shelve dialog + + Shelve dialog + +Visually it is very similar to the status dialog in 0.6 and the commit +tool in 0.7. The purpose of this dialog is to allow the user to +*shelve* selected changes from the working directory, store them in a +special patch file in the repository, and then *unshelve* them back at a +later time. + +Walking across the toolbar, the buttons perform the following tasks: + +:guilabel:`Refresh` + Reload the state of the working directory. It retains file check and + selection state across refresh, but not hunks. +:guilabel:`Shelve` + Shelve selected diffs in checked files. +:guilabel:`Unshelve` + Replace the shelved changes back into the working directory. +:guilabel:`Revert` + Revert checked files to last revisioned state. +:guilabel:`Add` + Add checked files that were in unknown *?* state. + These files will then be versioned as soon as they are committed. +:guilabel:`Move` + Move checked files to specified target directory. + This move is done with Mercurial's full knowledge. +:guilabel:`Remove` + Delete checked unversioned files and/or remove (mark as deleted) any + versioned files. +:guilabel:`Show Diff` + This is a toggle button that shows and hides the entire diff panel. + Hiding the diff panel can sometimes be useful in large repositories. + +Below the file list are checkboxes that toggle the inclusion of the +various classes of files {modified, added, removed, deleted, unknown, +clean, ignored}. + +Shelving Changes +---------------- + + +Just like the commit tool, this dialog uses TortoiseHg's integrated hunk +selection code to allow the user to select the files and change hunks to +move to the shelf. When you press the shelve button, the selected +changes are removed from the working directory and placed in a patch +file. If the shelf already had changes in it, you will be asked whether +to replace those changes or to merge these new changes into it. When +the shelf has changes, the unshelve button will be active. + +When the unshelve button is pressed, the shelved changes are reapplied +to the working directory. + +How is this different than record/commit? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Shelved changes are physically removed from the working directory until +you unshelve them. This means you can build your project and run tests +on it while the shelved changes are gone. This is safer than selecting +changes at build time since you can test whether the change being +committed is valid. + +Shelving changes is also useful for removing partially completed work to +make sure it doesn't interfere with the debugging of other changes you +are making. + +Caveat: the shelved changes are stored in a patch that is based on the +current working directory contents. There's no guarantee that the patch +can be cleanly reapplied later if the shelved changes conflict with +changes made to your code after the shelving. + +How is this different than MQ? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +A shelf is, in effect, a single unnamed MQ patch that is never converted +into a changeset. The shelve tool can be useful when you are +maintaining a patch queue, since it can hold changes from one patch and +re-apply them to another patch (or an entirely new patch). + +How is this different than attic? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The attic extension is a super-set of the shelve feature. In particular, +attic allows you to have several named *shelves* which can be saved and +restored independently. TortoiseHg doesn't support the attic extension +in 0.7, but will probably support attic like features in future +releases. + +Keyboard navigation +------------------- + +:guilabel:`CTRL-C` + in the diff panel will copy the currently highlighted (not selected, + but highlighted) diff hunks to the clipboard. These can be pasted + into a text buffer to generate any arbitrary patch based from the + changes in your working directory. + +The code which copies the hunks to the clipboard is intelligent about +diff headers. If your highlighted list includes a hunk from a file but +not it's file diff header, the diff header will be added to the +clipboard in the appropriate location in the stream to make the +clipboard contents always be a valid patch. + +Configurables +------------- + +* :menuselection:`TortoiseHg --> Bottom Diffs` +* :menuselection:`TortoiseHg --> Tab Width`
Change 1 of 1 Show Entire File doc/​source/​synchronize.txt Stacked
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
@@ -0,0 +1,144 @@
+====================== +TortoiseHg Synchronize +====================== + +.. module:: synchronize.dialog + :synopsis: Dialog used to perform synchronization operations + +.. figure:: figures/synchronize.png + :alt: Synchronize dialog + + Synchronize dialog + +The synchronize tool is used to transmit changesets between repositories +or optionally to email recipients. + +:guilabel:`Incoming` + show changesets that would be pulled from target repository +:guilabel:`Pull` + pull incoming changesets from target repository +:guilabel:`Outgoing` + show changesets that would be pushed to target repository +:guilabel:`Push` + push outgoing changesets to target repository +:guilabel:`Email` + send outgoing changesets (to target repository) as email +:guilabel:`Stop` + stop current operation +:guilabel:`Configure` + configure repository paths (aliases) + +Below the toolbar are two buttons and a text entry: + +:guilabel:`Repo:` + browse for a local repository to synchronize with +:guilabel:`Bundle:` + browse for a local bundle file to pull from + +The text entry/combo box is where you enter or select paths of target +repositories. The synchronize tool will seed the drop-down list with +path aliases configured for this repository. + +The :guilabel:`Post Pull Operation` frame contains radio buttons for +selecting the operation which is performed after a pull. This behavior +is configurable via the :guilabel:`Configure` button. You can select a +default behavior for your user account and override that selection on a +per-repository basis. + +:guilabel:`Nothing` + No operations are performed after a pull. You will be allowed to + view the pulled changesets in the log viewer, and you will have the + option to update to the new tip if applicable. +:guilabel:`Update` + Automatically update to the new branch tip if, and only if, new + revisions were pulled into the local repository. This could trigger + a merge if the pulled changes conflict with local uncommitted + changes. +:guilabel:`Fetch` + Equivalent to hg fetch. See the fetch extension documentation for + it's behavior. +:guilabel:`Rebase` + Equivalent to pull --rebase. See the rebase extension documentation + for it's behavior. Rebase operations disable connections to any + changelog tools, since it is very destructive to any app which is + holding a repository object. + +The :guilabel:`use proxy` button is a quick way to disable your proxy +configuration for individual operations. The button is only sensitive +when an http proxy is configured. + +All operations which require authentication will pop up dialog boxes to +get the required information from the user. TortoiseHg uses the +TortoisePlink tool (borrowed from the TortoiseSVN distribution) to +handle *ssh:* connections and authentication. See the FAQ_ for help if +you have trouble connecting to ssh servers. + +.. _FAQ: http://bitbucket.org/tortoisehg/stable/wiki/FAQ#tortoisehg-faq + +Under the :guilabel:`Advanced Options` fold-up panel are a number of +configurables that are valid for most push/pull operations. + +:guilabel:`Force pull or push` + override warnings about multiple heads or unrelated repositories +:guilabel:`Target Revision` + to avoid sending all revisions +:guilabel:`Remote Command` + provides -e argument +:guilabel:`Show patches` + show diffs in incoming and outging changes +:guilabel:`Show Newest First` + reverse order that changesets are listed +:guilabel:`Show No Merges` + filter out merge changesets from output (does not affect push/pull) + + +After Pull +---------- + +After changesets are pulled into your repository, two buttons may appear +at the bottom of the dialog: + +:guilabel:`View pulled changesets` + Open the changelog viewer and inspect pulled changesets +:guilabel:`Update to tip` + Update your working directory to the new tip + +Either button may be hidden if it is not applicable. + +Email +----- + +.. figure:: figures//email.png + :alt: Email dialog + + Email dialog + +The email dialog can be launched from two TortoiseHg tools. + +1) The changelog tool, in which case the user intends to email a single + revision or a range of revisions. + +2) The synchronize tool, in which case the user intends to email all + outgoing changes to the current target repository (it's good practice to + check the outgoing changes before launching the email dialog). + +The :guilabel:`Send` button is obvious, and the :guilabel:`Configure` +dialog predictably opens the TortoiseHg Settings dialog to the email tab +where you can configure your SMTP settings and set default +:guilabel:`To:` and :guilabel:`From:` addresses. + +:guilabel:`In-Reply-To:` can be used to get your patches properly +threaded in mailing lists. + +Please consult the Mercurial documentation for the differences between +plain patches, HG patches, Git patches, and bundles. + +Changes since 0.7 +----------------- + +* Path drop-down list no longer includes most-recently-used paths. It + only includes configured repository paths. +* Email dialog now has buttons for configuring in-reply-to tags and the + attachment types. +* Email dialog now sends an intro message only when one has been + entered, regardless of patch count.
 
505
506
507
508
509
510
511
 
 
 
512
 
 
 
 
 
 
 
 
513
514
515
516
 
517
518
519
 
505
506
507
 
 
 
 
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
 
523
524
525
526
@@ -505,15 +505,22 @@
  wfile = util.localpath(self.curfile)   wfile, ext = os.path.splitext(os.path.basename(wfile))   filename = "%s@%d%s" % (wfile, self.currev, ext) - fd = gtklib.NativeSaveFileDialogWrapper(Title=_("Save file to"), - InitialDir=self.cwd, - FileName=filename) - result = fd.run() + result = gtklib.NativeSaveFileDialogWrapper(Title=_("Save file to"), + InitialDir=self.cwd, + FileName=filename).run()   if result: + if os.path.exists(result): + res = gdialog.Confirm(_('Confirm Overwrite'), [], self, + _('The file "%s" already exists!\n\n' + 'Do you want to overwrite it?') % result).run() + if res != gtk.RESPONSE_YES: + return + os.remove(result) +   q = Queue.Queue()   cpath = util.canonpath(self.repo.root, self.cwd, self.curfile)   hgcmd_toq(self.repo.root, q, 'cat', '--rev', - str(self.currev), '--output', result, cpath) + str(self.currev), '--output', fromutf(result), cpath)     def diff_to_local(self, menuitem):   if not self.curfile:
Change 1 of 1 Show Entire File hggtk/​gdialog.py Stacked
 
502
503
504
505
 
506
507
508
 
502
503
504
 
505
506
507
508
@@ -502,7 +502,7 @@
  file_path = os.path.join(pathroot, file)   util.system("%s \"%s\"" % (editor, file_path),   environ={'HGUSER': self.ui.username()}, - onerr=util.Abort, errprefix=_('edit failed')) + onerr=self.ui, errprefix=_('edit failed'))     editor = (self.ui.config('tortoisehg', 'editor') or   self.ui.config('gtools', 'editor') or
Change 1 of 3 Show Entire File hggtk/​hgemail.py Stacked
 
345
346
347
348
349
350
351
352
 
361
362
363
 
 
 
364
365
366
 
375
376
377
378
 
 
 
 
345
346
347
 
 
348
349
350
 
359
360
361
362
363
364
365
366
367
 
376
377
378
 
379
380
381
@@ -345,8 +345,6 @@
  cmdline.insert(2, '--test')   if subjtext:   cmdline += ['--subject', subjtext] - if self._intro: - cmdline += ['--intro']   if self._bundle.get_active():   cmdline += ['--bundle']   if '--outgoing' in self.revargs: @@ -361,6 +359,9 @@
  start = self.descbuffer.get_start_iter()   end = self.descbuffer.get_end_iter()   desc = self.descbuffer.get_text(start, end) + if desc and self._intro: + cmdline += ['--intro'] + tmpfile = None   try:   fd, tmpfile = tempfile.mkstemp(prefix="thg_emaildesc_")   os.write(fd, desc) @@ -375,4 +376,6 @@
  finally:   if oldpager:   os.environ['PAGER'] = oldpager - os.unlink(tmpfile) + if tmpfile: + os.unlink(tmpfile) +
Change 1 of 1 Show Entire File hggtk/​hginit.py Stacked
 
158
159
160
161
 
162
163
164
 
158
159
160
 
161
162
163
164
@@ -158,7 +158,7 @@
  except:   pass   - shlib.shell_notify(dest) + shlib.shell_notify([dest])     dialog.info_dialog(self, _('New repository created'),   _('in directory %s') % hglib.toutf(os.path.abspath(dest)))
Change 1 of 1 Show Entire File hggtk/​history.py Stacked
 
661
662
663
664
665
666
667
668
 
 
 
669
670
671
 
661
662
663
 
 
 
 
 
664
665
666
667
668
669
@@ -661,11 +661,9 @@
  def export_patch(self, menuitem):   rev = self.currow[treemodel.REVID]   filename = "%s_rev%s.patch" % (os.path.basename(self.repo.root), rev) - fd = gtklib.NativeSaveFileDialogWrapper(Title=_('Save patch to'), - InitialDir=self.repo.root, - FileName=filename) - result = fd.run() - + result = gtklib.NativeSaveFileDialogWrapper(Title=_('Save patch to'), + InitialDir=self.repo.root, + FileName=filename).run()   if result:   if os.path.exists(result):   res = gdialog.Confirm(_('Confirm Overwrite'), [], self,
 
1
2
3
4
 
10
11
12
13
 
14
15
16
 
 
1
2
3
 
9
10
11
 
12
13
14
15
@@ -1,4 +1,3 @@
-# -*- coding: UTF-8 -*-  """Cell renderer for directed graph.    This module contains the implementation of a custom GtkCellRenderer that @@ -10,7 +9,7 @@
 just be for the background.  """   -__copyright__ = "Copyright 2005 Canonical Ltd." +__copyright__ = "Copyright 2005 Canonical Ltd."  __author__ = "Scott James Remnant <scott@ubuntu.com>"    import math