import org.eclipse.jgit.api.AddCommand; //导入方法依赖的package包/类
/**
* Adds all the files of the specified directory in the local git repository
* (git add .), then commits the changes (git commit .), and finally pushes
* the changes on the remote repository (git push)
*
* @param directory the directory in which the local git repository is located
* @param username the username to be used while pushing
* @param password the password matching with the provided username to be used
* for authentication
* @param message the commit message to be used
* @throws GitAPIException if something's going wrong while interacting with Git
* @throws IOException if something's going wrong while manipulating the local
* repository
*/
public static void commitAndPush(@NonNull File directory, String username,
String password, String message) throws GitAPIException,
IOException {
try {
final Git git = Git.open(directory);
// run the add
final AddCommand addCommand = git.add();
for (final String filePath : directory.list())
if (!".git".equals(filePath))
addCommand.addFilepattern(filePath);
addCommand.call();
log.info("Added content of the directory" + directory
+ " in the Git repository located in "
+ directory.toString());
// and then commit
final PersonIdent author = new PersonIdent(username, "");
git.commit().setCommitter(author).setMessage(message)
.setAuthor(author).call();
log.info("Commited the changes in the Git repository...");
// and finally push
final UsernamePasswordCredentialsProvider userCredential = new UsernamePasswordCredentialsProvider(
username, password);
git.push().setCredentialsProvider(userCredential).call();
log.info("Pushed the changes in remote Git repository...");
} catch (final GitAPIException e) {
log.error(e.getMessage(), e);
throw e;
}
}