O Netbeans destrói os hardlinks ao salvar

2

Estou usando o Netbeans 7.0.1 em um sistema Linux.

Eu tenho um arquivo

module/test.php

e outro

application/module/test.php

Os arquivos test.php são hardlinks um do outro.

Quando altero application/module/test.php no Netbeans, o module/test.php não é atualizado. Mas deveria.

Acho que o Netbeans exclui o test.php e cria um novo?

Eu acredito que no Netbeans 6 isso não aconteceu.

Como posso consertar isso? Existe alguma opção oculta para obter o comportamento antigo?

    
por Alex 31.10.2011 / 13:45

2 respostas

1

A maneira apropriada para um editor de texto atualizar (salvar) um arquivo é criar um novo arquivo no mesmo diretório com um nome temporário, escrever novos conteúdos nele e depois apagar o arquivo antigo e renomear o novo para o seu nome real .

Justificativa: Se você estiver reescrevendo um arquivo, qualquer falha catastrófica (perda de energia, setor defeituoso no disco, etc.) pode deixar esse arquivo corrompido ou apenas parcialmente gravado. Portanto, qualquer editor sane não faz gravações no local. Estou muito surpreso que o NetBeans fez isso em versões mais antigas.

Naturalmente, esse método de exclusão / renomeação não está ciente de seu link físico, e procurar um disco inteiro por outros links para um arquivo não é uma opção, portanto nenhum editor faz isso.

Eu não acho que você pode ter um comportamento antigo, e mesmo se você puder, esta é uma idéia muito ruim. Se você não puder alternar para links (que não são afetados por esse problema), eu suponho que você terá que procurar outra maneira de fazer o que está fazendo.

    
por 05.11.2011 / 01:51
1

Até onde eu sei, o NetBeans não pode ser configurado para fazer um salvamento de "um estágio", que é o que você está pedindo. O que ele faz é um save de "dois estágios".

Um editor que pode fazer isso é jEdit , se isso ajudar.
Aqui está o que diz na seção Salvando arquivos do manual do jEdit:

Two-Stage Save

To prevent data loss in the unlikely case that jEdit should crash in the middle of saving a file, files are first saved to a temporary file named #filename#save#. If this operation is successful, the original file is replaced with the temporary file.

However, in some situations, this behavior is undesirable. For example, on Unix this creates a new i-node so while jEdit retains file permissions, the owner and group of the file are reset, and if it is a hard link the link is broken. The “two-stage save” feature can be disabled in the General pane of the Utilities>Global Options dialog box; see the section called “The General Pane”.

    
por 05.11.2011 / 21:24