You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by br...@apache.org on 2012/09/19 20:43:27 UTC
[7/50] git commit: [#4954] Add command to re-clone a repo from
original clone URL
[#4954] Add command to re-clone a repo from original clone URL
Signed-off-by: Cory Johns <jo...@geek.net>
Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/24c231fd
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/24c231fd
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/24c231fd
Branch: refs/heads/master
Commit: 24c231fd5c6489d7fb17ef02d3817f49e8f3380f
Parents: 110ba68
Author: Cory Johns <jo...@geek.net>
Authored: Mon Sep 17 20:56:10 2012 +0000
Committer: Cory Johns <jo...@geek.net>
Committed: Mon Sep 17 20:56:10 2012 +0000
----------------------------------------------------------------------
Allura/allura/command/reclone_repo.py | 52 ++++++++++++++++++++++++++++
Allura/setup.py | 1 +
2 files changed, 53 insertions(+), 0 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/24c231fd/Allura/allura/command/reclone_repo.py
----------------------------------------------------------------------
diff --git a/Allura/allura/command/reclone_repo.py b/Allura/allura/command/reclone_repo.py
new file mode 100644
index 0000000..a677f0e
--- /dev/null
+++ b/Allura/allura/command/reclone_repo.py
@@ -0,0 +1,52 @@
+import warnings
+
+from pylons import c
+
+from allura import model as M
+from allura.tasks import repo_tasks
+
+from . import base
+
+
+class RecloneRepoCommand(base.Command):
+ min_args=3
+ max_args=None
+ usage = '<ini file> [-n nbhd] <project_shortname> <mount_point>'
+ summary = 'Reinitialize a repo from the original clone source'
+ parser = base.Command.standard_parser(verbose=True)
+ parser.add_option('-n', '--nbhd', dest='nbhd', type='string', default='p',
+ help='neighborhood prefix (default: p)')
+
+ def command(self):
+ self._setup()
+ self._load_objects()
+ self._clone_repo()
+
+ def _setup(self):
+ '''Perform basic setup, suppressing superfluous warnings.'''
+ with warnings.catch_warnings():
+ try:
+ from sqlalchemy import exc
+ except ImportError:
+ pass
+ else:
+ warnings.simplefilter("ignore", category=exc.SAWarning)
+ self.basic_setup()
+
+ def _load_objects(self):
+ '''Load objects to be operated on.'''
+ c.user = M.User.query.get(username='sfrobot')
+ nbhd = M.Neighborhood.query.get(url_prefix='/%s/' % self.options.nbhd)
+ assert nbhd, 'Neighborhood with prefix %s not found' % self.options.nbhd
+ c.project = M.Project.query.get(shortname=self.args[1], neighborhood_id=nbhd._id)
+ assert c.project, 'Project with shortname %s not found in neighborhood %s' % (self.args[1], nbhd.name)
+ c.app = c.project.app_instance(self.args[2])
+ assert c.app, 'Mount point %s not found on project %s' % (self.args[2], c.project.shortname)
+
+
+ def _clone_repo(self):
+ '''Initiate the repo clone.'''
+ source_url = c.app.config.options.get('init_from_url')
+ source_path = c.app.config.options.get('init_from_path')
+ assert source_url or source_path, '%s does not appear to be a cloned repo' % c.app
+ c.app.repo.init_as_clone(source_path, None, source_url)
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/24c231fd/Allura/setup.py
----------------------------------------------------------------------
diff --git a/Allura/setup.py b/Allura/setup.py
index c0e9b5f..3837535 100644
--- a/Allura/setup.py
+++ b/Allura/setup.py
@@ -118,6 +118,7 @@ setup(
update-neighborhood-home-tool = allura.command:UpdateNeighborhoodCommand
create-trove-categories = allura.command:CreateTroveCategoriesCommand
set-neighborhood-features = allura.command:SetNeighborhoodFeaturesCommand
+ reclone-repo = allura.command.reclone_repo:RecloneRepoCommand
[easy_widgets.resources]
ew_resources=allura.config.resources:register_ew_resources