• How to vendor a git into another git

      Discovering git vendor extension.

      Cross-post from my medium blog: https://medium.com/opsops/git-vendor-295db4bcec3a

      I would like to introduce the proper way to handle vendoring of git repositories.

      What is is ‘vendoring’?

      Vendoring is a way to integrate other’s work into your own. It’s the opposite of ‘linking’ against third-party library. Instead of having that library as a dependency, application uses this library as a part of own source code and keep that code ‘inside’ itself.

      Normally, vendoring is done by language tooling: bundler, cargo, pip, etc. But sometimes you need to vendor something not covered by any existing toolset, or something multi-language, that it’s impossible to find the ‘core’ language tool for that.

      The solution for this situation is vendoring on a git level. You have your own git repository (I call it ‘destination repo’), and you want to incorporate some other repository (I call it ‘source repo’) as a directory into your (destination repo).

      The things you expect from a well-designed vendoring system (regardless of Git it is or not):

      • Visibility. You want to know that some code is vendored, means it wasn’t written by committer.
      Read more →