2016-10-20 7 views
2

FileUtils docでオプションを維持する効果が何のfileutils :: CPメソッド

オプションパラメータがリストから取られたオプションのハッシュ、と言います。 noopは変更がないことを意味します。他の2つは明らかです。

しかし、私は:preserveオプションの効果を理解していません。 cpメソッドでは、このオプションがtrueの場合は、copy_metadataメソッドを呼び出します。それは何をするでしょうか?

答えて

2

cpメソッドから呼び出されcopy_entryのコメントによれば、真である+を保存+場合

https://github.com/ruby/ruby/blob/v2_3_1/lib/fileutils.rb#L452

、この方法は、所有者、グループ、および 変更時刻を保存します。パーミッションは+ preserve +に関係なくコピーされます。 copy_entryから呼び出され

そして実際にcopy_metadataは、コピー元ファイルからuidgidatimemtimeを取得するlstatを呼び出し、そしてFile.chownFile.utimeを使用して宛先をコピーし、それをアプリングています。

https://github.com/ruby/ruby/blob/v2_3_1/lib/fileutils.rb#L1399

def copy_metadata(path) 
    st = lstat() 
    if !st.symlink? 
    File.utime st.atime, st.mtime, path 
    end 
    begin 
    if st.symlink? 
     begin 
     File.lchown st.uid, st.gid, path 
     rescue NotImplementedError 
     end 
    else 
     File.chown st.uid, st.gid, path 
    end 
    rescue Errno::EPERM 
    # clear setuid/setgid 
    ... omitted ... 
    end 
end 
+0

ドキュメントが完全ではありませんので、それは少し紛らわしいです。実際には 'copy_entry'メソッドの上にあるドキュメントは' copy_metadata'メソッドに適用できます。 – niaomingjian

関連する問題