QChris has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/64298


Change subject: Add SSH command to rename projects
......................................................................

Add SSH command to rename projects

Change-Id: Ie542b4fdcaaa31b7d394c4744b88404090efdb5b
---
M Documentation/cmd-index.txt
A Documentation/cmd-rename-project.txt
M 
gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/MasterCommandModule.java
A 
gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/RenameProjectCommand.java
4 files changed, 110 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/gerrit refs/changes/98/64298/1

diff --git a/Documentation/cmd-index.txt b/Documentation/cmd-index.txt
index a54803b..bd132b0 100644
--- a/Documentation/cmd-index.txt
+++ b/Documentation/cmd-index.txt
@@ -129,6 +129,9 @@
 link:cmd-ls-user-refs.html[gerrit ls-user-refs]::
        Lists refs visible for a specified user.
 
+link:cmd-rename-project.html[gerrit rename-project]::
+       Renames a project.
+
 link:cmd-show-caches.html[gerrit show-caches]::
        Display current cache statistics.
 
diff --git a/Documentation/cmd-rename-project.txt 
b/Documentation/cmd-rename-project.txt
new file mode 100644
index 0000000..c9612bf
--- /dev/null
+++ b/Documentation/cmd-rename-project.txt
@@ -0,0 +1,45 @@
+gerrit rename-project
+=====================
+
+NAME
+----
+gerrit rename-project - Rename a project.
+
+SYNOPSIS
+--------
+[verse]
+'ssh' -p <port> <host> 'gerrit rename-project'
+  <PROJECT>
+  <NEWNAME>
+
+DESCRIPTION
+-----------
+Renames a project.
+
+ACCESS
+------
+Caller must be a member of the privileged 'Administrators' group.
+
+SCRIPTING
+---------
+This command is intended to be used in scripts.
+
+OPTIONS
+-------
+<PROJECT>::
+       Required; name of the project to be renamed.
+
+<NEWNAME>::
+       Required; new name of the project.
+
+EXAMPLES
+--------
+Rename the project "oldProjectName" to "newProjectName".
+
+====
+       $ ssh -p 29418 [email protected] gerrit rename-project 
oldProjectName newProjectName
+====
+
+GERRIT
+------
+Part of link:index.html[Gerrit Code Review]
diff --git 
a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/MasterCommandModule.java
 
b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/MasterCommandModule.java
index 30f3c95..7558d42 100644
--- 
a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/MasterCommandModule.java
+++ 
b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/MasterCommandModule.java
@@ -40,6 +40,7 @@
     alias(gerrit, "approve", ReviewCommand.class);
     command(gerrit, SetAccountCommand.class);
     command(gerrit, SetProjectCommand.class);
+    command(gerrit, RenameProjectCommand.class);
 
     command(gerrit, "test-submit").toProvider(new 
DispatchCommandProvider(testSubmit));
     command(testSubmit, TestSubmitRuleCommand.class);
diff --git 
a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/RenameProjectCommand.java
 
b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/RenameProjectCommand.java
new file mode 100644
index 0000000..f85f363
--- /dev/null
+++ 
b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/RenameProjectCommand.java
@@ -0,0 +1,61 @@
+// Copyright (C) 2013 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.gerrit.sshd.commands;
+
+import com.google.gerrit.common.data.GlobalCapability;
+import com.google.gerrit.common.errors.NameAlreadyUsedException;
+import com.google.gerrit.common.errors.PermissionDeniedException;
+import com.google.gerrit.common.errors.ProjectRenamingFailedException;
+import com.google.gerrit.extensions.annotations.RequiresCapability;
+import com.google.gerrit.server.project.NoSuchProjectException;
+import com.google.gerrit.server.project.RenameProject;
+import com.google.gerrit.sshd.CommandMetaData;
+import com.google.gerrit.sshd.SshCommand;
+import com.google.inject.Inject;
+
+import org.kohsuke.args4j.Argument;
+
+/** Rename a project. **/
+@RequiresCapability(GlobalCapability.ADMINISTRATE_SERVER)
+@CommandMetaData(name = "rename-project", descr = "Rename a project")
+final class RenameProjectCommand extends SshCommand {
+  @Argument(index = 0, required = true, metaVar = "PROJECT",
+      usage = "name of the project to be renamed")
+  private String sourceName;
+
+  @Argument(index = 1, required = true, metaVar = "NEWNAME",
+      usage = "new name for the project")
+  private String destinationName;
+
+  @Inject
+  private RenameProject.Factory renameProjectFactory;
+
+  @Override
+  protected void run() throws Failure {
+    try {
+      final RenameProject renameProject = renameProjectFactory.create(
+          sourceName, destinationName);
+      renameProject.renameProject();
+    } catch (NameAlreadyUsedException e) {
+      throw die(e);
+    } catch (NoSuchProjectException e) {
+      throw die(e);
+    } catch (PermissionDeniedException e) {
+      throw die(e);
+    } catch (ProjectRenamingFailedException e) {
+      throw die(e);
+    }
+  }
+}

-- 
To view, visit https://gerrit.wikimedia.org/r/64298
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie542b4fdcaaa31b7d394c4744b88404090efdb5b
Gerrit-PatchSet: 1
Gerrit-Project: gerrit
Gerrit-Branch: wmf
Gerrit-Owner: QChris <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to