On 10 March 2015 at 12:14, Thomas Gazagnaire <[email protected]> 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 [email protected] http://lists.xenproject.org/cgi-bin/mailman/listinfo/mirageos-devel
