- Make method static.
- Don't call dirname() in sort block. Relegate this to *::File.
This carries with it a slight performance boost; calculate dirname of
file only once upon instantiation, instead of (N log N) * 2 times.
- Move determination of read-only entries higher.
This carries with it a slight performance boost as well, no longer
redundantly testing directory write-ability N log N times (reduced to
N times), and no longer requires memory to keep track of warnings
issued.
During all this I uncovered a bug in how Archive::Tar handles sparse
files stored in tarballs; the library reports the file as having no
contents and a size of 0. As a result, in the freed-bytes-commas test,
the tarball extraction has been replaced by on-the-fly file creation.
Make sure to print when a control character is present. If it doesn't,
it leads to confusion when bash reports two apparently-equal strings
don't actually match due to the presence of a non-printing character.
Breaking changes:
* Remove support for symlink generation.
Bugs fixed:
* SHA-1 hash collisions no longer corrupt yer data.
Internal changes:
* Rework into a helper package