bootstrap.conf is invoked before --copy is parsed. And ln is called regardless of --copy in bootstrap.conf.
* bootstrap (bootstrap.conf): Invoke bootstrap.conf after parsing options. * bootstrap.conf (copy_files): Use cp if --copy is specified. --- bootstrap | 16 ++++++++-------- bootstrap.conf | 6 +++++- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/bootstrap b/bootstrap index 5a4a850..4adf16f 100755 --- a/bootstrap +++ b/bootstrap @@ -325,14 +325,6 @@ symlink_to_dir() } } -# Override the default configuration, if necessary. -# Make sure that bootstrap.conf is sourced from the current directory -# if we were invoked as "sh bootstrap". -case "$0" in - */*) test -r "$0.conf" && . "$0.conf" ;; - *) test -r "$0.conf" && . ./"$0.conf" ;; -esac - # Extra files from gnulib, which override files from other sources. test -z "${gnulib_extra_files}" && \ gnulib_extra_files=" @@ -387,6 +379,14 @@ if test -n "$checkout_only_file" && test ! -r "$checkout_only_file"; then die "Bootstrapping from a non-checked-out distribution is risky." fi +# Override the default configuration, if necessary. +# Make sure that bootstrap.conf is sourced from the current directory +# if we were invoked as "sh bootstrap". +case "$0" in + */*) test -r "$0.conf" && . "$0.conf" ;; + *) test -r "$0.conf" && . ./"$0.conf" ;; +esac + # Strip blank and comment lines to leave significant entries. gitignore_entries() { sed '/^#/d; /^$/d' "$@" diff --git a/bootstrap.conf b/bootstrap.conf index a37fe7c..04534c6 100644 --- a/bootstrap.conf +++ b/bootstrap.conf @@ -92,7 +92,11 @@ copy_files() { esac fi if [ "$2" = '.' ]; then - ln -sf $1/$file $2 + if $copy; then + cp -fp $1/$file $2 + else + ln -sf $1/$file $2 + fi else symlink_to_dir "$1" "$file" "$2/$dst" || exit fi -- 2.13.3