3 NWD=contrib/workdir/git-new-workdir
9 probed=${p%/git-active/bin}
10 if test "$probed" != "$p"
19 force= with_dash= M= install= nodoc= notest= bootstrap= branches= jobs=
22 --pedantic | --locale=* | --loose) M="$M $1" ;;
24 --dash) with_dash=y ;;
25 --noinstall) install=noinstall ;;
28 --test=*) test="$1" ;;
29 --scratch) scratch=y ;;
30 --bootstrap) bootstrap=y ;;
31 --base=*) BUILDBASE=${1#*=} ;;
32 --branches=*) branches=${1#*=} ;;
35 -*) echo >&2 "Unknown option: $1"; exit 1 ;;
42 for TRASH in /dev/shm /tmp ""
44 if test -n "$TRASH" &&
45 mkdir -p "$TRASH/testpen" 2>/dev/null &&
46 test -w "$TRASH/testpen"
48 TRASH="--root=$(cd "$TRASH/testpen" && /bin/pwd)"
53 sh -c 'asciidoc --version >/dev/null 2>&1' || nodoc=y
54 GIT_TEST_OPTS="$TRASH${GIT_TEST_OPTS+" $GIT_TEST_OPTS"}"
58 export GIT_TEST_CHAIN_LINT
60 test -f /bin/dash || with_dash=
61 if test -z "$BUILDBASE"
63 if test -d "$inst_prefix/buildfarm"
65 BUILDBASE="$inst_prefix/buildfarm"
66 elif test -d "../buildfarm"
68 BUILDBASE=../buildfarm
70 echo >&2 "Buildbase unknown"
74 test -n "$branches" || branches='next master maint jch pu'
75 test -n "$jobs" || jobs=-j2
79 test -f "$inst_prefix/git-$branch/bin/git" &&
80 installed=$($inst_prefix/git-$branch/bin/git version) &&
81 if version=$(expr "$installed" : '.*\.g\([0-9a-f]*\)$')
84 elif version=v$(expr "$installed" : \
85 'git version \(.*\)\.rc[0-9]*$')
87 version="$version"-$(expr "$installed" : \
88 'git version .*\.\(rc[0-9]*\)$')
90 version=v$(expr "$installed" : 'git version \(.*\)')
92 git rev-parse --verify "$version^0" 2>/dev/null
95 installed_source_trees=" "
96 for branch in $branches
98 if v=$(find_installed $branch) &&
100 v=$(git rev-parse --verify "$v^{tree}" 2>/dev/null)
102 installed_source_trees="$installed_source_trees$v "
106 for branch in $branches
109 revision=$(git show-ref -s --verify "refs/heads/$branch") || {
114 if test ! -d "$BUILDBASE/$branch"
116 if test -z "$bootstrap"
118 echo "** No $BUILDBASE/$branch"
121 "$NWD" . "$BUILDBASE/$branch" $branch &&
122 ln -s "$(pwd)/Meta" "$BUILDBASE/$branch/Meta" || {
123 echo "** Failed to bootstrap $BUILDBASE/$branch"
128 private=$(git rev-parse -q --verify private-$branch 2>/dev/null)
129 case $? in 0|1) ;; *) exit $? ;; esac
131 version=$(find_installed $branch)
132 if test "z$version" = "z$revision"
134 echo "* up-to-date version is already installed from $branch"
135 test -n "$force" || continue
138 vtree=$(git rev-parse --verify "$version^{tree}")
139 rtree=$(git rev-parse --verify "$revision^{tree}")
141 skip_test=$notest skip_doc=$nodoc
146 for xtree in $installed_source_trees $vtree
148 if test "z$xtree" = "z$rtree" ||
149 git diff --quiet "$xtree" "$rtree" -- . \
150 ':!GIT-VERSION-GEN' \
159 dvtree=$(git rev-parse --verify "$version:Documentation/")
160 drtree=$(git rev-parse --verify "$revision:Documentation/")
161 if test "z$dvtree" = "z$drtree"
173 cd "$BUILDBASE/$branch"
175 case "$(git symbolic-ref HEAD)" in
176 "refs/heads/$branch")
179 git checkout "$branch" &&
180 git reset --hard || exit
195 git merge --squash --no-commit "$private" || {
196 echo >&2 "** Cannot apply private edition changes"
202 save=$(git rev-parse HEAD) &&
204 Meta/Make $M ${test+"$test"} $jobs -- ${with_dash:+SHELL_PATH=/bin/dash} "$@" $dotest &&
207 test -n "$skip_doc" ||
208 if test "$save" = "$(git rev-parse HEAD)"
210 Meta/Make $M $jobs -- doc &&
211 Meta/Make $M -- install-man install-html
213 echo >&2 "Head moved--not installing docs"
218 test z$install = znoinstall ||
219 if test "$save" = "$(git rev-parse HEAD)"
221 Meta/Make $M -- ${with_dash:+SHELL_PATH=/bin/dash} "$@" install
223 echo >&2 "Head moved--not installing"
228 ) </dev/null || exit $?
230 installed_source_trees="$installed_source_trees$rtree "