summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <lars.wirzenius@codethink.co.uk>2013-01-28 13:42:22 +0000
committerLars Wirzenius <lars.wirzenius@codethink.co.uk>2013-01-28 13:42:22 +0000
commite48bbe396cccb4f4be2e7170547cab1de3d6c623 (patch)
tree243164aa11827a734299bda201220f2266b1eea1
parentae72508c67c283efbb258515036e2b8e5eaa14ed (diff)
parent7751ea4a71523fed39cefa6c9300f91e2446243b (diff)
downloadmorph-e48bbe396cccb4f4be2e7170547cab1de3d6c623.tar.gz
Merge remote-tracking branch 'origin/baserock/richardmaw/temp-build-ref-commit-fix'
Broke a long line to make test suite pass.
-rw-r--r--morphlib/plugins/branch_and_merge_plugin.py7
-rwxr-xr-xtests.as-root/building-a-system-branch-picks-up-committed-removes.script57
2 files changed, 61 insertions, 3 deletions
diff --git a/morphlib/plugins/branch_and_merge_plugin.py b/morphlib/plugins/branch_and_merge_plugin.py
index 88c017c8..60e8d4ef 100644
--- a/morphlib/plugins/branch_and_merge_plugin.py
+++ b/morphlib/plugins/branch_and_merge_plugin.py
@@ -1486,9 +1486,10 @@ class BranchAndMergePlugin(cliapp.Plugin):
# Obtain parent SHA1 for the temporary ref tree to be committed.
# This will either be the current commit of the temporary ref or
# HEAD in case the temporary ref does not exist yet.
+ system_branch_sha1 = self.resolve_ref(repo_dir, system_branch)
parent_sha1 = self.resolve_ref(repo_dir, build_ref)
if not parent_sha1:
- parent_sha1 = self.resolve_ref(repo_dir, system_branch)
+ parent_sha1 = system_branch_sha1
# Prepare an environment with our internal index file.
# This index file allows us to commit changes to a tree without
@@ -1499,8 +1500,8 @@ class BranchAndMergePlugin(cliapp.Plugin):
env['GIT_COMMITTER_NAME'] = committer_name
env['GIT_COMMITTER_EMAIL'] = committer_email
- # Read tree from parent or current HEAD into the morph index.
- self.app.runcmd(['git', 'read-tree', parent_sha1],
+ # Read tree from current HEAD into the morph index.
+ self.app.runcmd(['git', 'read-tree', system_branch_sha1],
cwd=repo_dir, env=env)
self.app.status(msg='%(repo)s: Adding uncommitted changes to '
diff --git a/tests.as-root/building-a-system-branch-picks-up-committed-removes.script b/tests.as-root/building-a-system-branch-picks-up-committed-removes.script
new file mode 100755
index 00000000..b593eabd
--- /dev/null
+++ b/tests.as-root/building-a-system-branch-picks-up-committed-removes.script
@@ -0,0 +1,57 @@
+#!/bin/bash
+# Copyright (C) 2013 Codethink Limited
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+set -e
+
+. "$SRCDIR/tests.as-root/setup-build"
+KERNEL_BRANCH=baserock/builds/123456789/AABBCCDDE
+
+cd "$DATADIR/workspace/branch1/test:kernel-repo"
+git checkout --quiet master
+echo Use Morph >README
+git add README
+git commit --quiet -m 'Add README'
+
+# Build the linux system from the system branch.
+cd "$DATADIR/workspace"
+"$SRCDIR/scripts/test-morph" build linux-system
+
+# Make a change elsewhere to be pulled in
+PEER_REPO="$DATADIR/peer-kernel"
+git clone --quiet "file://$DATADIR/workspace/branch1/test:kernel-repo" \
+ "$PEER_REPO"
+cd "$PEER_REPO"
+git checkout --quiet -b fix
+# remove useless README
+git rm --quiet README
+git commit --quiet -m 'change stuff'
+git checkout --quiet master
+git merge --no-ff fix >/dev/null 2>&1
+
+# Pull a commit in to the linux morphology.
+cd "$DATADIR/workspace/branch1/test:kernel-repo"
+git remote add peer "file://$PEER_REPO"
+git remote update >/dev/null 2>&1
+git merge --quiet peer/master
+
+# Build the linux system again without comitting.
+cd "$DATADIR/workspace"
+"$SRCDIR/scripts/test-morph" build linux-system
+cd branch1/test:kernel-repo
+
+# Check whether the new morphology exists in the temporary build ref
+cd "$DATADIR/workspace/branch1/test:kernel-repo"
+! git cat-file blob "$KERNEL_BRANCH:README" >/dev/null 2>&1