|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] Changeset / commit id not incorporated in build after switch to git
Hello Sander,
Monday, February 25, 2013, 11:28:53 PM, you wrote:
> Date: Mon, 25 Feb 2013 23:28:53 +0100
> From: Sander Eikelenboom <linux@xxxxxxxxxxxxxx>
> Organization: Eikelenboom IT services
> X-Priority: 3 (Normal)
> Message-ID: <1208255021.20130225232853@xxxxxxxxxxxxxx>
> To: xen-devel <xen-devel@xxxxxxxxxxxxx>
> Subject: Changeset / commit id not incorporated in build after switch to git
> MIME-Version: 1.0
> Content-Type: text/plain; charset=us-ascii
> Content-Transfer-Encoding: 7bit
> Hi All,
> After the switching from mercurial to git, the changeset isn't incorporated
> anymore in the build.
> This makes error reports possibly a bit less verbose (xl dmesg, serial logs
> and xl info now omit the changeset (or commit) info)
> Git doesn't have the concept of changesets afaik and mercurial is, while
> deprecated, still used as mirror.
> So what would be wise:
> - just replace the changeset with the git commit sha-1 hash (always)
> - use changeset when a mercurial tree is detected or the last git commit
> sha-1 (and date ?) when a git tree is detected
> - make a separate "commit" entry besides the changeset and leave one
> undefined
> xen/Makefile currently has:
> # compile.h contains dynamic build info. Rebuilt on every 'make' invocation.
> include/xen/compile.h: include/xen/compile.h.in .banner
> @sed -e 's/@@date@@/$(shell LC_ALL=C date)/g' \
> -e 's/@@time@@/$(shell LC_ALL=C date +%T)/g' \
> -e 's/@@whoami@@/$(XEN_WHOAMI)/g' \
> -e 's/@@domain@@/$(XEN_DOMAIN)/g' \
> -e 's/@@hostname@@/$(shell hostname)/g' \
> -e 's!@@compiler@@!$(shell $(CC) $(CFLAGS) --version 2>&1 | head
> -1)!g' \
> -e 's/@@version@@/$(XEN_VERSION)/g' \
> -e 's/@@subversion@@/$(XEN_SUBVERSION)/g' \
> -e 's/@@extraversion@@/$(XEN_EXTRAVERSION)/g' \
> -e 's!@@changeset@@!$(shell ((hg parents --template "{date|date}
> {rev}:{node|short}" >/dev/null && hg parents --template "{date|date}
> {rev}:{node|short}") || echo "unavailable") 2>/dev/null)!g' \
> < include/xen/compile.h.in > $@.new
> @grep \" .banner >> $@.new
> @grep -v \" .banner
> @mv -f $@.new $@
> --
> Sander
Perhaps use about the same as linux has in scripts/setlocalversion ?
scm_version()
{
local short
short=false
cd "$srctree"
if test -e .scmversion; then
cat .scmversion
return
fi
if test "$1" = "--short"; then
short=true
fi
# Check for git and a git repo.
if test -d .git && head=`git rev-parse --verify --short HEAD
2>/dev/null`; then
# If we are at a tagged commit (like "v2.6.30-rc6"), we ignore
# it, because this version is defined in the top level Makefile.
if [ -z "`git describe --exact-match 2>/dev/null`" ]; then
# If only the short version is requested, don't bother
# running further git commands
if $short; then
echo "+"
return
fi
# If we are past a tagged commit (like
# "v2.6.30-rc5-302-g72357d5"), we pretty print it.
if atag="`git describe 2>/dev/null`"; then
echo "$atag" | awk -F- '{printf("-%05d-%s",
$(NF-1),$(NF))}'
# If we don't have a tag at all we print -g{commitish}.
else
printf '%s%s' -g $head
fi
fi
# Is this git on svn?
if git config --get svn-remote.svn.url >/dev/null; then
printf -- '-svn%s' "`git svn find-rev $head`"
fi
# Update index only on r/w media
[ -w . ] && git update-index --refresh --unmerged > /dev/null
# Check for uncommitted changes
if git diff-index --name-only HEAD | grep -qv
"^scripts/package"; then
printf '%s' -dirty
fi
# All done with git
return
fi
# Check for mercurial and a mercurial repo.
if test -d .hg && hgid=`hg id 2>/dev/null`; then
# Do we have an tagged version? If so, latesttagdistance == 1
if [ "`hg log -r . --template '{latesttagdistance}'`" == "1" ];
then
id=`hg log -r . --template '{latesttag}'`
printf '%s%s' -hg "$id"
else
tag=`printf '%s' "$hgid" | cut -d' ' -f2`
if [ -z "$tag" -o "$tag" = tip ]; then
id=`printf '%s' "$hgid" | sed 's/[+ ].*//'`
printf '%s%s' -hg "$id"
fi
fi
# Are there uncommitted changes?
# These are represented by + after the changeset id.
case "$hgid" in
*+|*+\ *) printf '%s' -dirty ;;
esac
# All done with mercurial
return
fi
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |