Cuando envío mis cambios a nuestro server Bitbucket, junto con las statistics habituales, el server responde con varias líneas precedidas por 'remote:'. Una de esas líneas contiene una URL a pocas diferencias para la twig presionada y crea una request de extracción. Actualmente, destaco la URL y la copio / pego en una window del browser para crear mi request de extracción, pero estoy buscando acelerar ese process. ¿Hay alguna forma de extraer la URL y pasarla a 'clip' para savela en el portapapeles como parte de un alias git?
También pensé en tratar de volver a crear la URL usando una combinación del nombre de la sucursal actual y la URL remota, pero hay varias diferencias entre la URL remota y la URL de la request de extracción por lo que parecía más fácil extraer la URL en lugar de volver crearlo
Counting objects: 47, done. Delta compression using up to 8 threads. Compressing objects: 100% (45/45), done. Writing objects: 100% (47/47), 12.81 KiB | 0 bytes/s, done. Total 47 (delta 40), reused 3 (delta 2) remote: remote: Create pull request for feature/somefeature: remote: https://code.ourbitbucketserver.com/projects/myteam/repos/somerepo/compare/commits?sourceBranch=refs/heads/feature/somefeature remote: To https://code.ourbitbucketserver.com/scm/myteam/somerepo.git * [new branch] feature/somefeature -> feature/somefeature Branch feature/somefeature set up to track remote branch feature/somefeature from origin.
bcurrent = "!git rev-parse --abbrev-ref HEAD" publishold = "!f() { git push -u ${1-origin} $(git bcurrent); }; f" publishnew = "!f() { git push -u ${1-origin} $(git bcurrent) --progress 2>&1 | awk '/^remote:.*compare/ { system(\"echo \" $2 \" | clip\") } { print }'; }; f"
Los alias bcurrent
y publishold
son los que comencé con reference.
La respuesta aceptada me puso en la dirección correcta. Me encontré con algunos problemas en el path que quiero explicar.
git push
muestra parte del post (incluida la url) sobre stderr en lugar de stdout. Entonces tenemos que networkingirigir stderr con 2>&1
. También se agregó el indicador de --progress
para que git --progress
stderr incluso si no está conectado a la console, ya que estamos conectando la salida a awk. Ver la salida de git stderr no puede canalizar clip
no acepta parameters en la command-line y la input debe ser canalizada dentro de ella. system
. Puedes usar awk
en tu alias. Lo siguiente imprimirá la salida por completo y adicionalmente llamará al clip
con la URL como argumento:
echo 'Counting objects: 47, done. Delta compression using up to 8 threads. Compressing objects: 100% (45/45), done. Writing objects: 100% (47/47), 12.81 KiB | 0 bytes/s, done. Total 47 (delta 40), reused 3 (delta 2) remote: remote: Create pull request for feature/somefeature: remote: https://code.ourbitbucketserver.com/projects/myteam/repos/somerepo/compare/commits?sourceBranch=refs/heads/feature/somefeature remote: To https://code.ourbitbucketserver.com/scm/myteam/somerepo.git * [new branch] feature/somefeature -> feature/somefeature Branch feature/somefeature set up to track remote branch feature/somefeature from origin.' | awk '/^remote:.*compare/ { system("clip " $2) } { print }'