[import/export named branches using evolve and empty git hashes] (was: graft/rebase without changing the hash)
Uwe Brauer
oub at mat.ucm.es
Mon Nov 28 13:54:46 UTC 2022
Hi hg-git developers
> Hi Uwe,
> On 11/26/22 13:44, Dr. Arne Babenhauserheide wrote:
> The parents are also part of the hash calculation.
> Besides, hg-git includes the branch name into the resulting Git
> commit, unless it is `default`. I don't remember how configurable that
> is (nor even if it works the same way with the most recent hg-git
> versions), BUT this is not the fundamental problem:
> In Git, the parent commits hashes are also part of a given commit hash.
> The bottom line would be that what you are asking is conceptually
> contradictory with this whole class of DVCSes where any change set is
> anchored in the strongest possible way to the context (i.e., its
> parents) in which it was produced. For completeness, this is not the
> case of Pijul (https://pijul.org, one of the youngest systems around)
> nor darcs (patch-based, 2 years older than Git and Mercurial).
I have to confess that I am very confused now, as I will explain below,
Basic idea:
I have a working solution for «importing» and «exporting» named branches
to git. The idea is to use evolve, and to use the rebase and amend command.
This generates new changesets, with new HG Hashes but *empty* Git
hashes, these I can push (with -f)
These changes can in be pulled back to git if
git config pull.rebase true
Is set.
Here is the workflow,
1) Workflow 1
a) you created a named branch, and when you pull
A) hg phase -d -f -r somepublic-changes
B) hg rebase -s git-commit -d last-commit-named-branch
C) some HG changesets are not obsolete
D) new HG changesets are generated with *new* HG HASHES, but
*without* a git hash!!
E) hg push -f
b) GIT pulls with the option mentioned above
2) Workeflow 2
a) GIT has generated a new git branch,
A) you pull
B) hg up (to the base of the git branch)
C) hg branch name-of-git-branch
D) hg amend
E) hg evolve (most times not necessary)
F) hg push -f
b) GIT pulls again using the option mentioned above
I run several experiments with git sandboxes and it worked, however I am
not sure what happens with more complex git repositories and more users.
Any ideas HG-GIT developers? Or somebody else dealing really with git
repositories (I mean pulling and pushing, not just cloning).
Regards
Uwe Brauer
> Best,
--
Warning: Content may be disturbing to some audiences
I strongly condemn Putin's war of aggression against the Ukraine.
I support to deliver weapons to Ukraine's military.
I support the ban of Russia from SWIFT.
I support the EU membership of the Ukraine.
https://addons.thunderbird.net/en-US/thunderbird/addon/gmail-conversation-view/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 5673 bytes
Desc: not available
URL: <http://lists.mercurial-scm.org/pipermail/mercurial/attachments/20221128/0eabfab0/attachment.p7s>
More information about the Mercurial
mailing list