tipos tag repositorio origin example etiquetas eliminar crear git gradle

repositorio - git push tag



Aplicar archivo gradle desde diferentes repositorios (3)

La respuesta depende de qué exactamente vas a lograr.

  1. 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.
  2. 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 posterior git commit para recibir los contenidos actualizados en sus repositorios de proyectos. La variante de este método es la git subtree merge de subtítulos git subtree merge propuesta por @VonC
  3. 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