[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [MirageOS-devel] Merging in Irmin

On 10 March 2015 at 12:14, Thomas Gazagnaire <thomas@xxxxxxxxxxxxxx> wrote:
>>> When merged, the result needs to include the parent, even though it
>>> was deleted in one branch and not touched in the other. Can I do this?
>> Do you mean you want to control which are the parents of a commit you are 
>> creating, even if the respective contents are not related?
>> You can manually create a commit by using Irmin.Private.Commit.create[1] and 
>> save it in the (private) block store with S.Private.Commit.add[2]
>> Not sure how to expose that nicely to the user though... maybe allowing to 
>> specify a "parent" optional argument to merge/update/rebase.

That would be useful. I've been avoiding the "Private" API so far, but
maybe I should start using it.

> You can only create a view from one store and apply it in the other: the 
> history of commit will be kept as expected. See:
> https://github.com/samoht/dog/blob/master/lib/dog.ml#L247
> You can try to use that to merge views from different branches, not sure how 
> practical this is though.

The basic logic I have is roughly:

1. git checkout base
2. (apply modification)
3. UPDATE=$(git commit-tree -p base)
4. git checkout master
5. git-merge -s custom $UPDATE

Where "custom" should be my app-specific merge logic that works on
whole trees rather than individual files.

Currently, I merge to create a new commit, test it, and then do a
fast-forward to update the branch to include the merge if the test
passes. But if I can use custom merge code, then it would be OK to
merge directly to the branch when my merge code returns, since it will
already have had a chance to test it.

Dr Thomas Leonard        http://0install.net/
GPG: 9242 9807 C985 3C07 44A6  8B9A AE07 8280 59A5 3CC1
GPG: DA98 25AE CAD0 8975 7CDA  BD8E 0713 3F96 CA74 D8BA

MirageOS-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.