repositorio - git push tag
Aplicar archivo gradle desde diferentes repositorios (3)
La respuesta depende de qué exactamente vas a lograr.
- Si simplemente desea actualizar su archivo de compilación en un lugar y "automágicamente" recibe los cambios en todos los repositorios de proyectos, entonces probablemente deba sacar el archivo del control de GIT y, por ejemplo, simplemente usar un enlace o algo así para un ubicación exterior.
- La segunda opción es mover todo el material de construcción a un directorio común, convertir ese directorio en un repositorio GIT compartible por separado y luego enchufar ese repositorio en todos los repositorios de proyectos, por ejemplo, como un submódulo. Pero en este caso no recibirás " "actualizaciones automáticas" porque git vincula estrictamente el contenido de los submódulos a una confirmación particular en el submódulo y necesita ejecutar la
git submodule update
y la posteriorgit commit
para recibir los contenidos actualizados en sus repositorios de proyectos. La variante de este método es lagit subtree merge
de subtítulosgit subtree merge
propuesta por @VonC - Si su maquinaria de construcción es lo suficientemente compleja, es posible que desee considerar la creación de un "artefacto gradle" y ocultar la complejidad allí. Luego, puede conectar ese artefacto a sus proyectos y no depender de una versión particular del artefacto sino de una variedad de versiones
Tenemos múltiples repositorios git para diferentes proyectos. También hay un repositorio git para fines de infraestructura. Tenemos plugins Gradle personalizados escritos en este repositorio de infraestructura que usamos en otros repositorios
Ejemplo:
buildscript {
apply from: ''foo/bar/devinfra-buildscript.gradle'', to: buildscript
}
apply plugin: ''devinfra''
Aquí tenemos el archivo buildscript {}, foo / bar / buildscript.gradle en cada repositorio de Git. Quiero saber si hay alguna manera de aplicar el archivo directamente desde un repositorio de infraestructura. De modo que cualquier cambio es visible directamente en otros repositorios.
Suponiendo que se puede acceder al repositorio Git a través de HTTP (S), una opción es usar apply from: "http://..."
. Tenga en cuenta que los complementos de scripts a los que se accedió a través de HTTP no están actualmente en la memoria caché, por lo que la compilación fallará si no se puede recuperar la secuencia de comandos.
En ese caso, podría agregar un subárbol de git Merging (diferente del subárbol de git) a cada uno de sus repositorios, refiriéndose al infra repositorio.
git read-tree --prefix=<subdirectory_name>/ –u <shared_library_branch>
Puede ver un estudio que lo hace en " Administración de bibliotecas anidadas utilizando el flujo de trabajo de combinación de subárboles de GIT ".
En tu caso:
cd /path/to/project
git remote add infrarepo /url/to/infra/repo
git fetch infrarepo
git checkout -b infra infrarepo/master
git checkout master
git read-tree --prefix=infra/ –u infra
git commit -m "Add Infra subtree"
Para actualizar el repositorio del proyecto con cambios de subárbol:
git checkout infra
git pull
git checkout master
git merge --squash –s subtree –-no-commit infra
git commit -m "update infra"
Para actualizar el repositorio del subárbol con el cambio desde la carpeta del subárbol del repositorio del proyecto:
git checkout infra
git merge --squash –s subtree --no-commit master
git commit -m "(infra subtree) nature of changes"
git push infrarepo infra