88573e13382f7d3ee112bed7b1f79eac00f1304bLukas Slebodnik/*
88573e13382f7d3ee112bed7b1f79eac00f1304bLukas Slebodnik * CDDL HEADER START
88573e13382f7d3ee112bed7b1f79eac00f1304bLukas Slebodnik *
88573e13382f7d3ee112bed7b1f79eac00f1304bLukas Slebodnik * The contents of this file are subject to the terms of the
b0ee27fd94f1d20d9c220754ae008a3189752287Lukas Slebodnik * Common Development and Distribution License (the "License").
8a5e793a0576250da80371e53aa3e7eba15cdb63Sumit Bose * You may not use this file except in compliance with the License.
ecd6aa105c55994db06993bab3c967247656bacbStephen Gallagher *
b6840554b4eeda395f5460a56df2eac1f3f97397Lukas Slebodnik * See LICENSE.txt included in this distribution for the specific
b6840554b4eeda395f5460a56df2eac1f3f97397Lukas Slebodnik * language governing permissions and limitations under the License.
b6840554b4eeda395f5460a56df2eac1f3f97397Lukas Slebodnik *
b6840554b4eeda395f5460a56df2eac1f3f97397Lukas Slebodnik * When distributing Covered Code, include this CDDL HEADER in each
b6840554b4eeda395f5460a56df2eac1f3f97397Lukas Slebodnik * file and include the License file at LICENSE.txt.
b6840554b4eeda395f5460a56df2eac1f3f97397Lukas Slebodnik * If applicable, add the following below this CDDL HEADER, with the
705bc4480a68f69d287b1c89fe9463a0191987c8Lukas Slebodnik * fields enclosed by brackets "[]" replaced with your own identifying
705bc4480a68f69d287b1c89fe9463a0191987c8Lukas Slebodnik * information: Portions Copyright [yyyy] [name of copyright owner]
705bc4480a68f69d287b1c89fe9463a0191987c8Lukas Slebodnik *
705bc4480a68f69d287b1c89fe9463a0191987c8Lukas Slebodnik * CDDL HEADER END
705bc4480a68f69d287b1c89fe9463a0191987c8Lukas Slebodnik */
705bc4480a68f69d287b1c89fe9463a0191987c8Lukas Slebodnik
705bc4480a68f69d287b1c89fe9463a0191987c8Lukas Slebodnik/*
705bc4480a68f69d287b1c89fe9463a0191987c8Lukas Slebodnik * Copyright (c) 2010, Trond Norbye <trond.norbye@gmail.com>. All rights reserved.
705bc4480a68f69d287b1c89fe9463a0191987c8Lukas Slebodnik */
705bc4480a68f69d287b1c89fe9463a0191987c8Lukas Slebodnikpackage org.opensolaris.opengrok.history;
705bc4480a68f69d287b1c89fe9463a0191987c8Lukas Slebodnik
705bc4480a68f69d287b1c89fe9463a0191987c8Lukas Slebodnikimport java.io.File;
705bc4480a68f69d287b1c89fe9463a0191987c8Lukas Slebodnikimport java.io.IOException;
705bc4480a68f69d287b1c89fe9463a0191987c8Lukas Slebodnikimport java.io.InputStream;
705bc4480a68f69d287b1c89fe9463a0191987c8Lukas Slebodnikimport java.util.ArrayList;
705bc4480a68f69d287b1c89fe9463a0191987c8Lukas Slebodnikimport java.util.List;
705bc4480a68f69d287b1c89fe9463a0191987c8Lukas Slebodnik
705bc4480a68f69d287b1c89fe9463a0191987c8Lukas Slebodnikimport org.opensolaris.opengrok.configuration.Configuration;
705bc4480a68f69d287b1c89fe9463a0191987c8Lukas Slebodnikimport org.opensolaris.opengrok.util.Executor;
705bc4480a68f69d287b1c89fe9463a0191987c8Lukas Slebodnik
705bc4480a68f69d287b1c89fe9463a0191987c8Lukas Slebodnik/**
705bc4480a68f69d287b1c89fe9463a0191987c8Lukas Slebodnik * Access to a repository.
705bc4480a68f69d287b1c89fe9463a0191987c8Lukas Slebodnik *
705bc4480a68f69d287b1c89fe9463a0191987c8Lukas Slebodnik * @author Trond Norbye <trond.norbye@gmail.com>
705bc4480a68f69d287b1c89fe9463a0191987c8Lukas Slebodnik */
705bc4480a68f69d287b1c89fe9463a0191987c8Lukas Slebodnikpublic class RepoRepository extends Repository {
705bc4480a68f69d287b1c89fe9463a0191987c8Lukas Slebodnik // TODO: cache all of the GitRepositories within the class
705bc4480a68f69d287b1c89fe9463a0191987c8Lukas Slebodnik
705bc4480a68f69d287b1c89fe9463a0191987c8Lukas Slebodnik private static final long serialVersionUID = 1L;
705bc4480a68f69d287b1c89fe9463a0191987c8Lukas Slebodnik /** The property name used to obtain the client command for this repository.*/
705bc4480a68f69d287b1c89fe9463a0191987c8Lukas Slebodnik public static final String CMD_PROPERTY_KEY =
705bc4480a68f69d287b1c89fe9463a0191987c8Lukas Slebodnik Configuration.PROPERTY_KEY_PREFIX + "history.repo";
705bc4480a68f69d287b1c89fe9463a0191987c8Lukas Slebodnik /** The command to use to access the repository if none was given explicitly */
705bc4480a68f69d287b1c89fe9463a0191987c8Lukas Slebodnik public static final String CMD_FALLBACK = "repo";
705bc4480a68f69d287b1c89fe9463a0191987c8Lukas Slebodnik
705bc4480a68f69d287b1c89fe9463a0191987c8Lukas Slebodnik /**
705bc4480a68f69d287b1c89fe9463a0191987c8Lukas Slebodnik * Create a new instance of type {@code repo}
705bc4480a68f69d287b1c89fe9463a0191987c8Lukas Slebodnik */
705bc4480a68f69d287b1c89fe9463a0191987c8Lukas Slebodnik public RepoRepository() {
705bc4480a68f69d287b1c89fe9463a0191987c8Lukas Slebodnik type = "repo";
1f7573f8c74ff0f488a15969caed13034a95bd0fStephen Gallagher setWorking(Boolean.TRUE);
1f7573f8c74ff0f488a15969caed13034a95bd0fStephen Gallagher }
b6840554b4eeda395f5460a56df2eac1f3f97397Lukas Slebodnik
889706cbc739358c2a0aac2ba6bc054fdc8e048bLukas Slebodnik /**
bfbf5cb0f00c60c0f000f56c282377b13b9a89abSumit Bose * {@inheritDoc}
85fe1601d3578eef9d244e860b9881347a112859Lukas Slebodnik */
85fe1601d3578eef9d244e860b9881347a112859Lukas Slebodnik @Override
85fe1601d3578eef9d244e860b9881347a112859Lukas Slebodnik public boolean isWorking() {
2344d7f71dd80618a41745b0818b46895fa61b2cLukas Slebodnik ensureCommand(CMD_PROPERTY_KEY, CMD_FALLBACK);
4eafef4572f4e5ff6b589c80db0b9417724f229fJan Cholasta return true;
4eafef4572f4e5ff6b589c80db0b9417724f229fJan Cholasta }
4eafef4572f4e5ff6b589c80db0b9417724f229fJan Cholasta
3be9e26dcd169d44ae105f1b8a0674464c700b77Sumit Bose /**
3be9e26dcd169d44ae105f1b8a0674464c700b77Sumit Bose * {@inheritDoc}
88573e13382f7d3ee112bed7b1f79eac00f1304bLukas Slebodnik */
3be9e26dcd169d44ae105f1b8a0674464c700b77Sumit Bose @Override
5484044ea7bb632b915f706685fce509f6eacc48Jakub Hrozek public void update() throws IOException {
5484044ea7bb632b915f706685fce509f6eacc48Jakub Hrozek File directory = new File(getDirectoryName());
3be9e26dcd169d44ae105f1b8a0674464c700b77Sumit Bose List<String> cmd = new ArrayList<String>();
3be9e26dcd169d44ae105f1b8a0674464c700b77Sumit Bose ensureCommand(CMD_PROPERTY_KEY, CMD_FALLBACK);
4eafef4572f4e5ff6b589c80db0b9417724f229fJan Cholasta cmd.add(this.cmd);
4eafef4572f4e5ff6b589c80db0b9417724f229fJan Cholasta cmd.add("sync");
b96988a35bfb5f6faf2e364ae966166398afeca3Stephen Gallagher
4eafef4572f4e5ff6b589c80db0b9417724f229fJan Cholasta Executor executor = new Executor(cmd, directory);
4eafef4572f4e5ff6b589c80db0b9417724f229fJan Cholasta if (executor.exec() != 0) {
4eafef4572f4e5ff6b589c80db0b9417724f229fJan Cholasta throw new IOException(executor.getErrorString());
4eafef4572f4e5ff6b589c80db0b9417724f229fJan Cholasta }
a098b26a2a902cfb2968ca44604f61bf000d8413Stephen Gallagher }
a098b26a2a902cfb2968ca44604f61bf000d8413Stephen Gallagher
78e5b91e6b22efbcd0621144b104ac9dfd487e5bJakub Hrozek /**
287e76479d68db4134274d4a4fca5fe0fbc9a605Jan Cholasta * {@inheritDoc}
78e5b91e6b22efbcd0621144b104ac9dfd487e5bJakub Hrozek */
78e5b91e6b22efbcd0621144b104ac9dfd487e5bJakub Hrozek @Override
0b52717b76bf306afd30bbeb6d6c619365cfb548Stephen Gallagher public boolean isRepositoryFor(File file) {
0b52717b76bf306afd30bbeb6d6c619365cfb548Stephen Gallagher if (file.isDirectory()) {
0b52717b76bf306afd30bbeb6d6c619365cfb548Stephen Gallagher File f = new File(file, ".repo");
2344d7f71dd80618a41745b0818b46895fa61b2cLukas Slebodnik return f.exists() && f.isDirectory();
12a73062d84fec27536b09fd275ea248d14b93e5Jakub Hrozek }
12a73062d84fec27536b09fd275ea248d14b93e5Jakub Hrozek return false;
12a73062d84fec27536b09fd275ea248d14b93e5Jakub Hrozek }
2344d7f71dd80618a41745b0818b46895fa61b2cLukas Slebodnik
c3b1e99007d5f0069fbbd32a3df799d71ea4882eSumit Bose /**
c3b1e99007d5f0069fbbd32a3df799d71ea4882eSumit Bose * {@inheritDoc}
c3b1e99007d5f0069fbbd32a3df799d71ea4882eSumit Bose */
c3b1e99007d5f0069fbbd32a3df799d71ea4882eSumit Bose @Override
c3b1e99007d5f0069fbbd32a3df799d71ea4882eSumit Bose public boolean supportsSubRepositories() {
b0ee27fd94f1d20d9c220754ae008a3189752287Lukas Slebodnik return true;
8a5e793a0576250da80371e53aa3e7eba15cdb63Sumit Bose }
8a5e793a0576250da80371e53aa3e7eba15cdb63Sumit Bose
8a5e793a0576250da80371e53aa3e7eba15cdb63Sumit Bose /**
889706cbc739358c2a0aac2ba6bc054fdc8e048bLukas Slebodnik * {@inheritDoc}
889706cbc739358c2a0aac2ba6bc054fdc8e048bLukas Slebodnik */
889706cbc739358c2a0aac2ba6bc054fdc8e048bLukas Slebodnik @Override
889706cbc739358c2a0aac2ba6bc054fdc8e048bLukas Slebodnik public boolean fileHasHistory(File file) {
Error!

 

There was an error!

null

java.lang.NullPointerException