From 0c8b902aec765f95c39872a66c44edae70d30ece Mon Sep 17 00:00:00 2001 From: Rudolf Polzer Date: Fri, 27 May 2011 09:51:52 +0200 Subject: [PATCH] actually use hardlinks if possible --- all | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/all b/all index d3e42d35..a17f2ac9 100755 --- a/all +++ b/all @@ -295,13 +295,27 @@ case "$cmd" in { release_src=$1; shift release_dst=$1; shift - { - verbose cd "$release_src" - verbose git archive --format=tar HEAD -- "$@" - } | { - verbose cd "$release_dst" - verbose tar xvf - - } + # try to create a hardlink + if ln -f "$release_src/.git/HEAD" "$release_dst/.hardlink-test"; then + rm -f "$release_dst/.hardlink-test" + { + verbose cd "$release_src" + git ls-files HEAD -- "$@" + } | { + while IFS= read -r F; do + case "$F" in */*) mkdir -p "$release_dst/${F%/}" ;; esac + verbose ln -f "$release_src/$F" "$release_dst/$F" + done + } + else + { + verbose cd "$release_src" + verbose git archive --format=tar HEAD -- "$@" + } | { + verbose cd "$release_dst" + verbose tar xvf - + } + fi } ;; esac -- 2.39.2