From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Ian Campbell <Ian.Campbell@citrix.com>
Cc: Sander Eikelenboom <linux@eikelenboom.it>,
"Keir (Xen.org)" <keir@xen.org>,
Marek Marczykowski <marmarek@invisiblethingslab.com>,
"xen-devel@lists.xen.org" <xen-devel@lists.xen.org>
Subject: Re: [PATCH v4] Use {git, hg, svn} commit id if available for xen_changeset
Date: Fri, 10 May 2013 14:33:01 +0100 [thread overview]
Message-ID: <518CF70D.702@citrix.com> (raw)
In-Reply-To: <1368192580.27857.117.camel@zakaz.uk.xensource.com>
On 10/05/13 14:29, Ian Campbell wrote:
> On Thu, 2013-05-09 at 00:07 +0100, Marek Marczykowski wrote:
>> As Xen uses git as primary repository, get git commit id for
>> xen_changeset info.
>>
>> Changes in v2:
>> - split scm calls into separate script - based on Linux kernel one,
>> with tags handling removed
>>
>> Changes in v3:
>> - do not assume tools/scmversion started from the repository toplevel
>> dir - it is actually called from xen/ subdir
>>
>> Changes in v4:
>> - restore checks for .git and .hg dirs, use $(XEN_ROOT)
>>
>> Signed-off-by: Marek Marczykowski <marmarek@invisiblethingslab.com>
> I tried this on git and hg and it appeared to do the right thing,
> thanks.
>
> Reviewed-by: Ian Campbell <ian.campbell@citrix.com>
As soon as this gets into staging, I will rebase my much older patch on
top to allow XEN_CHANGESET to be overridden on the make invocation.
~Andrew
>
>> ---
>> xen/Makefile | 2 +-
>> xen/tools/scmversion | 101 +++++++++++++++++++++++++++++++++++++++++++++++++++
>> 2 files changed, 102 insertions(+), 1 deletion(-)
>> create mode 100755 xen/tools/scmversion
>>
>> diff --git a/xen/Makefile b/xen/Makefile
>> index 0fb3db7..201d9bc 100644
>> --- a/xen/Makefile
>> +++ b/xen/Makefile
>> @@ -126,7 +126,7 @@ include/xen/compile.h: include/xen/compile.h.in .banner
>> -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' \
>> + -e 's!@@changeset@@!$(shell tools/scmversion $(XEN_ROOT) || echo "unavailable")!g' \
>> < include/xen/compile.h.in > $@.new
>> @grep \" .banner >> $@.new
>> @grep -v \" .banner
>> diff --git a/xen/tools/scmversion b/xen/tools/scmversion
>> new file mode 100755
>> index 0000000..219d898
>> --- /dev/null
>> +++ b/xen/tools/scmversion
>> @@ -0,0 +1,101 @@
>> +#!/bin/sh
>> +#
>> +# This scripts adds local version information from the version
>> +# control systems git, mercurial (hg) and subversion (svn).
>> +#
>> +# If something goes wrong, send a mail the kernel build mailinglist
>> +# (see MAINTAINERS) and CC Nico Schottelius
>> +# <nico-linuxsetlocalversion -at- schottelius.org>.
>> +#
>> +# Based on setlocalversion from Linux kernel
>> +#
>> +#
>> +
>> +usage() {
>> + echo "Usage: $0 [--save-scmversion] [srctree]" >&2
>> + exit 1
>> +}
>> +
>> +scm_only=false
>> +srctree=.
>> +if test "$1" = "--save-scmversion"; then
>> + scm_only=true
>> + shift
>> +fi
>> +if test $# -gt 0; then
>> + srctree=$1
>> + shift
>> +fi
>> +if test $# -gt 0 -o ! -d "$srctree"; then
>> + usage
>> +fi
>> +
>> +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
>> + date=`git show -s --pretty="%ad" HEAD`
>> +
>> + printf '%s %s%s' "$date" git: $head
>> +
>> + # 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
>> + id=`printf '%s' "$hgid" | sed 's/[+ ].*//'`
>> + date=`hg parents --template "{date|date}"`
>> + printf '%s %s%s' "$date" hg: "$id"
>> +
>> + # 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
>> +
>> + # Check for svn and a svn repo.
>> + if rev=`LANG= LC_ALL= LC_MESSAGES=C svn info 2>/dev/null | grep '^Last Changed Rev'`; then
>> + rev=`echo $rev | awk '{print $NF}'`
>> + printf -- 'svn:%s' "$rev"
>> +
>> + # All done with svn
>> + return
>> + fi
>> +}
>> +
>> +cd $srctree
>> +
>> +# full scm version string
>> +res="$(scm_version)"
>> +
>> +echo "$res"
>
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xen.org
> http://lists.xen.org/xen-devel
next prev parent reply other threads:[~2013-05-10 13:33 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-05-08 15:15 [PATCH v3] Try to use git commit id if hg changeset is unavailable Marek Marczykowski
2013-05-08 15:45 ` Ian Campbell
2013-05-08 19:16 ` Marek Marczykowski
2013-05-08 23:07 ` [PATCH v4] Use {git, hg, svn} commit id if available for xen_changeset Marek Marczykowski
2013-05-10 13:29 ` Ian Campbell
2013-05-10 13:33 ` Andrew Cooper [this message]
2013-05-13 9:49 ` Ian Campbell
2013-05-13 11:43 ` Keir Fraser
2013-05-13 11:52 ` Ian Campbell
2013-05-13 13:39 ` Ian Campbell
2013-05-13 13:52 ` [PATCH v3] Try to use git commit id if hg changeset is unavailable Olaf Hering
2013-05-13 18:22 ` Marek Marczykowski
2013-05-13 18:23 ` [PATCH] Cleanup scmversion script, fix --save-scmversion option Marek Marczykowski
2013-05-14 8:50 ` Ian Campbell
2013-07-04 9:56 ` Ian Campbell
2013-07-17 10:36 ` Ian Campbell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=518CF70D.702@citrix.com \
--to=andrew.cooper3@citrix.com \
--cc=Ian.Campbell@citrix.com \
--cc=keir@xen.org \
--cc=linux@eikelenboom.it \
--cc=marmarek@invisiblethingslab.com \
--cc=xen-devel@lists.xen.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.