chiark / gitweb /
Optimise linkfarming
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 10 Oct 2020 01:49:26 +0000 (02:49 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 10 Oct 2020 01:49:26 +0000 (02:49 +0100)
This saves about 100ms in my project!

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
nailing-cargo

index c1b21ec0d14082b7280ef7d111128ba8a819beb1..068a3f92bd7472b89d4331b3497387fc81aad402 100755 (executable)
@@ -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;