Re: /usr/src and /usr/ports not git directories ?

From: Gleb Smirnoff <glebius_at_freebsd.org>
Date: Wed, 22 Jan 2025 16:49:31 UTC
On Wed, Jan 22, 2025 at 09:30:09AM -0700, Warner Losh wrote:
W> I think what you want is
W> 
W> % git clone https://github.com/freebsd/freebsd-src --depth=1 -b releng/14.2
W> --single-branch fred --bare
W> % cd fred
W> % mkdir .git
W> % mv * .git
W> % git config --local core.bare false
W> 
W> This will clone 1 deep into the directory 'fred' and won't checkout a copy.
W> If
W> we make this a package, it's 325MB, as you  say. That can then be extracted
W> and then you can recover the tree with:
W> 
W> % git checkout releng/14.2
W> 
W> which could be done with the pkg file when extracting to /usr/src. I've not
W> measured
W> ports.

I really like this plan. So before checkout .git is 337M and after checkout
it is 975M, which is made by actual sources + .git.

Let's go forward with shipping this bare clone + optional checkout for
15.0-RELEASE.  We can ask if user wants to do the checkout, or just keep
/usr/src/.git during the install process.  For upgrades, we will just
write new full /usr/src that includes .git on top of 14.x-RELEASE. That
will consume +50% more space on upgraded installations.  I'm pretty sure
this is fine for those people who do install /usr/src, they already ain't
doing a minimal installation.  We will also put this in RELNOTES.

-- 
Gleb Smirnoff