RSS Assine nosso RSS

Posts com a Tag ‘eclipse’

25/11/2008 por andre.gustavo

Configuração de acesso svn+ssh com subclipse no Windows

Na busca por um ambiente Windows o mais parecido com meu atual ambiente de desenvolvimento Linux, tenho aqui uma série de coisas para compartilhar com vocês, a primeira delas é como configurar o eclipse + subclipse para utilizar svn+ssh sem vender sua alma ou fazer qualquer ritual.

É muito simples, de posse  do eclipse ja com o plugin subclipse baixe o aplicativo Tortoise SVN, instale o mesmo da maneira que achar conveniente. Após isso vamos a simples configuração do mesmo. Abra para edição o seguinte arquivo:

c:\Documents and Settings\{seu usuario}\Dados de Aplicativos\Subversion\config

Nele você vai precisar tirar o comentário de algumas linhas e adicionar valores, vamos primeiro tirar os comentarios das seguintes linhas e modificar os valores, deixando essas linhas assim (após edição manter arquivo aberto):


[auth]
# Gravar a senha após autenticar, evita que você repita a senha 20 vezes em um checkout, update ou commit
store-passwords = yes
# Armazena sua identidade para próximas ações
store-auth-creds = yes

Feito isso, nosso svn+ssh não irá conectar de modo algum, é nesse momento que vemos a importancia de ter instalado na máquina o Tortoise SVN, além de você agora contar com um seu Windows Explorer como um navegador com suporte a SVN, você terá coisas úteis como tortoiseplink.exe, que será utilizado aqui para fazer o tunelamento da conexão, já que o nosso pobre Windows desconhece isso.

Precisamos então dizer ao Subversion que quem vai fazer o “tunnel” será o toroiseplink.exe, lá na sessão [tunnels] você terá uma opção para remover o comentário e utilizar o endereço completo do executável, no meu caso ficou assim:


[tunnels]
ssh = c:/Arquivos de programas/TortoiseSVN/bin/TortoisePlink.exe

É assim mesmo, com essa /, feito isso o recomendando no minimo é reiniciar o eclipse ou até mesmo o pc, caso essa solução não funcione, tente com variaveis de ambiente, cria uma chamada SVN_SSH e coloque o endereço do tortoiseplink.exe lá, e dessa vez utilizando \\. Agora sim, pode dar um checkout e notar que ta tudo funcionando.

25/11/2008 por elton.minetto

Lock em arquivos usando SVN e Subclipse

Outra novidade para mim ao usar o Subversion foi o controle de Locks.

Eu sempre usei o CVS integrado ao Eclipse para gerenciar os projetos que eu trabalhava e com essa duplinha é bem fácil configurar para evitar que dois programadores alterem o mesmo arquivo.

Com o Subversion e o Eclipse (usando o plugin Subclipse) eu não encontrei essa opção. A solução que encontrei foi configurar o cliente do subversion para quando criar novos arquivos marcá-los com um flag. Este flag indica que, para editar o arquivo é preciso que seja feito o “lock” antes. No momento de criar o lock o Subclipse também verifica a versão do arquivo e avisa caso a versão local seja inferior a que consta no repositório. Desta forma eu garanto que o programador sempre tenha a última versão do arquivo e evito que duas pessoas alterem o mesmo arquivo ao mesmo tempo. Existem formas de corrigir isso usando práticas de merge, mas eu acho mais fácil evitar o problema do que resolvê-lo -)

O que eu fiz foi alterar o arquivo config no diretório do usuário:

mate ~/.subversion/config

Eu estou usando o Textmate no MacOSX. Mas o mesmo passo vai funcionar no Linux. No Windows XP o arquivo encontra-se no diretório

c:\Documents and Settings\usuario\Dados de Aplicativos\Subversion\config

Neste arquivo eu alterei

# enable-auto-props = yes

para

enable-auto-props = yes

E adicionei alinha abaixo na seção  [auto-props]

* = svn:needs-lock

Desta forma, assim que o programador criar um novo arquivo e realizar o primeiro commit é adicionada esta flag ao arquivo. Todos que forem alterá-lo vão passar pela fase “lock-edit-commit”, com um “update” caso seja necessário.

25/11/2008 por elton.minetto

Deploy automático do SVN

Estou iniciando um novo projeto e aproveitei para mudar do CVS para o Subversion.

Uma das coisas que achei interessante é o esquema de “hooks“. É um conceito parecido com “triggers” de bancos de dados. Você pode programar alguns scripts para serem executados em momentos específicos do ciclo gerenciado pelo SVN. As opções são:

post-commit.tmpl
post-lock.tmpl
post-revprop-change.tmpl
post-unlock.tmpl
pre-commit.tmpl
pre-lock.tmpl
pre-revprop-change.tmpl
pre-unlock.tmpl
start-commit.tmpl

Os nomes são auto-explicativos. Por exemplo, o script post-lock vai ser executado sempre após algum usuário ter feito o lock de um arquivo.

Estes arquivos estão armazenados no diretório hooks do repositório do projeto.

O que eu fiz foi alterar o post-commit.tmpl

É preciso remover a extensão do nome e dar permissão de execução no arquivo, então:

cp post-commit.tmpl post-commit
chmod +x post-commit

O conteúdo do arquivo ficou assim:

REPOS="$1"
REV="$2"
PROD="/var/www/html"
#pega todas as alteracoes
svnlook changed $REPOS --revision $REV >> /tmp/lixo_$REV
#pega cada alteracao e salva
for i in `cat /tmp/lixo_$REV|cut -c 5-1024` ; do
  svnlook cat $REPOS $i > $PROD/$i
done
#apagar arquivo
rm /tmp/lixo_$REV
Desta forma cada vez que um programador faz o commit do fonte ele é automaticamente salvo no htdocs, onde fica acessível para a equipe de testes.
Lógico que esse script pode ser melhorado e isso está sendo executado em um servidor de desenvolvimento e não o de produção. Além disso eu comecei a usar o SVN somente agora, por isso, se alguém encontrar um problema ou erro na lógica me avisem -)
BlogBlogs.Com.Br