¿Cómo automatizar una actualización de una copy del server de mi repository remoto?

Mi flujo de trabajo sin las herramientas de GUI de control de versiones (como SourceTree, por ejemplo) es así. Lo escribo en línea de command. Tengo un repository local en mi máquina local. Y tengo un server (instancia de AWS EC2) con una copy de mi repository local. Y uso Bitbucket para mi repository remoto. La primera parte (local, vea el código a continuación) lo hago en mi máquina local. Luego conecto mi server EC2 usando SSH y una línea de command y escribo la segunda parte, git fetch , get merge :

 # On local repo: $ git add . $ git commit -m "Commit message" $ get push origin foo-branch # On remote repo $ git fetch origin $ git merge origin/foo-branch 

Para la primera parte, tengo herramientas de GUI como SourceTree. Pero para la segunda parte, todavía tengo que usar la línea de command para search y aplicar cambios en mi server.

Mi pregunta es, ¿hay algunas herramientas que permitan automatizar el process? De modo que no sería necesario conectar el server con SSH en la command-line y escribir git fetch y git merge .

Por ejemplo, simplemente presiono una confirmación en mi máquina local (usando SourceTree, por ejemplo) y mi server la detecta automáticamente y recupera y fusiona los cambios.

Puede hacer un webhook de Bitbucket para activar los commands de su server en function de varios events repo diferentes (presione, por ejemplo). Simplemente cree una página web que ejecute un script que realice los pasos de Git en su server cuando se golpee la URL de la página.

Agregue un webhook al repository Bitbucket para acceder a su página web cuando ocurra el evento deseado.

Consulte los documentos de Bitbucket Cloud en webhooks aquí https://confluence.atlassian.com/bitbucket/manage-webhooks-735643732.html . El server Bitbucket es similar.

No, el repository remoto de git no puede ejecutar la operación de fusión ya que el repository remoto es un repository simple que no tiene directory de trabajo . Por lo tanto, los commands como git fetch , git merge no se pueden usar para el repository remoto.

El trabajo a su alnetworkingedor puede usar un gancho pre-push en su repository local: antes de empujar foo-branch a control remoto, se activará el gancho pre-push, luego podrá actualizar su twig master y fusionar foo-branch en master . La secuencia de commands para pre-push hook de la siguiente manera:

 #!/bin/sh git checkout master git pull origin master git merge foo-branch git checkout foo-branch 

Nota:

  • Si combinar foo-branch en la foo-branch master no es una fusión de avance rápido, o puede haber conflictos al fusionarse, debe usar la opción -X para resolver los conflictos de combinación automáticamente. Por ejemplo, puedes usar git merge foo-branch -X theirs en su lugar.
  • Si también desea enviar la confirmación de fusión desde la sucursal master local a la sucursal master remota, debe usar git push --all para en su lugar git push origin foo-branch .

Por cierto: incluso si usas webhook para activar un script cuando los cambios se envían al repository remoto, aún no puedes ejecutar git fetch y git merge desde el repository remoto.