Remove the GitProjectImporter
Since projects are listed by recursively walking the filesystem,
we don't need to import them into the database.
Change-Id: I86613ac34a9c0ac68ba82b70b2c0312f877a8e69
Signed-off-by: Shawn O. Pearce <sop@google.com>
diff --git a/Documentation/pgm-init.txt b/Documentation/pgm-init.txt
index 9644e92..d3094fd 100644
--- a/Documentation/pgm-init.txt
+++ b/Documentation/pgm-init.txt
@@ -11,7 +11,6 @@
'java' -jar gerrit.war 'init'
-d <SITE_PATH>
[\--batch]
- [\--import-projects]
[\--no-auto-start]
DESCRIPTION
@@ -21,7 +20,7 @@
into a newly created `$site_path`.
If run an an existing `$site_path`, init will upgrade some resources
-as necessary. This can be useful to import newly created projects.
+as necessary.
OPTIONS
-------
@@ -30,12 +29,6 @@
configuration defaults are chosen based on the whims of
the Gerrit developers.
-\--import-projects::
- Recursively search
- link:config-gerrit.html#gerrit.basePath[gerrit.basePath]
- for any Git repositories not yet registered as a project,
- and initializes a new project for them.
-
\--no-auto-start::
Don't automatically start the daemon after initializing a
newly created site path. This permits the administartor
diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Init.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Init.java
index 7127027..492dbee 100644
--- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Init.java
+++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Init.java
@@ -31,7 +31,6 @@
import com.google.gerrit.reviewdb.ReviewDb;
import com.google.gerrit.server.config.SitePath;
import com.google.gerrit.server.config.SitePaths;
-import com.google.gerrit.server.git.GitProjectImporter;
import com.google.gerrit.server.git.GitRepositoryManager;
import com.google.gerrit.server.git.LocalDiskRepositoryManager;
import com.google.gerrit.server.schema.SchemaUpdater;
@@ -62,9 +61,6 @@
@Option(name = "--batch", usage = "Batch mode; skip interactive prompting")
private boolean batchMode;
- @Option(name = "--import-projects", usage = "Import git repositories as projects")
- private boolean importProjects;
-
@Option(name = "--no-auto-start", usage = "Don't automatically start daemon after init")
private boolean noAutoStart;
@@ -73,7 +69,6 @@
ErrorLogFile.errorOnlyConsole();
final SiteInit init = createSiteInit();
- init.flags.importProjects = importProjects;
init.flags.autoStart = !noAutoStart && init.site.isNew;
final SiteRun run;
@@ -83,7 +78,6 @@
run = createSiteRun(init);
run.upgradeSchema();
- run.importGit();
} catch (Exception failure) {
if (init.flags.deleteOnFailure) {
recursiveDelete(getSitePath());
@@ -166,7 +160,6 @@
final SchemaUpdater schemaUpdater;
final SchemaFactory<ReviewDb> schema;
final GitRepositoryManager repositoryManager;
- final GitProjectImporter gitProjectImporter;
final Browser browser;
@Inject
@@ -174,14 +167,13 @@
final SchemaUpdater schemaUpdater,
final SchemaFactory<ReviewDb> schema,
final GitRepositoryManager repositoryManager,
- final GitProjectImporter gitProjectImporter, final Browser browser) {
+ final Browser browser) {
this.ui = ui;
this.site = site;
this.flags = flags;
this.schemaUpdater = schemaUpdater;
this.schema = schema;
this.repositoryManager = repositoryManager;
- this.gitProjectImporter = gitProjectImporter;
this.browser = browser;
}
@@ -241,23 +233,6 @@
}
}
- void importGit() throws OrmException, IOException {
- if (flags.importProjects) {
- gitProjectImporter.run(new GitProjectImporter.Messages() {
- @Override
- public void info(String msg) {
- System.err.println(msg);
- System.err.flush();
- }
-
- @Override
- public void warning(String msg) {
- info(msg);
- }
- });
- }
- }
-
void start() throws Exception {
if (flags.autoStart) {
if (HostPlatform.isWin32()) {
@@ -319,7 +294,6 @@
bind(InitFlags.class).toInstance(init.flags);
bind(GitRepositoryManager.class).to(LocalDiskRepositoryManager.class);
- bind(GitProjectImporter.class);
}
});
return createDbInjector(SINGLE_USER).createChildInjector(modules);
diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/InitFlags.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/InitFlags.java
index 992c616..5d71b48 100644
--- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/InitFlags.java
+++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/InitFlags.java
@@ -30,9 +30,6 @@
/** Recursively delete the site path if initialization fails. */
public boolean deleteOnFailure;
- /** Run the Git project importer after initialization. */
- public boolean importProjects;
-
/** Run the daemon (and open the web UI in a browser) after initialization. */
public boolean autoStart;
diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/InitGitManager.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/InitGitManager.java
index 2d95577..f0cd31f 100644
--- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/InitGitManager.java
+++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/InitGitManager.java
@@ -25,14 +25,11 @@
/** Initialize the GitRepositoryManager configuration section. */
@Singleton
class InitGitManager implements InitStep {
- private final InitFlags flags;
private final ConsoleUI ui;
private final Section gerrit;
@Inject
- InitGitManager(final InitFlags flags, final ConsoleUI ui,
- final Section.Factory sections) {
- this.flags = flags;
+ InitGitManager(final ConsoleUI ui, final Section.Factory sections) {
this.ui = ui;
this.gerrit = sections.get("gerrit");
}
@@ -44,11 +41,7 @@
if (d == null) {
throw die("gerrit.basePath is required");
}
- if (d.exists()) {
- if (!flags.importProjects && d.list() != null && d.list().length > 0) {
- flags.importProjects = ui.yesno(true, "Import existing repositories");
- }
- } else if (!d.mkdirs()) {
+ if (!d.exists() && !d.mkdirs()) {
throw die("Cannot create " + d);
}
}
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/GitProjectImporter.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/GitProjectImporter.java
deleted file mode 100644
index 3f2ff0d..0000000
--- a/gerrit-server/src/main/java/com/google/gerrit/server/git/GitProjectImporter.java
+++ /dev/null
@@ -1,121 +0,0 @@
-// Copyright (C) 2009 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.server.git;
-
-import com.google.gerrit.reviewdb.Project;
-import com.google.gerrit.reviewdb.ReviewDb;
-import com.google.gerrit.reviewdb.Project.SubmitType;
-import com.google.gwtorm.client.OrmException;
-import com.google.gwtorm.client.SchemaFactory;
-import com.google.inject.Inject;
-
-import org.eclipse.jgit.lib.RepositoryCache.FileKey;
-import org.eclipse.jgit.util.FS;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-
-/** Imports all projects found within the repository manager. */
-public class GitProjectImporter {
- public interface Messages {
- void info(String msg);
- void warning(String msg);
- }
-
- private final LocalDiskRepositoryManager repositoryManager;
- private final SchemaFactory<ReviewDb> schema;
- private Messages messages;
-
- @Inject
- GitProjectImporter(final LocalDiskRepositoryManager repositoryManager,
- final SchemaFactory<ReviewDb> schema) {
- this.repositoryManager = repositoryManager;
- this.schema = schema;
- }
-
- public void run(final Messages msg) throws OrmException, IOException {
- messages = msg;
- messages.info("Scanning " + repositoryManager.getBasePath());
- final ReviewDb db = schema.open();
- try {
- final HashSet<String> have = new HashSet<String>();
- for (Project p : db.projects().all()) {
- have.add(p.getName());
- }
- importProjects(repositoryManager.getBasePath(), "", db, have);
- } finally {
- db.close();
- }
- }
-
- private void importProjects(final File dir, final String prefix,
- final ReviewDb db, final Set<String> have) throws OrmException,
- IOException {
- final File[] ls = dir.listFiles();
- if (ls == null) {
- return;
- }
-
- for (File f : ls) {
- String name = f.getName();
- if (".".equals(name) || "..".equals(name)) {
- continue;
- }
-
- if (FileKey.isGitRepository(f, FS.DETECTED)) {
- if (name.equals(".git")) {
- if ("".equals(prefix)) {
- // If the git base path is itself a git repository working
- // directory, this is a bit nonsensical for Gerrit Code Review.
- // Skip the path and do the next one.
- messages.warning("Skipping " + f.getAbsolutePath());
- continue;
- }
- name = prefix.substring(0, prefix.length() - 1);
-
- } else if (name.endsWith(".git")) {
- name = prefix + name.substring(0, name.length() - 4);
-
- } else {
- name = prefix + name;
- if (!have.contains(name)) {
- messages.warning("Importing non-standard name '" + name + "'");
- }
- }
-
- if (have.contains(name)) {
- continue;
- }
-
- final Project.NameKey nameKey = new Project.NameKey(name);
- final Project p = new Project(nameKey);
-
- p.setDescription(repositoryManager.getProjectDescription(nameKey));
- p.setSubmitType(SubmitType.MERGE_IF_NECESSARY);
- p.setUseContributorAgreements(false);
- p.setUseSignedOffBy(false);
- p.setUseContentMerge(false);
- p.setRequireChangeID(false);
- db.projects().insert(Collections.singleton(p));
-
- } else if (f.isDirectory()) {
- importProjects(f, prefix + f.getName() + "/", db, have);
- }
- }
- }
-}