Páginas

Showing posts with label svn. Show all posts
Showing posts with label svn. Show all posts

Friday, December 5, 2008

Instalando e usando o Capistrano no Ubuntu Linux - Parte 2

Depois de instalarmos o Capistrano hoje pela manhã [1], chegou a hora de usar!

No momento não estamos desenvolvendo em Rails, o framework que tornaria o uso do Capistrano natural. Porém, o Capistrano não é limitado a framework ou linguagem.
Então, vamos configurar o deploy automático de uma aplicação web em TurboGears / Python.

Primeiro criamos um projeto TG básico:
$ tg-admin quickstart
Enter project name: lifeatmymind
Enter package name [lifeatmymind]:
Do you need Identity (usernames/passwords) in this project? [no]
...
$ cd lifeatmymind/
Criamos o diretório config só para termos um dos arquivos que o Capistrano irá criar:
$ mkdir config
E rodamos o comando para preparar o Capistrano para fazer deploy da aplicação: capify.
$ capify .
[add] writing `./Capfile'
[add] writing `./config/deploy.rb'
[done] capified!

Infelizmente tivemos que interromper nossa tarde por alguns problemas.
Ainda faltam alguns passos para efetivamente colocarmos o Capistrano em ação:
  • Configurar nosso repositório SVN
  • Configurar o apache2 (ou instalar o nginx)
  • Configurar o Capistrano
  • Ver se tudo funciona :D
Por hora, existe um tutorial oficial que pode dar uma noção do que fazer [2].

[1] http://lifeatmymind.blogspot.com/2008/12/instalando-e-usando-o-capistrano-no.html
[2] http://www.capify.org/getting-started/from-the-beginning

Sunday, August 24, 2008

Desfazendo mudanças em um repositório SVN


Uma das vantagens de usar um sistema de controle de versão, como o Subversion, é a possibilidade de voltar atrás quando uma alteração foi indesejada.
Costumo falar para meus amigos que devemos commitar o código freqüentemente, sempre, sempre, sempre. O trabalho deve ser feito de forma incremental, uma pequena tarefas/alteração por vez, em passos de bebê.

Para desfazer uma mudança já commitada no repositório, basta seguir os passos descritos aqui: http://svnbook.red-bean.com/en/1.1/ch04s04.html

Suponha que você está trabalhando numa cópia de trabalho de /calc/trunk, e então descobre que uma mudança feita na revisão 303, que alterou o arquivo integer.c, está completamente equivocada. A alteração nunca deveria ter sido commitada. Você pode utilizar o comando svn merge para "desfazer" a mudança na sua cópia de trabalho, e depois commitar a modificação local para o repositório. Tudo que você precisa fazer é especificar uma diferenciação reversa:

$ svn merge -r 303:302 http://svn.example.com/repos/calc/trunk
U integer.c

$ svn status
M integer.c

$ svn diff

# verifique se a alteração indesejada foi removida


$ svn commit -m "Desfazendo mudança commitada em r303."
Sending integer.c
Transmitting file data .
Committed revision 350.

Uma revisão no repositório funciona como um grupo específico de alterações (changesets). Usando a opção -r, você está pedindo que o svn merge aplique um changeset, ou um conjunto deles, a sua cópia de trabalho local. No caso acima, aplicamos o changeset #303 de forma reversa.

Lembre-se que ao desfazer uma mudança, é recomendável usar o svn status e svn diff para confirmar que seu trabalho está no estado correto, e depois usar o svn commit para enviar a versão final ao repositório.

Se você está pensando: "eu não desfiz um commit de verdade, certo? A mudança ainda está lá na revisão 303. Se alguém fizer checkout de uma versão entre 303 e 349, verão a mudança indesejada!"
Isso mesmo, o svn merge apenas "remove" a mudança indesejada do HEAD (última revisão) do repositório.

Dica extra:

Para saber qual a versão atual do repositório, use o comando svn info.
Exemplos:
  • Informações úteis sobre um arquivo:
$ svn info foo.c
Path: foo.c
Name: foo.c
URL: http://svn.red-bean.com/repos/test/foo.c
Revision: 4417
Node Kind: file
Schedule: normal
Last Changed Author: sally
Last Changed Rev: 20
Last Changed Date: 2003-01-13 16:43:13 -0600 (Mon, 13 Jan 2003)
Text Last Updated: 2003-01-16 21:18:16 -0600 (Thu, 16 Jan 2003)
Properties Last Updated: 2003-01-13 21:50:19 -0600 (Mon, 13 Jan 2003)
Checksum: /3L38YwzhT93BWvgpdF6Zw==


Informação sobre diretórios:
$ svn info vendors
Path: trunk
URL: http://svn.red-bean.com/repos/test/vendors
Revision: 19
Node Kind: directory
Schedule: normal
Last Changed Author: harry
Last Changed Rev: 19
Last Changed Date: 2003-01-16 23:21:19 -0600 (Thu, 16 Jan 2003)

Monday, August 11, 2008

Instalando Django

Finalmente comecei a brincar com o Django. Está sendo uma experiência muito satisfatória até o momento!
A instalação foi extremamente fácil. No ambiente do Ubuntu, tudo que precisei fazer foi:
1) Pegar uma cópia do repositório com a versão mais atual (eu salvei no meu /home por enquanto)
svn co http://code.djangoproject.com/svn/django/trunk/ django
2) Criar alguns symlinks para que o Python acesse os arquivos do Django
sudo ln -s `pwd`/django/django /usr/lib/python2.5/site-packages/django
sudo ln -s `pwd`/django/django/bin/django-admin.py /usr/local/bin


Dependendo do seu sistema, o site-packages pode estar em outro lugar.
Para descobrir onde, rode o seguinte comando no console:
python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"

Pronto! Agora basta seguir para o tutorial em:
http://www.djangoproject.com/documentation/tutorial01/

As instruções oficiais estão em http://www.djangoproject.com/documentation/install/.

Dada a absurda facilidade para instalar, a diversão fica aumentada!
Para ambiente Windows, basta usar algum programa como o RapidSVN ou TortoiseSVN para fazer o checkout do repositório, e colocar o diretório do Django diretamente em C:\Python25\Lib\site-packages\django e copiar o arquivo django-admin.py para C:\Python25\Scripts.

Tuesday, August 5, 2008

Em breve...

Hoje comecei a sentir o peso da volta as aulas.
Vou cursar a matéria "Computador e Sociedade", e terei de produzir alguns textos. Creio que eles serão postados com o passar do tempo.

O dia foi corrido, estou juntando material sobre como instalar o SVN + Apache2, em breve vem os detalhes!