How do you manage 3rd person git repositories in your project? (ex. Twig/Assetic/..)
I’ve made a personal light framework in PHP which matches my needs for a framework.
I’m using different 3rd party libraries, like SwiftMailer, Twig, Assetic, Facebook PHP api, …
How do you manage these sources codes from 3rd party libraries?
Do you add it as a submodule into your project, and just do a pull to get the latest version?
Or do you just copy the code into your project dir and do the updates yourself?
Most code repositories are structured like this:
So in my framework dir it looks like this, and us the vendor dirs as submodule from a remote project:
- Assetic (clone of remote repo)
Is this the way to go? Or how do you suggest doing this?
During a capistrano deploy, all the submodule repositories will be pulled from the remote servers.
Edit: I must say that I use the framework as submodule in other projects. So the framework is a submodule in a project, and the framework itself also has submodules in it..
2 Solutions collect form web for “How do you manage 3rd person git repositories in your project? (ex. Twig/Assetic/..)”
I generally use a
vendor folder, either top-level or under
lib that holds the submodules, and use the the
--recurse-submodules option when pulling, and
git submodule update and
git submodule status. I think capistrano can handle this use case decently, but I’m not familiar enough with it to know for sure.
I manage every project separetaly.
Every project folder could contain all files for correct build – so all referenced files is included in “refs” directory. In this case is build easy: get latest version of “src, refs & build” directory, run the build script. The output is in “bin” directory.
The “refs” folder is consuming the disk size, but it’s much simpliest than managing cross-project references with correction versions (and branches).
- src // source code & resources
- refs // referenced binaries in correct version
- build // build script
- bin // builded binaries & related files
- deploy // files used for deploy (setup.exe, setup.msi, etc…)
- … other folders …
- 3rdParty-Project-B // there are referenced files from 3rdParty-Project-B
- MyProject-A // there are referenced files from MyProject-A