Thursday, May 14, 2020
The shaving of yaks
A day ago,
a month ago
(time no longer has real meaning anymore),
I was ask to look into moving our code away from SVN and into
git.
Ever since I've been pretty much busy with the shaving of yaks—lots and lots of yaks.
And it's more than just converting a repository of code from SVN to git—it's also breaking up what is basically
a monorepos into lots of separate repos for reasons
(operations hates having to checkout the 800 pound gorilla for the 4 oz. banana).
And without losing history if at all possible.
Lots of yaks to shave in this project.
So I've been learning about submodules in git and while I like git,
I'm not a fan of the submodule.
First,
when you clone a repository with submodules
(git clone https://git.example.com/foo.git)
you don't get the submodules.
That's another two steps to get them
(git submodule init; git submodule update).
I solved that issue with a new Makefile target:
getmod:
git submodule init
git submodule update
And on the build system, I made sure that make getmod was done prior to make.
That issue solved.
Another issue—we use Lua in our department, but we ended up with using two different versions. The stuff I built is still using 5.1.5, while a new project a fellow cow-orker wrote used 5.3.2. This is a chance to consolidate some dependencies, and to that end, I have a new single Lua repo with every version of Lua from 5.1.4 to 5.3.5 (with all the patches applied). But as I found out (and many yaks were shaved to bring me this information) you can't just checkout a particular tag or branch for a submodule.
Grrrrrr.
So I solved that issue in the Makefile as well:
VLUA := $(shell cd deps/lua ; git describe --tag) ifneq ($(VLUA),"5.1.5.p2") DUMMY := $(shell cd deps/lua; git checkout 5.1.5.p2) endif
This checks to see which version of Lua is checked out,
and if it's not the one I want,
check out the version I do want.
I also had to make sure the .gitmodule file had ignore = all set:
[submodule "deps/lua"]
path = deps/lua
url = https://git.example.com/lua.git
ignore = all
to prevent git status from freaking people out.
I figure this will keep me busy for the next few months at least. Or maybe days. Time just flows strangely these days.
![Glasses. Titanium, not steel. [Self-portrait with my new glasses]](https://www.conman.org/people/spc/about/2025/0925.t.jpg)