Untuk kelas sistem operasi yang saya ikuti, saya harus menjalankan Freebsd5.4. Karena saya tidak ingin bergulat dengan mencoba membangun git pada versi bsd yang dirilis sebelum git dirilis, saya pikir akan lebih rapi untuk digunakan git
dari Arch over sshfs
.
Bagaimanapun saya menemukan solusi yang menyarankan saya memberikan sshfs
pilihan -o workaround=rename
.
Tampaknya membuat git
senang, tapi aku agak bingung dengan apa yang baru saja terjadi ...
Semua halaman manual mengatakan tentang solusinya adalah
fix renaming to existing file
tapi saya benar-benar bingung apa artinya ...
Apa sebenarnya yang dilakukan opsi itu?
Jawaban:
sshfs menggunakan SSH File Transfer Protocol (SFTP). Solusi yang telah Anda aktifkan adalah bekerja di sekitar semantik operasi rename () atas protokol itu ketika nama "baru" sudah ada.
Perilaku POSIX untuk mengganti nama () dalam hal ini adalah menghapus file yang ada dan menyelesaikan mengganti nama.
Dalam protokol SFTP, Anda dapat mengganti nama file dengan operasi SSH_FXP_RENAME; Namun, perilakunya ketika nama target sudah ada tampaknya tergantung pada versi protokol yang Anda gunakan dan tanda apa yang Anda lewati. The halaman wikipedia untuk protokol SFTP memiliki link ke berbagai rancangan RFC untuk berbagai versi dari protokol. Dalam Draf 00 perilaku ini terdaftar sebagai:
Dalam Konsep 13 , perilaku ini terdaftar sebagai
Untuk menangani kemungkinan kegagalan operasi penggantian nama () ketika nama target ada, sshfs memberikan solusi berikut (jika diaktifkan) :
Dalam kode ini "from" adalah nama file yang ada yang ingin kita rename dan "to" adalah nama baru yang kita inginkan. Mengesampingkan beberapa panjang jalur dan kesalahan pembukuan, ini berhasil
Ini menghindari konflik "file yang sudah ada", tetapi juga mengubah semantik operasi rename (), itulah sebabnya Anda tidak ingin melakukannya secara default.
sumber