On May 4, 2025, at 18:50, Kyle Evans <[email protected]> wrote: > Hi,
Hello. > I've been toying around with the idea of pulling got(1) into base, but hidden > off into /usr/libexec and not supporting it for general usage. The idea would > instead be to provide a script or two as a user-facing interface to do the > bare minimum to functionally maintain a local copy of our git repos. > > However, I've run into some logistics issues that I wanted to throw out for > some opinions. The main issue I've run into is that while got's repository > layout is binary-compatible with git, it won't setup worktrees the same way. > Additionally, it really doesn't like the traditional organization of a git > clone, where you'd have your .git directory inside of your primary worktree > (e.g., /usr/src and /usr/src/.git). > > I don't think this is really a deal-breaker, my proposal to start with would > be that we clone the repositories off into /var/db/got/$repo or some such and > setup the worktrees in the traditional place. git can `worktree add` from > these repos successfully, so one could setup a git-compatible worktree at > least without having to re-clone the entire repository, but that brings me to > the second caveat noted in the paragraph above: the worktree format isn't > compatible. > > We could write a script that'll bridge the gap, but AFAICT that means that > we'd effectively have to just blow away the existing got worktree at /usr/src > and recreate it, with sensible guardrails in place to try and avoid losing > any uncommitted work. That's sort of ugly and I don't really know how to > feel about it, thus this e-mail. > > Thoughts? I'll note that, as stands, a PkgBase FreeBSD-src-*.snap* and FreeBSD-src-sys-*.snap* together provide a source tree that does not contain a git repository. (It used to be true that the 2 could be from somewhat distinct check outs. I do not know about now.) No .git/ or .git (plain file) at all. PkgBase uses /usr/src/ and /usr/src/sys/ and I reserve those for the PkgBase files in order to best be able to identify what the installation is based on. In my context, official PkgBase kernels are present for booting and the booted world is a PkgBase one based on main [so: 15]. I've more than this, including places for chroot use and for poudriere-devel jail use. I also have my own kernel builds that I can boot instead. I also use git worktrees: /usr/official-src/.git/ ( the "main worktree", a normally unmodified stable/* ) /usr/main-src/.git ( a "linked worktree" for main [so 15 as stands] ) /usr/release-src/.git ( a "linked worktree", a normally unmodified releng/*.* ) My activity for these is mostly in /usr/main-src/ instead of in /usr/official-src/ . I'm not sure what you are intending for contexts based on PkgBase. (Basically: ignoring my extra stuff.) === Mark Millard marklmi at yahoo.com
