diff options
7 files changed, 104 insertions, 0 deletions
diff --git a/morphlib/plugins/branch_and_merge_plugin.py b/morphlib/plugins/branch_and_merge_plugin.py index 5accf076..6c458031 100644 --- a/morphlib/plugins/branch_and_merge_plugin.py +++ b/morphlib/plugins/branch_and_merge_plugin.py @@ -39,6 +39,8 @@ class BranchAndMergePlugin(cliapp.Plugin): arg_synopsis='BRANCH') self.app.add_subcommand('show-system-branch', self.show_system_branch, arg_synopsis='') + self.app.add_subcommand('show-branch-root', self.show_branch_root, + arg_synopsis='') self.app.add_subcommand('merge', self.merge, arg_synopsis='BRANCH REPO...') self.app.add_subcommand('edit', self.edit, @@ -331,6 +333,15 @@ class BranchAndMergePlugin(cliapp.Plugin): self.app.output.write('%s\n' % self.deduce_system_branch()) + def show_branch_root(self, args): + '''Print name of the repository that was branched off from.''' + + workspace = self.deduce_workspace() + system_branch = self.deduce_system_branch() + branch_dir = os.path.join(workspace, system_branch) + branch_root = self.read_branch_root(branch_dir) + self.app.output.write('%s\n' % branch_root) + def merge(self, args): '''Merge specified repositories from another system branch.''' diff --git a/tests.branching/show-branch-root-in-branched-branch.script b/tests.branching/show-branch-root-in-branched-branch.script new file mode 100755 index 00000000..aeb06bfc --- /dev/null +++ b/tests.branching/show-branch-root-in-branched-branch.script @@ -0,0 +1,30 @@ +#!/bin/sh +# Copyright (C) 2012 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. + + +# Check that 'morph show-branch-root' works when being run in a +# local system branch created using 'morph branch ...'. + + +set -eu + +# Create a workspace and branch. +cd "$DATADIR/workspace" +"$SRCDIR/scripts/test-morph" init +"$SRCDIR/scripts/test-morph" branch baserock:morphs testbranch + +# Try to print the branch root repository. +"$SRCDIR/scripts/test-morph" show-branch-root diff --git a/tests.branching/show-branch-root-in-branched-branch.stdout b/tests.branching/show-branch-root-in-branched-branch.stdout new file mode 100644 index 00000000..53a8bc43 --- /dev/null +++ b/tests.branching/show-branch-root-in-branched-branch.stdout @@ -0,0 +1 @@ +baserock:morphs diff --git a/tests.branching/show-branch-root-in-checked-out-branch.script b/tests.branching/show-branch-root-in-checked-out-branch.script new file mode 100755 index 00000000..ce76cc7b --- /dev/null +++ b/tests.branching/show-branch-root-in-checked-out-branch.script @@ -0,0 +1,30 @@ +#!/bin/sh +# Copyright (C) 2012 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. + + +# Check that 'morph show-branch-root' works when being run in a +# local system branch created using 'morph checkout ...'. + + +set -eu + +# Create a workspace and branch. +cd "$DATADIR/workspace" +"$SRCDIR/scripts/test-morph" init +"$SRCDIR/scripts/test-morph" checkout baserock:morphs master + +# Try to print the branch root repository. +"$SRCDIR/scripts/test-morph" show-branch-root diff --git a/tests.branching/show-branch-root-in-checked-out-branch.stdout b/tests.branching/show-branch-root-in-checked-out-branch.stdout new file mode 100644 index 00000000..53a8bc43 --- /dev/null +++ b/tests.branching/show-branch-root-in-checked-out-branch.stdout @@ -0,0 +1 @@ +baserock:morphs diff --git a/tests.branching/show-branch-root-with-repo-url.script b/tests.branching/show-branch-root-with-repo-url.script new file mode 100755 index 00000000..1470e0a6 --- /dev/null +++ b/tests.branching/show-branch-root-with-repo-url.script @@ -0,0 +1,30 @@ +#!/bin/sh +# Copyright (C) 2012 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. + + +# Check that 'morph show-branch-root' works when being run in a +# local system branch created from a full repository URL. + + +set -eu + +# Create a workspace and branch. +cd "$DATADIR/workspace" +"$SRCDIR/scripts/test-morph" init +"$SRCDIR/scripts/test-morph" branch "file://${DATADIR}/morphs.git" testbranch + +# Try to print the branch root repository. +"$SRCDIR/scripts/test-morph" show-branch-root diff --git a/tests.branching/show-branch-root-with-repo-url.stdout b/tests.branching/show-branch-root-with-repo-url.stdout new file mode 100644 index 00000000..2d47eb40 --- /dev/null +++ b/tests.branching/show-branch-root-with-repo-url.stdout @@ -0,0 +1 @@ +file://TMP/morphs.git |