./tmgit.sh [diretorio a ser versionado] <diretorio de versionamento do tmgit> (opcional)
Por exemplo:
./tmgit.sh /home/usuario
─ ele criará o "gitdir" em /home/usuario/.tmgit./tmgit.sh /home/usuario /home/usuario/.meugitdir
─ ele criará o "gitdir" em /home/usuario/.meugitdir
Este projeto é uma reescrita do original linux-time-machine. A ideia é tornar o código mais legível e ter um controle maior dos erros. Não significa que o código será exatamente menor nem mais eficiente.
Neste item, vamos descrever o funcionamento do projeto e então dividi-lo entre as 4 funções principais:
fm_preflight
fm_climb
fm_fly
fm_land
Basicamente, a máquina do tempo executa as seguintes funções:
- recebe um ou dois parâmetros: diretório a ser versionado (obrigatório); diretório do git (opcional)
- verifica se o diretório já está versionado (git status)
- se não estiver versionado, tenta criar o diretório de versionamento (git init)
- se estiver versionado, verifica alterações no repositório, como: arquivos alterados ou arquivos a serem removidos
- realiza o versionamento das alterações (commit)
Estas funções todas devem estar organizadas dentro das quatro funções macro mencionadas anteriormente: fm_preflight; fm_climb; fm_fly e fm_land. Para saber mais sobre o papel de cada uma, consulte o guia de boas práticas de programação modo-avião. Este projeto é uma prova-de-conceito para validar tais práticas.
- validação de parâmetros recebidos
- inicialização de variáveis
- validação da existência do repositório e seu funcionamento: git status & git init
- verificação da branch atual e alteração para a branch correspondente ao dia de hoje
- preparação para o "voo" (git add; git remove etc)
- efetivação das mudanças: git add; git remove; git commit
- em caso de parâmetros adicionais, executá-los aqui, como: version-all; push-remote; add-files etc
- tratamento de erros
- limpeza de arquivos temporários
- encerramento da execução do programa
Via de regra, o programa sempre será encerrado com a chamada da função fm_land
, que deverá estar pronta para finalizar o funcionamento a qualquer momento.
— O código ainda não está funcional! Mas se você gostou da ideia, pode experimentar o linux-time-machine, que já conta inclusive com backup para um repositório remoto — caso você o adicione (via git remote add
)
— Este projeto é baseado no linux-time-machine, porém escrito de maneira a implementar um controle de erro mais elaborado. Em segundo plano — mas também importante — está a missão de criar um código mais legível; o que já é algo bem mais difícil de se conseguir, considerando que não sou um programador profissional
— Esta versão conta com mensagens em português, e preza mais pela legibilidade do código do que pela funcionalidade
— Este projeto segue o guia de boas práticas modo-avião, que ainda está em desenvolvimento. Passe lá e contribua!