Acesso direto ao conteúdo
Logotipo Dicas-L, por Ricardo Burile

Busca

Visite também: Segurança Linux ·  UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 

Você está aqui: Home  → Arquivo Dicas-L

 

Assine a Lista Dicas-L

Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.

Controle de versões para shell scripts

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 29 de junho de 2011

O site Dicas-L e todos os outros sites que mantenho (Contando Histórias, Aprendendo Inglês, Inglês Instrumental e Edulinks), são todos feitos com shell scripts e o genial txt2tags, escrito pelo não menos genial Aurélio Jargas.

Para evitar confusões, eu uso um software para controle de versões, o RCS. Além do controle de versões, é importante saber o que mudou de uma versão para outra. Com o RCS isto pode ser feito de uma forma muito simples, com a inclusão, no código do programa, da seguinte linha:

  # $Log$

A variável $Log será expandida exibindo, dentro do código, todo o histórico de revisões do programa.

Exemplo:

  #!/bin/bash
  
  # $Log$
  
  while read arquivo
  do
    echo $arquivo
  done < arquivos.txt

Vamos simular alguns passos. Para usar o RCS, precisamos criar um diretório chamado RCS dentro do diretório onde está o nosso código:

  mkdir RCS

Em seguida, colocamos o código de nosso programa ou shell script sob o controle do RCS:

  ci shell.sh
  RCS/shell.sh,v  <--  shell.sh
  enter description, terminated with single '.' or end of file:
  NOTE: This is NOT the log message!
  >> Programa para demonstrar o uso do RCS
  >> .
  initial revision: 1.1
  done

Isto feito, podemos começar a trabalhar com o programa. Para isto, usamos o comando co, abreviação para check out.

  % co -l shell.sh 
  RCS/shell.sh,v  -->  shell.sh
  revision 1.1 (locked)
  done

Podemos proceder agora fazendo as alterações necessárias no programa. A opção -l significa lock, ou seja, a edição do programa fica bloqueada a outros usuários. Ao final da edição, colocamos novamente o programa sob o controle do RCS, registrando o que foi feito:

  % ci -u shell.sh
  RCS/shell.sh,v  <--  shell.sh
  new revision: 1.2; previous revision: 1.1
  enter log message, terminated with single '.' or end of file:
  >> Inclusão do laço de leitura do nome dos arquivos
  >> .
  done

Precisamos agora extrair uma cópia do programa para uso, mas protegida contra gravação:

  % co shell.sh
  RCS/shell.sh,v  -->  shell.sh
  revision 1.2
  done

Vamos agora examinar o conteúdo do arquivo:

  % cat shell.sh
  #!/bin/bash
  
  # $Log: shell.sh,v $
  # Revision 1.2  2011/06/28 19:03:14  queiroz
  # Inclusão do laço de leitura do nome dos arquivos
  #
  
  while read arquivo
  do
    echo $arquivo
  done < arquivos.txt

Podemos ver que o comentário inserido aparece no corpo do programa. A variável $Log foi expandida para indicar o nome do arquivo (shell.sh,v), a versão (Revision 1.2), data e hora da modificação (2011/06/28 19:03:14) e o nome do autor das mudanças (queiroz). Finalmente, temos o comentário descrevendo as mudanças realizadas (Inclusão do laço de leitura do nome dos arquivos).

Existem outras variáveis que podem ser incluídas no código, como por exemplo $Author$, $Date$, e várias outras. A lista completa pode ser consultada na documentação (man ident).

Existem soluções mais sofisticadas para controle de versões, mas para sistemas pequenos, como o conjunto de scripts da Dicas-L, funciona super bem, permite saber o que cada versão faz, e impede a edição de forma inadequada dos arquivos.

Para saber mais sobre RCS, consulte o documento "The RCS MINI-HOWTO".

Veja a relação completa dos artigos de Rubens Queiroz de Almeida

Formato PDF
Newsfeed RSS
Formato para impressão
PDF RSS Imprimir

Referências Adicionais

Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.

Avalie esta dica

  • Currently 2.97/5
  • 1
  • 2
  • 3
  • 4
  • 5

Avaliação: 3.0 /5 (648 votos)

Opinião dos Leitores

Marz
29 Jun 2011, 11:23
Hmm, acho que o git é mais interessante, pois vc cria repositórios (ná realidade um banco de dados) localmente, fácil de levar num pendrive.

Faço isto com o meu etc e demais projetos em nas linguagens que trabalho, inclusive com documentos, imagens, binários, etc.
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script
Treinamentos, Consultorias e Soluçoes em TI. Baseados em softwares livres e padrões abertos para ambientes de missão crítica

Submarino.com.br

Asterisk na Prática 2ª Edição