Date: Sat, 24 Apr 2021 08:00:37 -0700 From: Mark Millard <marklmi@yahoo.com> To: =?utf-8?Q?Ulrich_Sp=C3=B6rlein?= <uqs@freebsd.org> Cc: Mark Johnston <markj@freebsd.org>, freebsd-git@freebsd.org Subject: Re: vendor/illumos merges Message-ID: <E803B118-3076-47C0-8A5E-658C019F71C1@yahoo.com> In-Reply-To: <YIP2mE%2B0lKB8pLTK@acme.spoerlein.net> References: <YIM7iaptOgsWyxse@nuc> <YIP2mE%2B0lKB8pLTK@acme.spoerlein.net>
next in thread | previous in thread | raw e-mail | index | archive | help
On 2021-Apr-24, at 03:44, Ulrich Sp=C3=B6rlein <uqs at freebsd.org> = wrote: > On Fri, 2021-04-23 at 17:26:33 -0400, Mark Johnston wrote: >> Hi, >>=20 >> Now that FreeBSD uses OpenZFS as the upstream for ZFS, vendor/illumos = is >> mostly unused. However, we still use illumos as an upstream for CTF >> tools and DTrace, though there haven't been any imports in a while. >>=20 >> illumos has put a lot of work into their CTF toolchain, and I'd like = to >> import that. There are a couple of snags that I'd appreciate some >> guidance on. >>=20 >> First, I believe I should delete now-unused ZFS code from the vendor >> branch and merge the result to main. I did this locally and got an >> empty merge, which is what I'd expect. Is there any problem with = this? >=20 > Why would you record this empty merge? If you clean up vendor/foo, = just do that but don't merge a no-op back into main (nothing changed, = after all). >=20 >> Second, with Subversion we had both vendor/illumos and >> vendor-sys/illumos, and now we just have the former, seemingly with >> sys/* bits imported from vendor-sys. Some of the upstream commits = touch >> both userspace and kernel bits, but the merge targets for these in >> FreeBSD are different: cddl/contrib/opensolaris vs. >> sys/cddl/contrib/opensolaris. How should I merge into main in this >> case? I don't really see any options other than to split each = offending >> upstream commit into two parts, one for userspace and one for the >> kernel, and merge them separately. >>=20 >> If it helps to look at the branch where I staged the upstream = commits, >> I've pushed it to vendor/illumos2 in = https://github.com/markjdb/freebsd >> . >=20 > Can you clarify why the merging of the two might be an issue? Note = that unlike subversion, in git there's no "merge a certain subtree" = handling It might be an ambiguous terminology context for what is being referenced, but there is : # man git-subtree GIT-SUBTREE(1) = GIT-SUBTREE(1) NAME git-subtree - Merge subtrees together and split repository into subtrees SYNOPSIS git subtree add -P <prefix> <commit> git subtree add -P <prefix> <repository> <ref> git subtree pull -P <prefix> <repository> <ref> git subtree push -P <prefix> <repository> <ref> git subtree merge -P <prefix> <commit> git subtree split -P <prefix> [OPTIONS] [<commit>] . . . Its usage has tradeoffs from what I can tell reading about it as an alternative to submodules. There is also a not-predefined-in-git alternative: https://github.com/ingydotnet/git-subrepo#readme > , all that is recorded is a tree of some form and then a set of = parents or ancestor commits. (git is a content tracker, not really a VCS = :) >=20 > I was under the impression that userland and kernel imports/merges = need to happen at the same time anyway, so I assume you would import all = the bits under vendor/foo in 1 commit and then merge them in 1 commit = into main. Is that not how it goes? =3D=3D=3D Mark Millard marklmi at yahoo.com ( dsl-only.net went away in early 2018-Mar)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?E803B118-3076-47C0-8A5E-658C019F71C1>