Git para SVN de forma manual

Tem esse projeto que eu comecei usando o Git, mas tenho que entregar em um SVN.

Daí para não bagunçar o checkout que fiz do SVN resolvi continuar usando o Git e copiar os arquivos para o diretório onde está o checkout do SVN.

Para saber quais arquivos tenho que copiar uso o

git diff <id_do_commit_que_ainda_não_copiei> --name-only

Para copiar os arquivos listados eu uso o xargs* com cp.

xargs -I {} cp {} ../projeto_no_svn/{}

Assim, para cada arquivo listado pelo git diff, o xargs vai executar um comando:

cp diretorio/arquivo.algumacoisa ../projeto_no_svn/diretorio/arquivo.algumacoisa

O comando completo fica:

git diff <id_do_commit_que_ainda_não_copiei> --name-only | xargs -I {} cp {} ../projeto_no_svn/{}

* Fonte: http://www.cyberciti.biz/faq/linux-unix-bsd-xargs-construct-argument-lists-utility/

Instalação do Subversion no Ubuntu 7.04 – Feisty Fawn

Terminei de instalar o servidor, dos meus freelances, com o Subversion. E para ter certeza de que não vou esquecer como fazer isso, estou escrevendo o que eu fiz dos dois tutoriais que eu segui.

  1. Instalar o Ubuntu Server sem selecionar as opções de LAMP ou DNS Server
  2. No meu caso, que tem um HD de 40GB, dividi as partições da seguinte forma:
    • 255MB, swap
    • 05GB, /
    • 04GB, /usr
    • 10GB, /srv
    • 20GB, /home

    A primeira informação é o tamanho da partição e a segunda o ponto de montagem. Tirando a partição swap, estou usando o sistema de arquivos EXT3 em todas elas.

  3. Instalar o Apache e o SVN:
    • sudo apt-get install apache2 subversion libapache2-svn
  4. Criar o diretório onde ficarão os repositórios do SVN:
    • sudo mkdir /srv/svn
  5. Criar o repositório. Aqui seria um bom momento para restaurar o backup, quando for o caso:
    • sudo svnadmin create /srv/svn/{repositorio}
  6. Dar acesso ao Apache para esses diretórios:
    • sudo chown -R www-data:www-data /srv/svn
  7. Configurar o módulo webdav do subversion
    1. sudo vim /etc/apache2/mods-enabled/dav_svn.conf
    2. Descomentar a tag <Location /svn>. No início e no fim do arquivo.
    3. Descomentar a opção DAV svn
    4. Descomentar a opção SVNParentPath /var/lib/svn e mudar o caminho para a localização do repositório: /srv/svn. Foi escolhido essa ao invés da SVNPath para termos mais de um repositório nesta mesma pasta.
    5. Descomentar a opção AuthzSVNAccessFile /etc/apache2/dav_svn.authz. Para habilitar o controle de acesso aos projetos usando o arquivo informado. Mais informação sobre como criar o arquivo podem ser vistas no livro vermelho do Subversion, na seção Per-Directory Access Control. Infelizmente, na versão em português este capítulo ainda não foi traduzido.
    6. Descomentar, para habilitar a autenticação, as três linhas:
      1. AuthType Basic
      2. AuthName “Subversion Repository”
      3. AuthUserFile /etc/apache2/dav_svn.passwd
      4. Adicione a linha: Require valid-user
      5. Salve o arquivo. Para isso, aperte a tecla ESC digite “:wq” sem as aspas e pressione enter
  8. Crie um usuário para acessr o SVN:
    • sudo htpasswd -cm /etc/apache2/dav_svn.passwd <username>
    • O parâmetro -c só é necessário para o primeiro usuário, pois é usado para criar o arquivo. Para os seguintes apenas o -m resolve, que é usado para criptografar a senha com o MD5.
  9. Reiniciar o apache
    • sudo /etc/init.d/apache2 restart

Estou querendo fazer melhorias como:

Alguém teria alguma sugestão ou correção para esse tutorial ou para o script?

Fontes:

Shell-Script para backup automático dos repositórios do Subversion

Fiz um script para backup dos repositórios do Subversion.

Este script está sendo usado no Ubuntu Linux Server versão 6.10 7.04(atualizei o servidor) , mas deve funcionar na maioria das outras distros. Mesmos as que não derivam o Debian.

Para usá-lo siga os seguintes passos:

  1. Copie o script para o servidor;
  2. Configure com os diretórios de sua preferência. Isso é feito modificando as variáveis:
    1. SVN_ROOT_REPOS: diretório onde estão os repositórios do SVN;
    2. BACKUP_PATH: onde será criado os arquivos de backup.
  3. Dê permissão de execução para o scrip:
    1. chmod +x svn_backup.sh

Como melhorias que eu gostaria de adicionar:

  • Leonardo: Apagar os arquivos de dump depois que eles forem compactados. Ok
  • Garantir que somente os arquivos de dump serão gravados no zip. Ok
  • Agendar o script no cron;
  • Copiar o arquivo zipado para outro servidor;
  • Gerar um Hash MD5 para o arquivo de backup e enviar junto do arquivo;
  • Testar o arquivo recebido usando o Hash MD5.

Vocês teriam alguma sugestão? Outra funcionalidade que eu não tenha pensado? Uma forma de fazer as mesmas coisas mais facilmente?

Fontes:

P.S.: Como o WordPress não deixa eu subir arquivos .sh coloquei a extensão “doc”.

UPDATE: Saiu no BR-Linux um post com um script, em Python, para backup do Subversion e Trac.