• 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 →