Bryan Larsen <[EMAIL PROTECTED]> writes: > Last night, I couldn't think of alternatives to these, but I obviously > didn't try very hard. xargs -r can probably happen via a temporary > file and cp -u can probably be simulated using rsync.
The only user of "xargs -r" in the Linus GIT is git-prune-script which tries not to run "rm -f" with an empty argument list, like this: git-fsck-cache --cache --unreachable "$@" | sed -ne '/unreachable /{ s/unreachable [^ ][^ ]* // s|\(..\)|\1/|p }' | { cd "$GIT_OBJECT_DIRECTORY" || exit xargs -r $dryrun rm -f } Not tested on a BSD, and it is probably as ugly as it can get, but we could: { echo 'unreachable nosuch/file'; git-fsck-cache --cache --unreachable "$@" } | sed -ne '/unreachable /{ s/unreachable [^ ][^ ]* // s|\(..\)|\1/|p }' | { cd "$GIT_OBJECT_DIRECTORY" || exit xargs $dryrun rm -f } 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. I do not speak for Pasky, but to me "cp -u" sounds just like an optimization, so maybe defining CP_U='cp -u' and detect missing support at config time and falling back on the simple "cp" would be an option? GNU "cp -a" states that is the same as "-dpR" (never follow symlinks, preserve link, mode, ownership, and timestamps), so that can be rewritten as a shell function in cg-Xlib that is called say cg_copy_tree, whose implementation runs two tar processes piped together when "cp -a" is not available. Using a tarpipe unconditionally is also fine. - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html