¿Cómo puedo controlar mejor mi pequeño marco?

Tengo un pequeño marco php para el desarrollo de HTML. Básicamente hice semifuncional el HTML escribiendo funciones que devuelven algo de marcado HTML. Por ejemplo:

P('Some, text' . a('Link', '#'), 'my_class); 

devuelve algo como esto:

 <p class="my_class">Some, text<a href="#">Link</a></p> 

Además de ser más corto para escribir, también es mucho más rápido, no solo porque es más corto, sino porque hay less combinaciones extrañas de caracteres necesarios para escribir las llamadas a function que hay para escribir el marcado equivalente.

Este marco todavía está en desarrollo, pero lo uso en diferentes proyectos. Mi layout actual es este:

 ~/publkic_html/ ->core/ ->project_1/ ->core/ ->project_2/ ->core/ ->project_3/ ->core/ 

Como puede ver, el marco se llama núcleo, y tengo una copy en el directory superior, luego, cada proyecto tiene su propia copy. Lo que hago actualmente, que no es ninguna forma de control de versiones, es copyr el núcleo de un proyecto en el núcleo del directory superior cuando realizo cambios en el núcleo de ese proyecto.

Por ejemplo, imaginemos que estoy trabajando en el proyecto_1, y me doy count de que hay algo que necesito agregar al núcleo, así que lo agrego. Luego copio el núcleo en project_1 en el núcleo superior con esto:

 cp -rvu ~/public_html/project_1/core/ ~/public_html/ 

Hago una actualización recursiva. Me gusta prolijo porque puedo ver lo que se está copyndo.

Cuando necesito trabajar en otro proyecto, digamos project_2, hago lo contrario, actualizando project_2 / core / con los contenidos de ~ / public_html / core

Como pueden ver, este es un problema. No solo es molesto, sino que también es muy propenso a problemas. Por ejemplo, podría olvidar hacer una actualización después de cambiar un núcleo que es local para un proyecto. Esto introduce una gran cantidad de problemas, como cambiar el mismo file en dos proyectos diferentes sin actualizar, lo que probablemente resultará en que se sobrescriban y pierdan los cambios.

¿Cómo puedo gestionar esto de una manera más eficiente y segura? ¡Sin mencionar más sano!

Estaba mirando git, pero parece que terminaría con muchas versiones de core controladas por versiones diferentes.

Puede (realmente – debe ) usar cualquier SCM, que permita la reutilización y el uso compartido del código (en lugar de la clonación) (y no conozco ningún VCS, que NO tenga esta característica)

  1. Subversión
    • exterioridad
  2. Mercurial
    • Subrepo (guestrepo)
  3. Git
    • Submodules (git-subtree)

PD: Git como primer VCS es la peor opción