summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJannis Pohlmann <jannis.pohlmann@codethink.co.uk>2012-08-30 10:52:10 +0000
committerJannis Pohlmann <jannis.pohlmann@codethink.co.uk>2012-08-30 14:45:06 +0000
commit8247661b26f7232038bac95c64780121e9691db5 (patch)
treed87c4ce311e64ea7e33aab6c39a033cb9c243bed
parent7021d8b73b374118458c81249e3a8a586983e136 (diff)
downloadmorph-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.
-rw-r--r--morphlib/plugins/branch_and_merge_plugin.py11
-rwxr-xr-xtests.branching/show-branch-root-in-branched-branch.script30
-rw-r--r--tests.branching/show-branch-root-in-branched-branch.stdout1
-rwxr-xr-xtests.branching/show-branch-root-in-checked-out-branch.script30
-rw-r--r--tests.branching/show-branch-root-in-checked-out-branch.stdout1
-rwxr-xr-xtests.branching/show-branch-root-with-repo-url.script30
-rw-r--r--tests.branching/show-branch-root-with-repo-url.stdout1
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