changeset 7293:3549659450e6

help: add a topic on git diffs (issue1352)
author Dirkjan Ochtman <dirkjan@ochtman.nl>
date Thu, 30 Oct 2008 08:21:20 +0100
parents 1493d1e05ca3
children f933076a19fc
files mercurial/help.py tests/test-globalopts.out tests/test-help.out
diffstat 3 files changed, 34 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/help.py	Wed Oct 29 10:55:51 2008 -0700
+++ b/mercurial/help.py	Thu Oct 30 08:21:20 2008 +0100
@@ -215,4 +215,34 @@
     A range acts as a closed interval. This means that a range of 3:5
     gives 3, 4 and 5. Similarly, a range of 4:2 gives 4, 3, and 2.
     ''')),
+
+    (['gitdiffs'], _('Using git Diffs'),
+     _(r'''
+    In several places, Mercurial supports two separate variations on
+    the unified diff format: normal diffs, as are de facto standardized
+    by GNU's patch utility, and git diffs, invented for the git VCS.
+
+    The git diff format is an addition of some information to the normal
+    diff format, which allows diff to convey changes in file permissions
+    as well as the creation, deletion, renaming and copying of files, as
+    well as diffs for binary files (unsupported by standard diff),
+    operations which are very useful to modern version control systems
+    such as Mercurial, in trying to faithfully replay your changes.
+
+    In building Mercurial, we made a choice to support the git diff
+    format, but we haven't made it the default. This is because for a
+    long time, the format for unified diffs we usually use has been 
+    defined by GNU patch, and it doesn't (yet) support git's extensions
+    to the diff format. This means that, when extracting diffs from a
+    Mercurial repository (through the diff command, for example), you
+    must be careful about things like file copies and renames (file
+    creation and deletion are mostly handled fine by the traditional
+    diff format, with some rare edge cases for which the git extensions
+    can be used). Mercurial's internal operations (like push and pull)
+    are not affected by these differences, because they use a different,
+    binary format for communicating changes.
+
+    To use git diffs, use the --git option for relevant commands, or
+    enable them in a hgrc, setting 'git = True' in the [diff] section.
+    ''')),
 )
--- a/tests/test-globalopts.out	Wed Oct 29 10:55:51 2008 -0700
+++ b/tests/test-globalopts.out	Thu Oct 30 08:21:20 2008 +0100
@@ -205,6 +205,7 @@
  environment  Environment Variables
  revisions    Specifying Single Revisions
  multirevs    Specifying Multiple Revisions
+ gitdiffs     Using git Diffs
 
 use "hg -v help" to show aliases and global options
 Mercurial Distributed SCM
@@ -267,6 +268,7 @@
  environment  Environment Variables
  revisions    Specifying Single Revisions
  multirevs    Specifying Multiple Revisions
+ gitdiffs     Using git Diffs
 
 use "hg -v help" to show aliases and global options
 %% not tested: --debugger
--- a/tests/test-help.out	Wed Oct 29 10:55:51 2008 -0700
+++ b/tests/test-help.out	Thu Oct 30 08:21:20 2008 +0100
@@ -96,6 +96,7 @@
  environment  Environment Variables
  revisions    Specifying Single Revisions
  multirevs    Specifying Multiple Revisions
+ gitdiffs     Using git Diffs
 
 use "hg -v help" to show aliases and global options
  add          add the specified files on the next commit
@@ -154,6 +155,7 @@
  environment  Environment Variables
  revisions    Specifying Single Revisions
  multirevs    Specifying Multiple Revisions
+ gitdiffs     Using git Diffs
 hg add [OPTION]... [FILE]...
 
 add the specified files on the next commit