Exclude original worktree links in modification check
Work around bash craziness

If you are set +u (as by default), bash treats ${array_var[@]} similarly
to $@. To illustrate this, define a function that outputs a count of its
arguments:

    count() { echo $#; }

Let’s then define functions that call count using $@ and
${array_var[@]}:

    count_dollar_at() { count "$@"; }
    count_array_var() { count "${array_var[@]}"; }

Now we try them with three elements:

    count_dollar_at one "two: 2" three  # outputs 3

    array_var=(one "two: 2" three)
    count_array_var                     # outputs 3

And with zero elements:

    count_dollar_at                     # outputs 0

    array_var=()
    count_array_var                     # outputs 0

Excellent! Let’s set -u for added safety, and do it again:

    set -u

    count_dollar_at one "two: 2" three  # outputs 3

    array_var=(one "two: 2" three)
    count_array_var                     # outputs 3

    count_dollar_at                     # outputs 0

    array_var=()
    count_array_var    # stderrs “-bash: array_var[@]: unbound variable”

:(
What happened? I think it might be a bash bug. After all, the array_var
does exist:

    echo "${#array_var[@]}"       # outputs 0
    echo "${#undeclared_var[@]}"  # stderrs “-bash: undeclared_var[@]: unbound variable”

---

As a workaround, this commit adds set +u for the duration of the $(…)
subshell that uses our potentially empty array.