Minhas dores de cabeça com os releases desse nano-projetinho open source (CachedObjects), essa biblioteca de cache para um framework (CodeIgniter) de desenvolvimento web em php me colocaram pra pensar:
Como você administra os releases do seu projeto open source? Tudo manualmente? Chama o tar -cvzf na linha de comando? Automatizou isso? e controle de versão? Qual? (povo do nerds.valeta, essa é pra vcs responderem :p)
Para quem não me entendeu, controle de versão não automatiza em nada o processo de release, seja cvs, svn, bzr, git, o que você quiser.
No meu caso, fiz um makefile para simplificar as seguintes etapas:
a) extração do history svn e formatação no padrão changelog.
b) produção tanto do README quando do site usando txt2tags
c) empacotamento em .tar.gz e .zip
d) upload do site atualizado e dos pacotes.
Mas ainda falta + coisa pra que o release seja realmente one liner.
Bruder, eu começo um projeto gerenciando versões dos arquivos com copia (cp foo foo.1, .2, .3 etc). Se o projeto cresce, mantenho versões em arquivos tar. Em seguida eu escolho algum lugar para hospedar. Acabo indo pro SOurceForge ou na hospedagem de código do GOogle. Se uso o SF, então utilizo o CVS, se voi pro GOogle, SVN, simples assim.
Acho que você não entendeu minha pergunta direito, então. Até mesmo usando Sourceforge, google, etc. O uso de controle de versão não automatiza o processo de release de versão.
No meu caso, fiz um makefile para automatizar:
a) extração do history svn e formatação no padrão changelog.
b) produção tanto do README quando do site usando txt2tags
c) empacotamento em .tar.gz e .zip
d) upload do site atualizado e dos pacotes.
Mas ainda falta + coisa pra que o release seja realmente one liner.
Para o HardInfo, eu fiz um alvo no Makefile que gera os tarballs, e os compacta com bzip2 e gzip. Também há um alvo que gera o instalador com o autopackage.
O upload ainda não é automático, mas como eu não faço isso sempre, não me preocupei em fazer algo que enviasse os arquivos para o diretório de upload do Berlios.
O que enche a paciência e eu quero automatizar é fazer o anúncio do release, em sites como Freshmeat e GNOME Files. O que está me segurando é fazer o ChangeLog da forma que esses sites esperam. O diff do svn ajuda mas não dá pra automatizar aquilo…
Bruder, então seja mais específico
No meu caso, o rudix.org, o próprio sistema de ports gera o “distribuível”, pacote .pkg para a instalação no Mac. O processo é automatizado com o makefiles (make pkg). Geralmente gero releases a partir de um tag do CVS/SVN/etc. com algum comando similar ao “cvs export”.
Sobre o Changelog… Eu não automatizei (embora sinta falta). Até porque eu tenho dois tipos de changelog no rudix. Um que diz respeito somente ao build system e outro que é específico do pacote. Eu costumo “catar” o changelog que faço quando dou checkout no cvs e colo no release do pacote (no site). Em resumo, manual.
Pra automatizar a criação de changelog me basta o eyrie.org/~eagle/software/svnlog/ mas é claro que isso depende bastante da qualidade dos teus commits
svn2cl, no ubuntu faz parte do pacote subversion-tools, é o que eu uso.