Project

General

Profile

Actions

Feature #4189

closed

FileUtils#ln_r

Added by trans (Thomas Sawyer) almost 12 years ago. Updated over 4 years ago.

Status:
Closed
Priority:
Normal
Target version:
-
[ruby-core:33820]

Description

=begin
I wrote a method for FileUtils to do recursive hard linking. It works just like cp_r but links instead of copies.

The code can be found along with the pull request I made to ruby/ruby on Github:

http://github.com/ruby/ruby/pull/4#issuecomment-631067

It's a pretty handy method for "staging" read-only files. For example I've used it to stage test fixture files in a tmp testing location and I've used it collect together a set of files for packaging into a tarball.
=end


Files

fileutils_ln_r.patch (4.72 KB) fileutils_ln_r.patch zzak (Zachary Scott), 11/19/2012 07:09 AM
fileutils_cp_lr.patch (4.72 KB) fileutils_cp_lr.patch mame (Yusuke Endoh), 03/08/2018 08:29 AM

Updated by naruse (Yui NARUSE) over 11 years ago

  • Status changed from Open to Assigned
  • Assignee set to matz (Yukihiro Matsumoto)

=begin

=end

Updated by matz (Yukihiro Matsumoto) over 11 years ago

=begin
Since ln command does not have -r option, I am kind of hesitating to add ln_r. I understand usefulness of the method. But I am not sure yet where to add (is fileutils the best place?), and what to add (is ln_r the best name for the method?).

matz.
=end

Updated by sakuro (Sakuro OZAWA) over 11 years ago

=begin
FYI
X11 distribution has lndir command, it creates real directories and file symlinks though.
=end

Updated by johan556 (Johan Holmberg) over 11 years ago

=begin
GNU cp has the -l option, so I think the proposed method is similiar to "cp -lr" on Linux systems.
=end

Updated by reset (Jamie Winsor) over 10 years ago

This ticket hasn't seen action in a year, but I wanted to chime in and +1 the feature.

Having a convenience function to recursively create hard links based on a source directory is a rare need, but a need, nonetheless. I think FileUtils is a fine place for it when compared to the other choices of where to place it in Ruby core.

Updated by zzak (Zachary Scott) about 10 years ago

Adding Thomas' patch from github.

Updated by mame (Yusuke Endoh) about 10 years ago

  • Target version set to 2.6

Updated by matz (Yukihiro Matsumoto) about 5 years ago

Accepted, but I am against the name ln_r because it behaves differently from ln -r (relative).

Matz.

Updated by akr (Akira Tanaka) about 5 years ago

After discussion at the developer meeting, cp_lr may be an consensus.

Actions #10

Updated by naruse (Yui NARUSE) almost 5 years ago

  • Target version deleted (2.6)

Updated by mame (Yusuke Endoh) over 4 years ago

I'll commit this patch that introduces FileUtils.cp_lr in a few days. Let me know if there is a problem.

Updated by mame (Yusuke Endoh) over 4 years ago

  • Assignee changed from matz (Yukihiro Matsumoto) to mame (Yusuke Endoh)
Actions #13

Updated by mame (Yusuke Endoh) over 4 years ago

  • Status changed from Assigned to Closed

Applied in changeset trunk|r62739.


Add FileUtils#cp_lr

  • lib/fileutils.rb: Add FileUtils#cp_lr. This method creates hard links
    of each file from directory to another directory recursively.
    This patch is based on Thomas Sawyers and Zachary Scott.
    [Feature #4189] [ruby-core:33820]
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0