Tengo un repositorio de medios Git donde guardo todos mis archivos y scripts maestros de JavaScript y CSS que usaré en varios proyectos.
Si creo un nuevo proyecto que está en su propio repositorio de Git, ¿cómo utilizo los archivos JavaScript de mi repositorio de medios en mi nuevo proyecto de manera tal que no tenga que actualizar ambas copias del script cuando realice cambios? ?
git
git-submodules
multiple-repositories
Brent O'Connor
fuente
fuente
Respuestas:
La clave son los submódulos git .
Comience a leer el capítulo Submódulos del Libro de la comunidad de Git o del Manual del usuario
Digamos que tiene el repositorio PROJECT1, PROJECT2 y MEDIA ...
Repita en el otro repositorio ...
Ahora, lo bueno es que cada vez que confirmes cambios en MEDIA, puedes hacer esto:
Esto acaba de registrar el hecho de que el submódulo MEDIA WITHIN PROJECT2 está ahora en la versión XYZ.
Le da el 100% de control sobre qué versión de MEDIA usa cada proyecto. Los submódulos git son geniales, pero necesitas experimentar y aprender sobre ellos.
fuente
Considere usar subárbol en lugar de submódulos, hará que la vida de los usuarios de repositorios sea mucho más fácil. Puede encontrar una guía más detallada en el libro Pro Git .
fuente
Si entiendo bien tu problema, quieres lo siguiente:
Desafortunadamente, no hay una solución definitiva para lo que desea, pero hay algunas cosas con las que puede facilitarle la vida.
Primero debe decidir una cosa importante: ¿desea almacenar para cada versión en el repositorio de su proyecto una referencia a la versión de los archivos multimedia? Entonces, por ejemplo, si tiene un proyecto llamado example.com, ¿necesita saber qué style.css usó hace 2 semanas, o el último es siempre (o mayormente) el mejor?
Si no necesita saber eso, la solución es fácil:
Sin embargo, en la mayoría de los casos, desea conocer esta información de versiones. En este caso tienes dos opciones:
Almacene cada proyecto en un gran repositorio. La ventaja de esta solución es que solo tendrá 1 copia del repositorio de medios. La gran desventaja es que es mucho más difícil cambiar entre versiones de proyecto (si realiza el pago a una versión diferente, siempre modificará TODOS los proyectos)
Use submódulos (como se explica en la respuesta 1). De esta manera, almacenará los archivos de medios en un repositorio, y los proyectos contendrán solo una referencia a una versión específica de repositorio de medios. Pero de esta manera normalmente tendrá muchas copias locales del repositorio de medios, y no puede modificar fácilmente un archivo de medios en todos los proyectos.
Si yo fuera usted, probablemente elegiría la primera o tercera solución (enlaces simbólicos o submódulos). Si elige usar submódulos, aún puede hacer muchas cosas para facilitarle la vida:
Antes de comprometerse, puede cambiar el nombre del directorio de submódulos y poner un enlace simbólico a un directorio de medios común. Cuando esté listo para confirmar, puede eliminar el enlace simbólico y eliminar el submódulo de nuevo, y luego confirmar.
Puede agregar una de sus copias del repositorio de medios como un repositorio remoto a todos sus proyectos.
Puede agregar directorios locales como remotos de esta manera:
Si modifica un archivo en / my / project1 / media, puede confirmarlo y extraerlo de / my / project2 / media sin enviarlo a un servidor remoto:
Puede eliminar estas confirmaciones más tarde (con git reset) porque no las ha compartido con otros usuarios.
fuente
www
carpeta de Apache , debe colocar un.htaccess
archivo en la raíz de lawww
carpeta o de su proyecto,Options +FollowSymLinks
dentro o mejor aún<IfModule mod_rewrite.c>{new line}Options +FollowSymLinks{new line}RewriteEngine on{new line}</IfModule>
(reemplazar{new line}
con una nueva línea real ')Tuve problemas con los subárboles y submódulos que sugieren las otras respuestas ... principalmente porque estoy usando SourceTree y parece bastante defectuoso.
En cambio, terminé usando SymLinks y eso parece funcionar bien, así que lo estoy publicando aquí como una posible alternativa.
Aquí hay una guía completa: http://www.howtogeek.com/howto/16226/complete-guide-to-symbolic-links-symlinks-on-windows-or-linux/
Pero básicamente solo necesita vincular las dos rutas en un símbolo del sistema elevado. Asegúrese de usar el prefijo de enlace duro / J. Algo en este sentido: mklink / JC: \ projects \ MainProject \ plugins C: \ projects \ SomePlugin
También puede usar rutas de carpetas relativas y ponerlas en un bate para que cada persona las ejecute cuando comprueben su proyecto por primera vez.
Ejemplo: mklink / J. \ Assets \ TaqtileTools .. \ TaqtileHoloTools
Una vez que se ha vinculado la carpeta, es posible que deba ignorar la carpeta dentro de su repositorio principal que hace referencia a ella. De lo contrario, eres bueno para ir.
Tenga en cuenta que he eliminado mi respuesta duplicada de otra publicación ya que esa publicación se marcó como una pregunta duplicada para esta.
fuente