Como o emacs salva arquivos por padrão?

3

Geralmente, os aplicativos executam salvamentos atômicos renomeando o arquivo antigo e gravando o novo arquivo no lugar, ou gravando um arquivo temporário e, em seguida, substituindo o arquivo antigo pelo novo arquivo temporário. Qual desses emacs faz? Eu encontrei este link para uma discussão de patch, mas eu não entendo o que está acontecendo.

    
por new linux user 05.05.2016 / 03:26

1 resposta

2

A resposta é que depende de todos os tipos de fatores.

Primeiro, observe que "renomear o arquivo antigo e gravar o novo arquivo no local" não é atômico.

O Emacs pode economizar de várias maneiras:

  • renomeia o arquivo antigo + escreve no lugar (não atômico, quebra os links).
  • não renomeie, escreva sobre o arquivo existente (não atômico, não quebra links).
  • grave em um novo arquivo e renomeie-o (atômico, quebra links).

Note que "quebrar links" também implica que o novo arquivo pode ter diferentes permissões / owner /...

Na maioria dos casos, o Emacs usará a segunda abordagem (para preservar links e permissões). Mas, se precisar fazer um backup do arquivo (de acordo com make-backup-files ), ele geralmente usará a primeira abordagem (onde a renomeação é usada para criar o backup), embora isso dependa de backup-by-copying (assim como outras variáveis com nomes que começam com backup-by-copying-when- ), bem como file-precious-flag e break-hardlink-on-save .

    
por 06.05.2016 / 02:01

Tags