From: Junio C Hamano Date: Mon, 11 Jul 2005 20:30:54 GMT Subject: Re: [PATCH 3/6] git-gnu-progs-Makefile: git Makefile update Message-ID: <7vy88dqe4h.fsf@assigned-by-dhcp.cox.net> In-Reply-To: <7virzhrtfy.fsf@assigned-by-dhcp.cox.net> Junio C Hamano writes: > The only user of "cp -l" in the Linus GIT is git-clone-script > local optimization. I could revert it to the version that I > originally sent to the list, which uses cpio -pld, if your cpio > groks that flag. Bryan, does this work for you? ------------ Two changes to git-clone-script local optimization. - When local optimization is used, the variable repo has already been passed through get_repo_base so there is no need to check for .git subdirectory in there. - Use cpio -l instead of "cp -l". Signed-off-by: Junio C Hamano --- diff --git a/git-clone-script b/git-clone-script --- a/git-clone-script +++ b/git-clone-script @@ -48,11 +48,8 @@ test -d "$D" || usage case "$local,$use_local" in yes,yes) ( cd "$repo/objects" ) || { - repo="$repo/.git" - ( cd "$repo/objects" ) || { - echo >&2 "-l flag seen but $repo is not local." - exit 1 - } + echo >&2 "-l flag seen but $repo is not local." + exit 1 } # See if we can hardlink and drop "l" if not. @@ -68,7 +65,9 @@ yes,yes) l=l fi && rm -f "$D/.git/objects/sample" && - cp -r$l "$repo/objects" "$D/.git/" || exit 1 + cd "$repo" && + find objects -type f -print | + cpio -puamd$l "$D/.git/" || exit 1 # Make a duplicate of refs and HEAD pointer HEAD=