Por que preciso republicar um arquivo quando o atualizo?

3

Estou codificando um programa e, ao mesmo tempo, quero compartilhá-lo com os membros do meu grupo usando o Ubuntu. Eles não têm uma conta do Ubuntu One e o que eu faço é publicar o arquivo e meus amigos simplesmente pegam o link e o arquivo.

Mas, estranhamente ou não, toda vez que eu carrego uma nova versão desse arquivo (adiciono mais código e salvo), o link usado parece estar "desatualizado" e preciso publicar o mesmo arquivo novamente e obter um novo link toda vez que eu modifico o mesmo arquivo.

Não foi possível salvar uma nova versão do seu arquivo e o mesmo link apenas "aponta" para a versão mais recente?

    
por yogaxpto 20.05.2011 / 16:06

1 resposta

4

De Chipaca (Ubuntu One dev) responder a um semelhante pergunta :

  

No entanto, se você editá-lo com um editor que renomeie o arquivo, crie um novo, copie o conteúdo e exclua o original (como a maioria dos editores), e o syncdaemon esteja em execução, ele verá a renomeação e o delete e seu URL público se referirá primeiro ao arquivo renomeado e, em seguida, desaparecerá.

     

Este é um efeito colateral infeliz da maneira como estamos fazendo arquivos públicos e algo que precisamos mudar, mas agora é o que é.

Basicamente, quando você salva um arquivo com a maioria dos editores, você está realmente substituindo o arquivo original pela versão modificada. Você pode ver por si mesmo usando o comando stat :

hello@world:~$ stat -c %i hello.txt
4971

O comando stat -c %i retorna o número de inode de um arquivo.
Executando o mesmo comando novamente depois de ter editado hello.txt no gedit
 retorna um número de inode diferente:

hello@world:~$ stat -c %i hello.txt
3794

Se eu simplesmente acrescentar uma linha de texto ao final do arquivo usando >> , o arquivo será simplesmente modificado, não substituído:

hello@world:~$ echo "The End." >> hello.txt
hello@world:~$ stat -c %i hello.txt
3794

Encontrei uma maneira um pouco estranha de contornar essa limitação no Ubuntu One:

  1. Crie uma cópia do arquivo publicado:

    cp hello.txt hello-copy.txt
    
  2. Faça todo o seu trabalho na cópia em vez do arquivo publicado:

    gedit hello-copy.txt
    
  3. Quando você quiser atualizar o arquivo publicado, execute o seguinte comando:

    cat hello-copy.txt > hello.txt
    
por Isaiah 24.06.2011 / 00:36