Então, eu puni meu pequeno cérebro, empurrei e inventei uma solução feia .
Eu não acho que seja o melhor, então eu ainda aprecio / aceito qualquer ajuda e melhorias!
git log 7.2.0..HEAD --oneline |
grep -iEo "([a-f0-9]{7})(.*[a-zA-Z0-9]{2,6}-[0-9]{1,4})+" |
sort -u |
sed -E $'s/([a-f0-9]{7}|[a-zA-Z0-9]{2,7}-[0-9]{1,4})/ \\n\1\\n/g' |
grep -iEo "([a-f0-9]{7}|[a-zA-Z0-9]{2,6}-[0-9]{1,4})+" |
tr '\n' ' ' |
sed -E $'s/([a-f0-9]{7})/\\n\1 →/g' |
sed -E 's/([a-zA-Z0-9]{2,7}-[0-9]{1,4})/,/g' |
sed -E 's/(..)$//'
este comando divide as expressões correspondentes em várias linhas usando sed
para inserir um pouco de \n
, então grep
s as expressões de que preciso, e somente as mantém. Então, finalmente, ele volta e substitui esses \n
pelos caracteres →
e ,
respectivamente, depois aparando o último ,
.
Eu acabo com:
58dbb08 → ABC-123
5a9c5e1 → XYZ-987
6070ee0 → MNO-456, MNO-999
Eu acho isso decentemente rápido em um tamanho de log de menos de 200 commits ... sua finalidade é ajudar a gerar algumas listas de problemas nas notas de lançamento, então não deve ser muito mais do que isso. Mas novamente; Quaisquer melhorias de velocidade / qualidade são bem recebidas!