blob: 8ad324016bcfd4e50ef7fb41290ccbe9868bbab1 [file] [log] [blame]
// ***************************************************************************************************************************
// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file *
// * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file *
// * to you 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 org.apache.juneau.server.config.repository;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import org.eclipse.jgit.api.AddCommand;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.PushCommand;
import org.eclipse.jgit.api.errors.CanceledException;
import org.eclipse.jgit.api.errors.CheckoutConflictException;
import org.eclipse.jgit.api.errors.ConcurrentRefUpdateException;
import org.eclipse.jgit.api.errors.DetachedHeadException;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.api.errors.InvalidConfigurationException;
import org.eclipse.jgit.api.errors.InvalidRefNameException;
import org.eclipse.jgit.api.errors.InvalidRemoteException;
import org.eclipse.jgit.api.errors.JGitInternalException;
import org.eclipse.jgit.api.errors.NoFilepatternException;
import org.eclipse.jgit.api.errors.NoHeadException;
import org.eclipse.jgit.api.errors.NoMessageException;
import org.eclipse.jgit.api.errors.RefAlreadyExistsException;
import org.eclipse.jgit.api.errors.RefNotFoundException;
import org.eclipse.jgit.api.errors.WrongRepositoryStateException;
import org.eclipse.jgit.internal.storage.file.FileRepository;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.transport.CredentialsProvider;
import org.eclipse.jgit.transport.PushResult;
import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider;
@SuppressWarnings("javadoc")
public class GitControl {
private String localPath, remotePath;
private Repository localRepo;
private Git git;
private CredentialsProvider cp;
private String name = "username";
private String password = "password";
public GitControl(String localPath, String remotePath) throws IOException {
this.localPath = localPath;
this.remotePath = remotePath;
this.localRepo = new FileRepository(localPath + "/.git");
cp = new UsernamePasswordCredentialsProvider(this.name, this.password);
git = new Git(localRepo);
}
public void cloneRepo() throws IOException, NoFilepatternException, GitAPIException {
Git.cloneRepository().setURI(remotePath).setDirectory(new File(localPath)).call();
}
public void addToRepo() throws IOException, NoFilepatternException, GitAPIException {
AddCommand add = git.add();
add.addFilepattern(".").call();
}
public void commitToRepo(String message) throws IOException, NoHeadException, NoMessageException,
ConcurrentRefUpdateException, JGitInternalException, WrongRepositoryStateException, GitAPIException {
git.commit().setMessage(message).call();
}
public void branch(String name) throws RefAlreadyExistsException, RefNotFoundException, InvalidRefNameException,
CheckoutConflictException, GitAPIException {
git.checkout().setName(name).setStartPoint("origin/".concat(name)).call();
}
public void pushToRepo() throws IOException, JGitInternalException, InvalidRemoteException, GitAPIException {
PushCommand pc = git.push();
pc.setCredentialsProvider(cp).setForce(true).setPushAll();
try {
Iterator<PushResult> it = pc.call().iterator();
if (it.hasNext()) {
System.out.println(it.next().toString());
}
} catch (InvalidRemoteException e) {
e.printStackTrace();
}
}
public void pullFromRepo()
throws IOException, WrongRepositoryStateException, InvalidConfigurationException, DetachedHeadException,
InvalidRemoteException, CanceledException, RefNotFoundException, NoHeadException, GitAPIException {
git.pull().call();
}
}