blob: 7832fc71cbbc464a457f25a0744f924d9474211c [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2013 Boeing.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Boeing - initial API and implementation
*******************************************************************************/
package org.eclipse.osee.ote.version.git;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.Iterator;
import java.util.Set;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.LogCommand;
import org.eclipse.jgit.api.Status;
import org.eclipse.jgit.api.StatusCommand;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.api.errors.NoHeadException;
import org.eclipse.jgit.errors.NoWorkTreeException;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
public class GitVersion extends GitVersionBase {
private final File file;
public GitVersion(File file){
this.file = file;
}
public String getURL() throws MalformedURLException{
return this.file.toURI().toURL().toString();
}
public boolean getModified() throws IOException, NoWorkTreeException, GitAPIException{
if(!file.exists()){
return false;
}
File gitFolder = findGitDirUp(file);
if(gitFolder == null){
return false;
}
Repository repository = buildRepository(gitFolder);
Git git = new Git(repository);
StatusCommand status = git.status();
String pathFilter = getPathFilterFromFullPathAndGitFolder(file, gitFolder);
Status result = status.call();
Set<String> modified = result.getModified();
if(modified.contains(pathFilter)){
return true;
} else {
return false;
}
}
public RevCommit getLastCommit() throws IOException, NoHeadException, GitAPIException{
if(!file.exists()){
return null;
}
File gitFolder = findGitDirUp(file);
if(gitFolder == null){
return null;
}
Repository repository = buildRepository(gitFolder);
Git git = new Git(repository);
LogCommand log = git.log();
String pathFilter = getPathFilterFromFullPathAndGitFolder(file, gitFolder);
log.addPath(pathFilter);
Iterable<RevCommit> iterable = log.call();
Iterator<RevCommit> it = iterable.iterator();
if(it.hasNext()){
return it.next();
} else {
return null;
}
}
}