¿Se puede hacer un repository Github para referirse siempre a la última versión de sus repositorys de submodules?

Estoy haciendo una aplicación web que hace control de versiones de files usando git y tiene la opción de estar alojado en páginas GitHub con algunas características faltantes (características no admitidas por un back-end git-only).

Ahora la "aplicación" está separada del contenido de los usuarios, el contenido del usuario está controlado por la versión, pero la aplicación no lo está (o al less no tiene que ser para la funcionalidad de la aplicación), pero ambos deben cargarse en páginas github y para aislar el control de la versión del contenido, y para tener permissions diferentes para la aplicación frente al contenido, alojo la aplicación en sí misma en páginas gh y el contenido como un submodule git dentro del repository gh-páginas.

Esto funciona, la aplicación / sitio está construida y se expone en username.github.io/sitename/ con todo accesible, excepto que hay una trampa.

El problema es que, por alguna razón, el repository de contenido del submodule se refiere a una confirmación específica en lugar de la última versión del repository, lo que significa que no puedo actualizar el repository de contenido y hacer que todo funcione, sino que también debo actualizar la aplicación repo para referirse a la última versión del submodule, en cada confirmación de repo de contenido .

Lo cual es un poco tedioso ya que casi nunca tengo que actualizar el repository de la aplicación a less que haya una nueva versión de la aplicación, pero actualizo el repository de contenido diariamente, así como el hecho de que el repository de contenido debe ser editable por muchas personas, pero Repo de aplicación por pocos.

Entonces mi pregunta es:

  • ¿Cómo puedo definir un submodule para referirme siempre a la última confirmación de un repository?
  • ¿Cómo puedo activar una compilation del sitio solo actualizando el repository de submodules?
  • ¿Cómo puede el repository gh-pages reflejar siempre la última versión de sus submodules, de modo que el sitio gh-pages siempre presente el último contenido?

  • Repos de ejemplo:
    • https://github.com/01AutoMonkey/app
    • https://github.com/01AutoMonkey/app-content
    • Combinado corriendo en: http://01automonkey.github.io/app/
  • Submodules de Git:
    • https://git-scm.com/docs/git-submodule
    • https://git-scm.com/book/en/v2/Git-Tools-Submodules
    • https://help.github.com/articles/using-submodules-with-pages/

Cómo creo el submodule

 # Create app master + app-content master, then: git init git remote add origin https://github.com/01AutoMonkey/app.git git submodule add https://github.com/01AutoMonkey/app-content ./wiki cd wiki git remote add origin https://github.com/01AutoMonkey/app-content.git # And then push to both repos and create a gh-pages branch. # The site is now running but if I update app-content the update isn't reflected on the site until I refer to the new commit in the app repo. 

Por favor encuentre mis respuestas en línea:

¿Cómo puedo definir un submodule para referirme siempre a la última confirmación de un repository?

Esto no es posible a partir del concepto y el propósito de git-submodule. Aunque para facilitar la actualización, puede configurar una twig para un submodule.

$ git config -f .gitmodules submodule.hs-srvcommon.branch sprint es el command que anulará la twig maestra pnetworkingeterminada con sprint. (hs-srvcommon es el nombre del directory del submodule)

¿Cómo puedo activar una compilation del sitio solo actualizando el repository de submodules?

Puede escribir commands para activar su compilation sobre las confirmaciones hechas en el repository de submodules utilizando los ganchos-git en el submodule. Los git-hooks configurados en el submodule funcionan de la misma manera que los git-hooks para el trabajo de repository principal. El lugar de residencia de los ganchos de los submodules es .git/modules/your-sub-module-name/hooks Consulte: https://git-scm.com/docs/githooks

¿Cómo puede el repository gh-pages reflejar siempre la última versión de sus submodules, de modo que el sitio gh-pages siempre presente el último contenido?

Ohh esto nuevamente debería ser factible con el uso de git-hooks para el submodule. Todo lo que necesita hacer es configurar el postcompromiso / push-hooks en el submodule para que también actualicen las references del repository principal al submodule commit sha ids.

Que esta respuesta te ayude a realizar algunas operaciones de git en el repository principal desde el interior de los git-hooks del repository de submodules.

El problema es que, por alguna razón, el repository de contenido del submodule se refiere a una confirmación específica en lugar de la última versión del repository, lo que significa que no puedo actualizar el repository de contenido y hacer que todo funcione, sino que también debo actualizar la aplicación repo para referirse a la última versión del submodule, en cada confirmación de repo de contenido.

Tienes que agregar los siguientes commands

 # Create app master + app-content master, then: git init git remote add origin https://github.com/01AutoMonkey/app.git git submodule add https://github.com/01AutoMonkey/app-content ./wiki # # # git submodule init # Run this command every time you want to update the submodule git submodule update # # # cd content git remote add origin https://github.com/01AutoMonkey/app-content.git 

Ahora tome el último código para cada submodule:

 # loop on every submodule and checkout the latest code git submodule foreach git pull origin master 

foreach Evalúa un command de shell arbitrario en cada submodule desprotegido.


De los documentos del submodule:

Sin embargo, al clonar o extraer un repository que contenga submodules, estos no se verificarán de manera pnetworkingeterminada ;

los subcommands init y update mantendrán los submodules prestados y en la revisión apropiada en su tree de trabajo.

update

Actualice los submodules registrados para que coincidan con lo que espera el superproyecto clonando submodules faltantes y actualizando el tree de trabajo de los submodules