Mudanças de Push Planejadas no Repositório Git Local (Ubuntu)

2

Plano de fundo chato - Resumo: Eu sei que não estamos usando o GIT corretamente! .
Isso começou como um pequeno projeto de hobby e entrou em espiral - minha empresa usa o Git para rastrear / gerenciar alterações em uma plataforma de software baseada na Web e atuar como um repositório central. Aproximadamente 300 dispositivos móveis são configurados para serem enviados a um repositório clonado local na inicialização de um servidor de intranet auto-hospedado, para que possam acessar a versão mais recente do software quando não estiverem conectados à rede (utilizamos ramificações para que eles são expostos apenas ao código maduro / testado).

Passamos agora para uma etapa - temos um banco de dados de "partes" atualizado diariamente. Eu criei uma versão separada desse banco de dados usando scripts cron para criar uma versão independente que poderia ser aberta em uma "máquina não conectada" local.

Meu problema
Eu tenho um conjunto de scripts PHP que levam os dados da tabela de banco de dados e exportá-lo para o formato de arquivo simples exigido pelo aplicativo, e copie todas as imagens adicionais desde o último ciclo para os locais corretos. Todos os arquivos são armazenados em /var/www/clonedrepository

Eu, então, quero executar os seguintes comandos no diretório:

git add .
git commit -m "Automatic update: todaysdate"
git push

O repositório é clonado a partir de /home/git/repository , que é servido usando o git deamon e o link simbólico apache, permitindo acesso http (para clonagem de dispositivos burros) e SSH (para adultos para editar / atualizar).

O problema é que sou um programador web e estou fora de profundidade. Eu configuro os repositórios git e me sinto confortável com a linha de comando, mas não sei o melhor lugar para começar.

Nota: Nunca haverá conflitos, pois nenhum usuário editará os arquivos de dados e o sistema não editará nada além dos arquivos de dados.

Então, em resumo , eu tenho um repositório central na minha caixa Ubuntu Linux ( /home/git/repository ) que eu gostaria de atualizar diariamente de um repositório clonado ( /var/www/clonedrepository ) no mesmo caixa.

    
por kieran_delaney 12.05.2011 / 16:59

1 resposta

2

OK, então resolvi isso ...

1) Eu configurei um script que contém as seguintes linhas:

cd /var/www/partsdb/ >> /home/git/push.log
git pull >> /home/git/push.log
git add . >>/home/git/push.log
git commit -a -m "Scheduled Commit: 'date'" >>/home/git/push.log
git push >> /home/git/push.log
echo "Push Backup Successful 'date'" >> /home/git/push.log

Este script é movido para o repositório de trabalho, obtém todas as alterações do repositório central (lembre-se que essas alterações afetarão somente os arquivos de programas, os arquivos de dados não) e adicionará quaisquer alterações. arquivos de dados (armazenados em um subdiretório /data para maior clareza) confirmam as alterações (incluindo uma mensagem baseada em data automática para rastrear alterações / culpas) e, em seguida, retornam ao repositório.

EDIT: Desde então, adicionei o -a flag ao comando commit, que removerá os arquivos excluídos pelos scripts de atualização automática ( add . adicionou novos arquivos). > [/ EDIT]

2) Chamo esse script de crontab, executando o script como root (como root é apenas o usuário que tem permissão para escrever na pasta home do git e na pasta / var / www) usando o comando:

0 * * * * root /home/git/gitpush.sh

Isso executa o script de hora em hora - enquanto dispositivos móveis isolados só obtêm do banco de dados na inicialização (diário / am), os usuários da rede local sempre terão a versão mais atualizada (que foi enviada para ramificação mestre) .

    
por 17.05.2011 / 14:22