Para fazer coisas automaticamente git
, use ganchos
Você quer fazer \thing{}
com cada commit do git? É para isso que serve um gancho . Por exemplo, o post-commit
gancho:
Depois que todo o processo de consolidação é concluído, o gancho pós-consolidação é executado. Não requer nenhum parâmetro, mas você pode facilmente obter o último commit executando git log -1 HEAD
. Geralmente, esse script é usado para notificação ou algo semelhante.
no site / manual do GIT SCM
Adicionando uma data a cada git commit
Esta é a parte direta. Você pode usar esse gancho para alcançar a primeira parte de seus dois objetivos de maneira simples:
- use
git diff-tree --no-commit-id --name-only -r HEAD
para alterar os arquivos na revisão atual (consulte esta explicação no SO )
- itere sobre esses arquivos no idioma de sua escolha e use a ferramenta de sua escolha para inserir a data, por exemplo, com
sed
ouawk
Se você fizer isso localmente, ele deixará os arquivos não estágios alterados em sua cópia de trabalho; ou seja git status
, mostrará os arquivos alterados . Você pode evitar isso usando um repo adicional como abaixo.
Adicionando uma versão a cada git tag
Isso é um pouco mais complicado.
Você pode contornar o fato de que git tag
não aciona nenhum gancho usando um repositório intermediário git - local ou remoto - e git push
para esse repositório toda vez que você marcar. Você pode usar um post-update
gancho nesse servidor para reescrever com base na tag mais recente.
Por exemplo:
- Obtenha o nome da tag / versão mais recente:
git describe --tags $(git rev-list --tags --max-count=1)
- Formate os arquivos usando
sed
( awk
ou qualquer ferramenta que você escolher)
- Faça o upload para o CTAN a partir desse diretório
Não posso fazer isso com outro gancho?
Ele é possível detectar se um ref tem uma tag usando git describe
, por exemplo:
# In a working git repo
$ git tag -a "test1" -m "test tag"
$ git describe --exact-match HEAD
test1
$ git describe --exact-match HEAD^1
fatal: no tag exactly matches 'f8a1d888151809ccfbb3460bbcf310541967e292'
128
No entanto, o uso git tag
não ativará um commit
gancho.