Archive for October, 2009

Exporting a git repository to subversion

Tuesday, October 6th, 2009

Yeah, you read that right. That is probably the inverse of what most people want. But, anyway, let’s say you have a project originally hosted on a git repository and you need to export it to a subversion repository for some reason. Now what?

The nice folks of Google Code have put a really good step-by-step guide explaining how to do it. This guide was originally posted on Google Open Source Blog. In case you need another view on the process, you can follow the “git export to svn” discussion on nabble — which just get good at the very end.

There is a little gotcha on the guide — not an error, but something they should have stressed. The Subversion repository you will use must be non-empty. Again: the Subversion repository must be non-empty. Notice that by non-empty all they mean is that the subversion repository should have at least one revision commited to it, and not that it ought to have files in it. Got it? Good. Now move on.

Reparo no Time Machine

Friday, October 2nd, 2009

Então, como eu falei antes, enviei o meu Macbook para o reparo, onde trocaram a placa lógica dele. Depois disso o Time Machine parou de reconhecer o disco de backup antigo que eu usava. Na verdade, ele passa a ignorar todos os backups anteriores e resolve criar um backup novo, do zero. Desnecessário dizer que isso tira metade da graça em usar o Time Machine (backups temporais), sem comentar os desperdício em espaço em disco — vou praticamente ter duas cópias dos mesmos dados do disco de backup.

E aí, Bial, como fazer para resolver isso?

Existem bons guias em inglês dizendo como resolver; coloquei links para eles ao final desse post. Mas, para aqueles que têm algum problema com o inglês, vamos ao passo-a-passo de como resolver isso na velha língua de Camões. Como alguns comandos requerem o uso da linha de comando, vou assumir certa familiaridade com a mesma.

Entendendo o Problema

Antes de mais nada, uma rápida explicação. O Time Machine usa um identificador que fica atrelado à sua placa de rede (o seu “endereço MAC“) para reconhecer o backup de um micro. Isso permite inclusive que um mesmo disco de backup seja compartilhado por vários micros: cada um terá seu backup identificado unicamente pelo endereço MAC do seu respectivo micro.

Todavia, se a placa lógica de um micro muda, o endereço MAC dela também muda. Por isso, quando o Time Machine for procurar por backups anteriores do seu micro, ele procurará backups associados ao identificar atual do micro — ou seja, ao seu novo endereço MAC. E é por isso que ele não encontrará seus backups anteriores: todos os seus backups ainda estão atrelados ao antigo identificador do seu micro e não ao novo. Para corrigir esse problema temos que “informar” o Time Machine sobre essa mudança de identificador. Na prática, apenas atualizaremos o endereço MAC nos backups antigos com o novo endereço MAC. Assim, o Time Machine identificará seus backups anteriores como backups do micro atual e nada do seu histórico será perdido.

Coletando algumas informações

Antes de prosseguir, você terá de cololetar algumas informações

  • Mount-point do Time Machine
    Provavelmente será dentro do /Volumes, alguma coisa como '/Volumes/Time Machine' ou, no meu caso, '/Volumes/Backups do Time Machine/'.
  • Diretório onde o Time Machine guarda os backups antigos do seu micro
    Dentro do volume/mount-point do Time Machine haverá uma pasta chamada Backups.backupdb e, dentro dessa pasta, haverá uma (provavelmente) com o nome do seu micro. Essa é a pasta que contém os seus backups antigos. No meu caso, o path completo para ele era /Volumes/Backups do Time Machine/Backups.backupdb/notebook
  • O antigo endereço MAC do seu micro
    Sim! Você vai precisar dessa informação. Se você não tinha anotado o seu antigo endereço MAC em algum lugar o que lhe resta é extrair essa informação direto do Time Machine. O comando abaixo deve resolver esse problema. Adapte as nomes dos diretórios de acordo com as suas configurações

    $ cd /Volumes/Backups\ do\ Time\ Machine/Backups.backupdb/
    $ xattr -p com.apple.backupd.BackupMachineAddress notebook

    A saída desse comando deve ser algo como 00:1e:c2:1e:1e:ca. Esse é o valor do seu antigo endereço MAC.
  • O novo endereço MAC do seu micro
    O comando abaixo deve dar conta de lhe fornecer essa informação

    $ LC_ALL=C ifconfig en0 | awk '/ether/{print $2}'

    O resultado deve ser um identificador como 00:22:41:22:16:f3. Esse é o endereço MAC atual do seu micro.

Passo-a-Passo

De posse de todas as informações necessárias, vamos agora ao passo-a-passo para resolver esse problema.

  1. Se o disco de backup estiver conectado, desconecte-o.
  2. Em seguida, desligue o Time Machine. Você não vai querer ele interagindo com você enquanto os ajustes são feitos. Vá lá no “Preferências do Sistema”, vá na área do Time Machine e desligue-o.
  3. Reconecte seu disco de backup.
  4. Desabilite temporariamente as ACLs no volume da Time Machine. Não precisa ficar com cara de Amélia se você não entendeu. Apenas digite os comandos abaixo:

    $ sudo fsaclctl -p '/Volumes/Backups do Time Machine/' -d
  5. Dentro do raiz do volume do Time Machine existe um arquivo invisível cujo nome corresponde ao identificador MAC antigo do seu micro precedido por ponto e sem os “:”, ou seja “.001ec21e1eca“. Esse arquivo terá de ser renomeado para refletir o valor do novo MAC. Aplique o mesmo processo ao novo MAC e você terá o novo nome para esse arquivo.

    $ cd /Volumes/Backups do Time Machine/
    $ mv .001ec21e1eca .0022412216f3
  6. O diretório com seus backups antigos possui um atributo extendido com o valor do MAC antigo. Atualize-o com o valor do MAC novo.

    $ cd /Volumes/Backups do Time Machine/
    $ sudo xattr -w com.apple.backupd.BackupMachineAddress 00:22:41:22:16:f3 Backups.backupdb/notebook
  7. Reabilite as ACLs no volume da Time Machine.

    $ sudo fsaclctl -p '/Volumes/Backups do Time Machine/' -e
  8. Desconecte/Ejete o seu disco de backup
  9. Re-habilite o Time Machine
  10. Reconecte o seu disco de backup

E é isso. Após tudo isso o Time Machine deverá iniciar um outro processo de backup — e esse deve demorar um pouco mais já que provavelmente seu micro estava há um bom tempo sem fazer backup.

Referências