I am wondering what the best way (for a lone developer) is to
- develop a project that depends on code of other projects
- deploy the resulting project to the server
I am planning to put my code in svn, and have shared code as a separate project. There are problems with svn:externals which I cannot fully estimate.
I've read
- subversion:externals considered to be an anti-pattern, and
- How do you organize your version control repository,
but there is one special thing with php-projects (and other interpreted source code): there is no final executable resulting from your libraries. External dependencies are thus always on raw source code.
Ideally I really want to be able to develop simultaneously on one project and the projects it dependends on.
Possible way: Check out a projects' dependency in a sub folder as a working copy of the trunk. Problems I foresee:
- When you want to deploy a project, you might want to freeze its dependencies, right?
The dependency code should not end up as a duplicate in the projects repository, I think.
*(update1: I additionally assume svn:ignore will pose problems if I cannot fall back on symlinks, see my comment)
I am still looking for suggestions that do not require the use junction points. They are a sort of unsupported hack in winxp, which may break some programs*
This leads me to the last part of the question (as one has influence on the other): how do you deploy apps whith such dependencies? I've looked into BuildOut for Python, but it seems to be tightly related to the python ecosystem (resolving and fetching python modules from the web etc).
I am very eager to learn about your best practices.