Estou escrevendo um arquivo em lote do Windows para simplificar a geração de documentação. Sou relativamente novo nisso. Parte disso envolve consultar meu repositório Git para encontrar as duas tags de lançamento mais recentes. Assim que tiver essas tags, a intenção é usar o comando git log e gravar a saída em um arquivo de texto em um diretório diferente.
Posso gravar a saída de um log do git em um arquivo de texto se eu escrever o comando git log com os nomes das tags como constantes. No entanto, quando uso as variáveis que têm os nomes das tags armazenados, só consigo obter a saída visível na janela cmd, e os arquivos de texto produzidos ficam em branco.
A execução com tags conhecidas, conforme abaixo, produzirá tanto na janela de comando quanto em um arquivo de texto
git log --format="%%s" OLD_RELEASE..NEW_RELEASE > "C:\Documentation\Commits.txt"
A saída na janela de comando e o arquivo de texto de saída são mostrados abaixo e estão alinhados com os comentários no git (comentários ruins, eu sei, mas tentei manter essas informações deliberadamente vagas)
V3.1.2.0 19 Sept
V3.1.1.2 6 August
V3.1.1.1 16 July
V3.1.1.1 15 July
V3.1.2.0 14 July
535 indicator added to setup screen
fault 4 severity level reduced from non-threatening
Entretanto, se eu primeiro tiver pesquisado as tags para determinar os dois nomes de tags e defini-los como a variável "OldTag" e "NewTag" e, em seguida, usar o mesmo comando, porém formatado como abaixo, vejo o comando idêntico correto na janela de comando e a lista de mensagens de confirmação, mas o arquivo de texto de saída está em branco.
git log --format="%%s" %OldTag%..%NewTag% > "C:\Documentation\Commits.txt"
Descobri que executar um comando híbrido, onde a segunda variável é usada como um valor fixo, parece funcionar com a saída sendo gravada no arquivo de texto. Portanto, parece que o uso da segunda variável está impedindo a execução do comando de saída.
git log --format="%%s" %OldTag%..NEW_RELEASE > "C:\Documentation\Commits.txt"
Eu resolvi isso: se você colocar o comando git entre colchetes e depois enviar para um arquivo de texto, isso funcionará. No entanto, conforme os comentários abaixo, não há motivo para isso funcionar, a menos que a tag termine em um dígito (no meu caso, isso acontece).
Outra solução que funciona é colocar o redirecionamento no início da linha, por exemplo
Por fim, os comentários acima indicam que existe um comando de saída que pode ser usado com o git log. Se você quiser obter o mesmo resultado, o seguinte formato também funciona.