Page MenuHomeFreeBSD

D8895.diff
No OneTemporary

D8895.diff

Index: sys/conf/newvers.sh
===================================================================
--- sys/conf/newvers.sh
+++ sys/conf/newvers.sh
@@ -51,6 +51,9 @@
RELEASE="${REVISION}-${BRANCH}"
VERSION="${TYPE} ${RELEASE}"
+include_metadata=true
+modified=false
+
#
# findvcs dir
# Looks up directory dir at world root and up the filesystem
@@ -62,11 +65,14 @@
savedir=$(pwd)
cd ${SYSDIR}/..
while [ $(pwd) != "/" ]; do
- if [ -d "./$1" ]; then
- VCSDIR=$(pwd)"/$1"
- cd ${savedir}
- return 0
- fi
+ for vcs in svn git hg; do
+ if [ -d "./.$vcs" ]; then
+ VCSDIR=$(pwd)"/.$vcs"
+ VCS=$vcs
+ cd ${savedir}
+ return 0
+ fi
+ done
cd ..
done
cd ${savedir}
@@ -146,103 +152,14 @@
i=`${MAKE:-make} -V KERN_IDENT`
compiler_v=$($(${MAKE:-make} -V CC) -v 2>&1 | grep -w 'version')
-for dir in /usr/bin /usr/local/bin; do
- if [ ! -z "${svnversion}" ] ; then
- break
- fi
- if [ -x "${dir}/svnversion" ] && [ -z ${svnversion} ] ; then
- # Run svnversion from ${dir} on this script; if return code
- # is not zero, the checkout might not be compatible with the
- # svnversion being used.
- ${dir}/svnversion $(realpath ${0}) >/dev/null 2>&1
- if [ $? -eq 0 ]; then
- svnversion=${dir}/svnversion
- break
- fi
- fi
-done
-
-if [ -z "${svnversion}" ] && [ -x /usr/bin/svnliteversion ] ; then
- /usr/bin/svnliteversion $(realpath ${0}) >/dev/null 2>&1
- if [ $? -eq 0 ]; then
- svnversion=/usr/bin/svnliteversion
- else
- svnversion=
- fi
-fi
-
+# Perforce doesn't give us any clues in the filesystem, so we have to
+# guess based on p4 changes returning something or not, so we do that
+# before we look for all the other VCSs.
for dir in /usr/bin /usr/local/bin; do
if [ -x "${dir}/p4" ] && [ -z ${p4_cmd} ] ; then
p4_cmd=${dir}/p4
fi
done
-
-if findvcs .git; then
- for dir in /usr/bin /usr/local/bin; do
- if [ -x "${dir}/git" ] ; then
- git_cmd="${dir}/git --git-dir=${VCSDIR}"
- break
- fi
- done
-fi
-
-if findvcs .hg; then
- for dir in /usr/bin /usr/local/bin; do
- if [ -x "${dir}/hg" ] ; then
- hg_cmd="${dir}/hg -R ${VCSDIR}"
- break
- fi
- done
-fi
-
-if [ -n "$svnversion" ] ; then
- svn=`cd ${SYSDIR} && $svnversion 2>/dev/null`
- case "$svn" in
- [0-9]*[MSP]|*:*)
- svn=" r${svn}"
- modified=true
- ;;
- [0-9]*)
- svn=" r${svn}"
- ;;
- *)
- unset svn
- ;;
- esac
-fi
-
-if [ -n "$git_cmd" ] ; then
- git=`$git_cmd rev-parse --verify --short HEAD 2>/dev/null`
- svn=`$git_cmd svn find-rev $git 2>/dev/null`
- if [ -n "$svn" ] ; then
- svn=" r${svn}"
- git="=${git}"
- else
- svn=`$git_cmd log | fgrep 'git-svn-id:' | head -1 | \
- sed -n 's/^.*@\([0-9][0-9]*\).*$/\1/p'`
- if [ -z "$svn" ] ; then
- svn=`$git_cmd log --format='format:%N' | \
- grep '^svn ' | head -1 | \
- sed -n 's/^.*revision=\([0-9][0-9]*\).*$/\1/p'`
- fi
- if [ -n "$svn" ] ; then
- svn=" r${svn}"
- git="+${git}"
- else
- git=" ${git}"
- fi
- fi
- git_b=`$git_cmd rev-parse --abbrev-ref HEAD`
- if [ -n "$git_b" ] ; then
- git="${git}(${git_b})"
- fi
- if $git_cmd --work-tree=${VCSDIR}/.. diff-index \
- --name-only HEAD | read dummy; then
- git="${git}-dirty"
- modified=true
- fi
-fi
-
if [ -n "$p4_cmd" ] ; then
p4version=`cd ${SYSDIR} && $p4_cmd changes -m1 "./...#have" 2>&1 | \
awk '{ print $2 }'`
@@ -262,38 +179,134 @@
esac
fi
-if [ -n "$hg_cmd" ] ; then
- hg=`$hg_cmd id 2>/dev/null`
- svn=`$hg_cmd svn info 2>/dev/null | \
- awk -F': ' '/Revision/ { print $2 }'`
- if [ -n "$svn" ] ; then
- svn=" r${svn}"
- fi
- if [ -n "$hg" ] ; then
- hg=" ${hg}"
- fi
+if [ -z "$p4version" ] && findvcs; then
+ case "$VCS" in
+ git)
+ for dir in /usr/bin /usr/local/bin; do
+ if [ -x "${dir}/git" ] ; then
+ git_cmd="${dir}/git --git-dir=${VCSDIR}"
+ break
+ fi
+ done
+ if [ -n "$git_cmd" ] ; then
+ git=`$git_cmd rev-parse --verify --short HEAD 2>/dev/null`
+ svn=`$git_cmd svn find-rev $git 2>/dev/null`
+ if [ -n "$svn" ] ; then
+ svn=" r${svn}"
+ git="=${git}"
+ else
+ svn=`$git_cmd log | fgrep 'git-svn-id:' | head -1 | \
+ sed -n 's/^.*@\([0-9][0-9]*\).*$/\1/p'`
+ if [ -z "$svn" ] ; then
+ svn=`$git_cmd log --format='format:%N' | \
+ grep '^svn ' | head -1 | \
+ sed -n 's/^.*revision=\([0-9][0-9]*\).*$/\1/p'`
+ fi
+ if [ -n "$svn" ] ; then
+ svn=" r${svn}"
+ git="+${git}"
+ else
+ git=" ${git}"
+ fi
+ fi
+ git_b=`$git_cmd rev-parse --abbrev-ref HEAD`
+ if [ -n "$git_b" ] ; then
+ git="${git}(${git_b})"
+ fi
+ if $git_cmd --work-tree=${VCSDIR}/.. diff-index \
+ --name-only HEAD | read dummy; then
+ git="${git}-dirty"
+ modified=true
+ fi
+ fi
+ ;;
+ hg)
+ for dir in /usr/bin /usr/local/bin; do
+ if [ -x "${dir}/hg" ] ; then
+ hg_cmd="${dir}/hg -R ${VCSDIR}/.."
+ break
+ fi
+ done
+ if [ -n "$hg_cmd" ] ; then
+ hg=`$hg_cmd id 2>/dev/null`
+ svn=`$hg_cmd svn info 2>/dev/null | \
+ awk -F': ' '/Revision/ { print $2 }'`
+ if [ -n "$svn" ] ; then
+ svn=" r${svn}"
+ fi
+ if [ -n "$hg" ] ; then
+ case "${hg}" in
+ *+\ *) modified=true ;;
+ esac
+ hg=" ${hg}"
+ fi
+ fi
+
+ ;;
+ svn)
+ for dir in /usr/bin /usr/local/bin; do
+ if [ ! -z "${svnversion}" ] ; then
+ break
+ fi
+ if [ -x "${dir}/svnversion" ] && [ -z ${svnversion} ] ; then
+ # Run svnversion from ${dir} on this script; if return code
+ # is not zero, the checkout might not be compatible with the
+ # svnversion being used.
+ ${dir}/svnversion $(realpath ${0}) >/dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ svnversion=${dir}/svnversion
+ break
+ fi
+ fi
+ done
+ if [ -z "${svnversion}" ] && [ -x /usr/bin/svnliteversion ] ; then
+ /usr/bin/svnliteversion $(realpath ${0}) >/dev/null 2>&1
+ if [ $? -eq 0 ]; then
+ svnversion=/usr/bin/svnliteversion
+ else
+ svnversion=
+ fi
+ fi
+ if [ -n "$svnversion" ] ; then
+ svn=`cd ${SYSDIR} && $svnversion 2>/dev/null`
+ case "$svn" in
+ [0-9]*[MSP]|*:*)
+ svn=" r${svn}"
+ modified=true
+ ;;
+ [0-9]*)
+ svn=" r${svn}"
+ ;;
+ *)
+ unset svn
+ ;;
+ esac
+ fi
+ ;;
+ *)
+ ;;
+ esac
fi
-include_metadata=true
while getopts rR opt; do
case "$opt" in
r)
- include_metadata=
+ include_metadata=false
;;
R)
- if [ -z "${modified}" ]; then
- include_metadata=
+ if $modified; then
+ include_metadata=false
fi
esac
done
shift $((OPTIND - 1))
-if [ -z "${include_metadata}" ]; then
+if $include_metadata; then
+ VERINFO="${VERSION} #${v}${svn}${git}${hg}${p4version}: ${t}"
+ VERSTR="${VERINFO}\\n ${u}@${h}:${d}\\n"
+else
VERINFO="${VERSION} ${svn}${git}${hg}${p4version}"
VERSTR="${VERINFO}\\n"
-else
- VERINFO="${VERSION} #${v}${svn}${git}${hg}${p4version}: ${t}"
- VERSTR="${VERINFO}\\n ${u}@${h}:${d}\\n"
fi
cat << EOF > vers.c

File Metadata

Mime Type
text/plain
Expires
Mon, Mar 2, 7:06 PM (11 h, 18 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29167443
Default Alt Text
D8895.diff (6 KB)

Event Timeline