Project

General

Profile

Bug #5419

FileUtils.cp_rの:preserveの動作

Added by seki (Masatoshi Seki) over 6 years ago. Updated about 1 month ago.

Status:
Closed
Priority:
Normal
Target version:
-
ruby -v:
ruby 1.9.4dev (2011-09-05 trunk 33195) [x86_64-darwin11.1.0]
[ruby-dev:44581]

Description

FileUtils.cp_rで:preserveとtrueに設定してディレクトリをコピーしたときに、
空でないディレクトリの時刻が設定されません。

おそらく、ディレクトリについて ent.copy_metadata した後に、そのディレクトリ以下にファイルが増えるためだと思います。
2パスで処理して、一巡目にコピー、二巡目にent.copy_metadata したら直るような気がしますが、もっとかっこいい方法もありそうです。

History

#1 [ruby-dev:44582] Updated by nobu (Nobuyoshi Nakada) over 6 years ago

その「もっとかっこいい方法」というのをちょっと教えて下さい。

#2 [ruby-dev:44583] Updated by nobu (Nobuyoshi Nakada) over 6 years ago

  • Status changed from Open to Assigned
  • Assignee set to seki (Masatoshi Seki)
  • Target version changed from 1.9.3 to 1.9.4

#3 [ruby-dev:44584] Updated by Anonymous over 6 years ago

咳といいます。

On 2011/10/07, at 17:16, Nobuyoshi Nakada wrote:

その「もっとかっこいい方法」というのをちょっと教えて下さい。

ほんというと、よくわかってません。
木の辿りの帰りがけにmetadata_copyするのか、あるいは、あとでやるキューをつくるのか...

fu_each_src_destを二回まわるほうがずっと良いのかも。

#4 [ruby-dev:44585] Updated by Anonymous over 6 years ago

On 2011/10/07, at 17:17, Nobuyoshi Nakada wrote:

Issue #5419 has been updated by Nobuyoshi Nakada.

Status changed from Open to Assigned
Assignee set to Masatoshi Seki
Target version changed from 1.9.3 to 1.9.4

う。アサインされたの?

#5 Updated by naruse (Yui NARUSE) over 5 years ago

  • Target version changed from 1.9.4 to 2.6

#6 Updated by naruse (Yui NARUSE) 6 months ago

  • Target version deleted (2.6)

#7 [ruby-dev:50542] Updated by mame (Yusuke Endoh) about 1 month ago

  • Status changed from Assigned to Closed

fileutils は github の方に切り出されたので、そっちにチケットを作りました。

https://github.com/ruby/fileutils/issues/21

こっちは閉じとこうと思います。

#8 [ruby-dev:50544] Updated by knu (Akinori MUSHA) about 1 month ago

おお。処理順がそうなっているとすると、書き込み禁止のディレクトリのコピーもできませんね。

#9 [ruby-dev:50545] Updated by knu (Akinori MUSHA) about 1 month ago

と思ったけどそれはさすがに大丈夫でした。

ruby -rfileutils -e 'include FileUtils; mkdir("d1"); touch("d1/a"); chmod(0500, "d1"); cp_r("d1", "d2", preserve: true)'

Also available in: Atom PDF