The modern way of packaging and delivering utilities and features for Unity is using a UPM package. This can even be done with a UPM branch containing just the package contents, which can be taken in from git.
Unity packages are destructive to update and have no version controls, both problems are solved using UPM packages, so it is the preferred way to adopt tools in a Unity project without dirtying the Unity project.
The modern way of packaging and delivering utilities and features for Unity is using a UPM package. This can even be done with a UPM branch containing just the package contents, which can be taken in from git.
https://docs.unity3d.com/Manual/cus-layout.html
Unity packages are destructive to update and have no version controls, both problems are solved using UPM packages, so it is the preferred way to adopt tools in a Unity project without dirtying the Unity project.