summaryrefslogtreecommitdiffstats
path: root/gerrit-server/src/main/java/com/google/gerrit/server/git/GitProjectImporter.java
diff options
context:
space:
mode:
Diffstat (limited to 'gerrit-server/src/main/java/com/google/gerrit/server/git/GitProjectImporter.java')
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/git/GitProjectImporter.java121
1 files changed, 0 insertions, 121 deletions
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 3f2ff0d2bf..0000000000
--- 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);
- }
- }
- }
-}