Mercurial > hg
comparison tests/test-convert.t @ 30661:ced0d686ecb3
convert: add config option to control storing original revision
common.commit.__init__ sets saverev=True by default. The side effect
of this is that the hg sink will always set the "convert_revision"
extras key to the commit being converted.
This patch adds a config option to disable this behavior.
While most consumers will want "convert_revision" to be a) written
b) with the exact Git commit that was converted, some have use cases
that prefer otherwise. In my case, I am performing significant
rewrites of a Git repository *before* it is fed into `hg convert`.
I have to do this because `hg convert` does not easily support the kind
of transform I desire, even with extensions. (For the curious, I am
"linearizing" the history of a GitHub repo by removing merge commits
which add little value to the final history. It isn't easy to do this
during `hg convert` because of Mercurial's file copy/rename metadata
requirements.)
In my scenario, my pre-convert transform stores a "convert_revision"
key in the Git commit object containing the original Git commit ID.
I want this original Git commit ID carried forward to Mercurial. By
disabling the setting of this extra during `hg convert` and copying
the value from the Git commit object, I can have the final
"convert_revision" extra key contain the original Git commit ID. An
added test verifies this exact scenario.
This feature could likely be implemented for other VCS sources. But
until someone needs the feature, I'm inclined to hold off implementing.
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Thu, 22 Dec 2016 23:28:35 -0700 |
parents | 1f21a6835604 |
children | 2cbbd4622ab0 |
comparison
equal
deleted
inserted
replaced
30660:1f21a6835604 | 30661:ced0d686ecb3 |
---|---|
277 "branch" are not allowed to be copied. | 277 "branch" are not allowed to be copied. |
278 convert.git.remoteprefix | 278 convert.git.remoteprefix |
279 remote refs are converted as bookmarks with | 279 remote refs are converted as bookmarks with |
280 "convert.git.remoteprefix" as a prefix followed by a /. The | 280 "convert.git.remoteprefix" as a prefix followed by a /. The |
281 default is 'remote'. | 281 default is 'remote'. |
282 convert.git.saverev | |
283 whether to store the original Git commit ID in the metadata | |
284 of the destination commit. The default is True. | |
282 convert.git.skipsubmodules | 285 convert.git.skipsubmodules |
283 does not convert root level .gitmodules files or files with | 286 does not convert root level .gitmodules files or files with |
284 160000 mode indicating a submodule. Default is False. | 287 160000 mode indicating a submodule. Default is False. |
285 | 288 |
286 Perforce Source | 289 Perforce Source |