static public String pushFiles(File baseDirectory, String message,
String userName, String password,
String repositoryName, String branchName) throws IOException {
GitHub github = GitHub.connectUsingPassword(userName, password);
GHRepository repo = github.getRepository(userName + "/" + repositoryName);
// get current branch
GHRef ref = repo.getRef("heads/" + branchName);
GHCommit latestCommit = repo.getCommit(ref.getObject().getSha());
GHTreeBuilder treeBuilder = repo.createTree().baseTree(latestCommit.getTree().getSha());
addFilesToTree(treeBuilder, baseDirectory, baseDirectory);
GHTree tree = treeBuilder.create();
GHCommit commit = repo.createCommit()
.parent(latestCommit.getSHA1())
.tree(tree.getSha())
.message(message)
.create();
ref.updateTo(commit.getSHA1());
logger.info("Commit created with on branch " + branchName + " and SHA " + commit.getSHA1() + " and URL " + commit.getHtmlUrl());
return commit.getSHA1();
}
private static void addFilesToTree(GHTreeBuilder treeBuilder, File baseDirectory, File currentDirectory) throws IOException {
for(File file : currentDirectory.listFiles()) {
String relativePath = baseDirectory.toURI().relativize(file.toURI()).getPath();
if(file.isFile()) {
treeBuilder.textEntry(relativePath, FileUtils.readFileToString(file), false);
} else {
addFilesToTree(treeBuilder, baseDirectory, file);
}
}
}