##// END OF EJS Templates
Enhance gitdiffs help text
Thomas Arendsen Hein -
r7328:3909e2c2 default
parent child Browse files
Show More
@@ -216,33 +216,39 b' PYTHONPATH::'
216 216 gives 3, 4 and 5. Similarly, a range of 4:2 gives 4, 3, and 2.
217 217 ''')),
218 218
219 (['gitdiffs'], _('Using git Diffs'),
219 (['gitdiffs'], _('Git Extended Diff Format'),
220 220 _(r'''
221 In several places, Mercurial supports two separate variations on
222 the unified diff format: normal diffs, as are de facto standardized
223 by GNU's patch utility, and git diffs, invented for the git VCS.
221 Mercurial's default format for showing changes between two versions
222 of a file is compatible to the unified format of GNU diff, which
223 can be used by GNU patch and many other standard tools.
224 224
225 The git diff format is an addition of some information to the normal
226 diff format, which allows diff to convey changes in file permissions
227 as well as the creation, deletion, renaming and copying of files, as
228 well as diffs for binary files (unsupported by standard diff),
229 operations which are very useful to modern version control systems
230 such as Mercurial, in trying to faithfully replay your changes.
225 While this de facto standardized format is often enough, there are
226 cases where additional change information should be included in the
227 generated diff file:
228
229 - executable status
230 - copy or rename information
231 - changes in binary files
232 - creation or deletion of empty files
231 233
232 In building Mercurial, we made a choice to support the git diff
233 format, but we haven't made it the default. This is because for a
234 long time, the format for unified diffs we usually use has been
235 defined by GNU patch, and it doesn't (yet) support git's extensions
236 to the diff format. This means that, when extracting diffs from a
237 Mercurial repository (through the diff command, for example), you
238 must be careful about things like file copies and renames (file
239 creation and deletion are mostly handled fine by the traditional
240 diff format, with some rare edge cases for which the git extensions
241 can be used). Mercurial's internal operations (like push and pull)
242 are not affected by these differences, because they use a different,
243 binary format for communicating changes.
234 Mercurial adopted the extended diff format which was invented for
235 the git VCS to support above features.
236
237 The git extended diff format is not produced by default, because
238 there are only very few tools (yet) which understand the additional
239 information provided by them.
244 240
245 To use git diffs, use the --git option for relevant commands, or
246 enable them in a hgrc, setting 'git = True' in the [diff] section.
241 This means that, when generating diffs from a Mercurial repository
242 (e.g. with "hg export"), you should be careful about things like
243 file copies and renames or other things mentioned above, because
244 when applying a standard diff to a different repository, this extra
245 information is lost. Mercurial's internal operations (like push and
246 pull) are not affected by this, because they use a different, binary
247 format for communicating changes.
248
249 To make Mercurial produce the git extended diff format, use the
250 --git option available for many commands, or set 'git = True' in the
251 [diff] section of your hgrc. You do not need to set this option when
252 importing diffs in this format or using them in the mq extension.
247 253 ''')),
248 254 )
General Comments 0
You need to be logged in to leave comments. Login now