diff options
author | Jannis Pohlmann <jannis.pohlmann@codethink.co.uk> | 2012-08-30 10:52:10 +0000 |
---|---|---|
committer | Jannis Pohlmann <jannis.pohlmann@codethink.co.uk> | 2012-08-30 14:45:06 +0000 |
commit | 8247661b26f7232038bac95c64780121e9691db5 (patch) | |
tree | d87c4ce311e64ea7e33aab6c39a033cb9c243bed | |
parent | 7021d8b73b374118458c81249e3a8a586983e136 (diff) | |
download | morph-8247661b26f7232038bac95c64780121e9691db5.tar.gz |
Add "morph show-branch-root" command
This commit introduces a new "morph show-branch-root" command to print
the repository that the user branched off from with "morph branch" or
that he or she checked out with "morph checkout".
Also add tests for this new command.
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 |