¿Cómo puedo convertir una URL repo de Atlassian Stash para abrir en el browser?

Atlassian Stash utiliza URL de repos para clonar / empujar / tirar en forma de

https://mystashserver/scm/myproject/myrepo.git 

¿Cómo puedo transformar esta URL en la utilizada por la interfaz de usuario web de Stash en forma de

 https://mystashserver/projects/myproject/repos/myrepo 

La apertura de la primera URL en el browser se reenvía automáticamente a la última, pero no puede agregar parameters adicionales, por ejemplo, para seleccionar una twig específica.

Estoy buscando una forma de transformar las URL de primer tipo en las últimas, idealmente para utilizarlas en un script de Bash.

Lo siguiente funciona en un script de Bash, utilizando el soporte de expresiones regulares integrado de Bash:

 giturl=https://mystashserver/scm/myproject/myrepo.git re='(.*)/scm/(.*)/(.*)\.git' if [[ $giturl =~ $re ]]; then newgiturl=${BASH_REMATCH[1]}/projects/${BASH_REMATCH[2]}/repos/${BASH_REMATCH[3]} echo $newgiturl fi 

La expresión regular divide la URL original en varias partes:

  • (Grupo de captura 1): protocolo, nombre de host, context raíz web opcional
  • "scm": parece ser un valor fijo para Atlassian Stash
  • (Grupo de captura 2): el nombre del proyecto
  • (Grupo de captura 3): el nombre real del repository, less el sufijo .git

En el ejemplo anterior, la variable newgiturl ensamblar la URL, inyectando los projects y la parte del repos en las ubicaciones deseadas.