Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F146327674
D8895.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
6 KB
Referenced Files
None
Subscribers
None
D8895.diff
View Options
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
Details
Attached
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)
Attached To
Mode
D8895: Rearrange vcs detection.
Attached
Detach File
Event Timeline
Log In to Comment