Katakanlah saya punya dua file file1
dan file2
:
$ echo aaa >file1
$ ln file1 file2
Lalu saya periksa apakah inodenya sama:
$ ls -i
18749779 file1 18749779 file2
yang menunjukkan bahwa kedua file tersebut sebenarnya sama. Sekarang saya mengedit file1
di Emacs, dan menambahkan baris dengan misalnya teks bbb
, dan menyimpannya dan keluar dari Emacs.
Sekarang saya dapat:
$ ls -i
18749781 file1 18749779 file2
$ cat file1
aaa
bbb
$ cat file2
aaa
Jadi tautannya rusak. Perhatikan bahwa ini tidak terjadi ketika saya mengedit file vim
, atau jika saya hanya melakukan echo bbb >>file1
..
Bagaimana saya bisa mencegah Emacs dari putus tautan keras?
Memperbarui:
Perhatikan bahwa saya punya
(require 'backup-dir)
(setq bkup-backup-directory-info
'((t "~/.emacs-backups/" ok-create full-path )))
dalam ~/.emacs
file init saya . Jika saya mengedit file1
menggunakan emacs -Q file1
sebagai gantinya, saya mendapatkan file yang dipanggil file1~
di direktori saat ini yang terhubung ke file2
(memiliki inode yang sama) tetapi file1~
belum dimodifikasi (jadi identik dengan yang lama file1
) .. Ini bukan yang saya inginkan. Saya ingin keduanya file1
dan file2
menjadi file yang sama, dan untuk memasukkan konten file yang diperbarui.
(setq backup-by-copying t)
ke~/.emacs
file init saya itu berfungsi seperti yang diinginkan ..Jawaban:
@ Hakon memecahkan masalahnya sendiri dengan:
Jika Anda lebih memilih untuk mempertahankan perilaku default, dan menggunakan
back-up-by-copying
hanya untuk file hard-linked, Anda dapat menggunakan ini sebagai gantinya (dan cutibackup-by-copying
set untuknil
):Selain itu, seperti yang ditunjukkan oleh @Harald Anda dapat menetapkan
back-up-by-copying
sebagai variabel file-lokal sebagai gantinya, untuk mengaktifkan fitur ini hanya untuk file individual.Penjelasan tentang perilaku ini dari manual Emacs :
Lihat halaman tertaut untuk diskusi lebih lanjut.
sumber