##// END OF EJS Templates
convert: apply the appropriate phases to the destination (issue4165)...
convert: apply the appropriate phases to the destination (issue4165) If the conversion doesn't change the hash, and the cset is public in the source, it should be public in the destination. (This can happen if file remapping is done that doesn't affect the initial commits.) This also propagates the secret phase from the source, regardless of the hash, because presumably the content is what is secret. Otherwise, the destination commit stays in the draft phase. Maybe any draft cset with an unchanged hash should be changed to public, because it has effectively been shared, but convert pretty strongly implies throwing away (or at least readonly archiving) the source repo. The change in the rollback output is because the name of the outer transaction is now 'convert', which seems more accurate. Unfortunately, the memctx won't indicate the hash prior to committing, so the proper phase can't be applied with the commit. The repo is already write locked in mercurial_sink.before().

File last commit:

r12083:ebfc4692 stable
r25571:1abfe639 default
Show More
diffs.txt
29 lines | 1.3 KiB | text/plain | TextLexer
Mercurial's default format for showing changes between two versions of
a file is compatible with the unified format of GNU diff, which can be
used by GNU patch and many other standard tools.
While this standard format is often enough, it does not encode the
following information:
- executable status and other permission bits
- copy or rename information
- changes in binary files
- creation or deletion of empty files
Mercurial also supports the extended diff format from the git VCS
which addresses these limitations. The git diff format is not produced
by default because a few widespread tools still do not understand this
format.
This means that when generating diffs from a Mercurial repository
(e.g. with :hg:`export`), you should be careful about things like file
copies and renames or other things mentioned above, because when
applying a standard diff to a different repository, this extra
information is lost. Mercurial's internal operations (like push and
pull) are not affected by this, because they use an internal binary
format for communicating changes.
To make Mercurial produce the git extended diff format, use the --git
option available for many commands, or set 'git = True' in the [diff]
section of your configuration file. You do not need to set this option
when importing diffs in this format or using them in the mq extension.