How to handle the pack files now we have switched to git?
Ulrich Spörlein
uqs at freebsd.org
Wed Jan 6 15:47:59 UTC 2021
On Tue, 2021-01-05 at 11:08:48 +0000, Pete French wrote:
>So, for me the switch to git went very smoothly. I havent moved to
>etcupdate yet, but will probably do that soon. Hopwever I did hit one
>issue. What I do is to build on a single machine, and then send that to
>a number of places using rsync.
>
>But what seems to happen wuth git is that it has a big pack file of
>objects, and the name of the opack file is the SHA1 of whatever is
>inside it. So if something chnages then the filename chnages - and thus
>rsync tries to move the entire lot all over again, even if the change is
>tiny.
That's not entirely correct. The packfile will only be rewritten if
a) enough other stuff has accumulated
b) you force a repack.
You are fighting against git's GC mechanism a bit here, but you can
still make it work. On your source of truth host, do the following:
1. git gc --aggressive
2. look at .git/objects/pack, there should be a single big pack
3. touch .git/objects/pack/pack-<whateverhash>.keep (or was it .pack.keep?)
4. rsync --del to all other hosts
Now future git gc runs will not delete that big pack, you'll only get
churn in the new, much smaller, packs.
hth
Uli
More information about the freebsd-stable
mailing list