xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Ian Campbell <ian.campbell@citrix.com>
To: ian.jackson@eu.citrix.com
Cc: Ian Campbell <ian.campbell@citrix.com>, xen-devel@lists.xen.org
Subject: [PATCH OSSTEST v1] ap-fetch-version: Arrange for osstest merges from upstream to be stable
Date: Fri, 3 Jul 2015 10:40:34 +0100	[thread overview]
Message-ID: <1435916434-19305-1-git-send-email-ian.campbell@citrix.com> (raw)

If a downstream osstest instance has nothing to test it its local
pretest then it will attempt to merge from the upstream instance. If
this fails then it will try again and again generating a new merge
commit each time, even if upstream has not moved.

It is desirable that these merges instead be stable i.e. the same if
the inputs have not changed. This is good for potential bisection
attempts, history reporting/mining as well as just being sensible.

Here we arrange for this by recording the last merge "epoch" (being
the first merge of the current input branches) in a new branch
"merge-epoch" in the local testing.git and comparing our fresh merge
against it.

If the tree and parents are the same then the merge is effectively
identical (it may/will differ in the date) and we reuse the epoch
merge.

If they new merge does not match then something has changed (i.e.
upstream has moved on) and so we take the new merge and establish a
new epoch.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
---

I think this change might be best off applied initially to the
Cambridge instance pretest and once it passes testing there to be
folded into upstream via a PR.
---
 ap-fetch-version | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/ap-fetch-version b/ap-fetch-version
index ec52889..d8d4f97 100755
--- a/ap-fetch-version
+++ b/ap-fetch-version
@@ -134,6 +134,36 @@ osstest)
 		    git merge \
 			-m "Automerge of $TREEBRANCH_OSSTEST_UPSTREAM into production" \
 			ap-merge >&2
+		    merge=$(git log -n1 --pretty='%T %P' HEAD)
+
+		    if git fetch $HOME/testing.git +merge-epoch:merge-epoch ; then
+			# If the new merge matches the current epoch's
+			# tree (%T) and parents (%P) then it is the
+			# same in all the ways which matter. (It
+			# likely only differs in the date). In which
+			# case reuse the epoch merge so that repeated
+			# flights and potential bisections over
+			# osstest see something stable.
+			#
+			# If e.g the parents have changed
+			# (e.g. upstream has progressed) or the trees
+			# differ then use the new merge and establish
+			# a new merge-epoch.
+			epoch=$(git log -n1 --pretty='%T %P' merge-epoch)
+		    else
+			echo >&2 "Failed to fetch merge-epoch"
+			epoch="NONE"
+		    fi
+		    
+		    echo >&2 "Merge Epoch: $epoch"
+		    echo >&2 "This Merge:  $merge"
+		    if [ x"$epoch" = x"$merge" ] ; then
+			echo >&2 "Reusing existing merge-epoch"
+			git reset --hard merge-epoch
+		    else
+			echo >&2 "New merge-epoch"
+			git push $HOME/testing.git +production:merge-epoch
+		    fi
 		)
 
 		# Fetch the result of the above merge into local tree
-- 
2.1.4

             reply	other threads:[~2015-07-03  9:40 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-03  9:40 Ian Campbell [this message]
2015-07-08 15:23 ` [PATCH OSSTEST v1] ap-fetch-version: Arrange for osstest merges from upstream to be stable Ian Jackson
2015-07-08 15:26   ` Ian Campbell
2015-07-09  9:54     ` 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=1435916434-19305-1-git-send-email-ian.campbell@citrix.com \
    --to=ian.campbell@citrix.com \
    --cc=ian.jackson@eu.citrix.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).