From: Ian Jackson Date: Sat, 10 Oct 2020 01:49:26 +0000 (+0100) Subject: Optimise linkfarming X-Git-Tag: nailing-cargo/1.0.0~50 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=afe7943d049656321e8732fb2f6ed1ec1d905489;p=nailing-cargo.git Optimise linkfarming This saves about 100ms in my project! Signed-off-by: Ian Jackson --- diff --git a/nailing-cargo b/nailing-cargo index c1b21ec..068a3f9 100755 --- a/nailing-cargo +++ b/nailing-cargo @@ -649,9 +649,12 @@ END_FILES_GIT END_FILES_FULL } $pre .= <<'END_DEEP'; - xargs -0r sh -ec 'src="$1"; shift; for f in "$@"; do - ln -sf -- "$src/${f#./}" "$f"; - done' x "$src"; + perl -0 -ne ' + BEGIN { $src=shift @ARGV; } + next if (readlink "$_"//"") eq "$src/$_"; + unlink "$_"; + symlink "$src/$_", "$_" or die "$_ $!"; + ' "$src"; END_DEEP } $pre .= <<'ENDLK' if $do_cargo_lock;