我需要使用jGit以编程方式将文件从不同的本地存储库推送到Github上托管的一个远程存储库。下面的代码无一例外地起作用,但是Github中没有任何改变。
程序中每个用户定义的“组”在另一个名为“ data”的文件夹下都有自己的文件夹。每个组文件夹都包含一个名为repo的文件夹,其中包含一个html和css文件。在适当的时候,我需要将这两个文件推送到github。
这是文件夹的结构:
program (folder)
[reciter.jar]
[start.bat]
data (folder)
<group 1> (group folder)
repo (group specific repository folder)
[resultsFile.html]
[styleFile.css]
<another group> (group folder)
... (omitted)
这是我需要做的: 我想将一个存储库设为一个Github。 (完成:https://github.com/Skultrix/reciter.git)当一个小组将其文件推送到Github时,我需要它们按以下顺序排列:
github's root
<group 1>
resultsFile.html
styleFile.css
<another group>
resultsFile.html
styleFile.css
意思是,如果我要访问“另一个组”的html文件,则路径为another_group / results.html。
这是我使用jGit尝试过的方法:
public void load() {
try {
git = Git.init().setGitDir(group.getDataManager().getRepoDirectory()).call();
} catch (Exception e) {
e.printStackTrace();
}
}
//load() is always before sendFile()
public void sendFile() {
LoadingModal.showModal(main, () -> {
try {
System.out.println("adding");
git.add()
.addFilepattern("resultsFile.html")
.call();
System.out.println("commiting");
git.commit()
.setAll(true)
.setMessage("Update results")
.call();
System.out.println("remote adding");
git.remoteAdd()
.setName("origin")
.setUri(new URIish("https://github.com/Skultrix/reciter.git"))
.call();
System.out.println("pushing");
git.push()
.setRemote("https://github.com/Skultrix/reciter.git")
.setCredentialsProvider(
new UsernamePasswordCredentialsProvider("skultrix", <my password>)
)
.call();
System.out.println("finish");
} catch (Exception e) {
e.printStackTrace();
}
}, "Uploading results to site.", true).run();
}
执行上述代码(#sendFile)后,控制台将打印:
adding
commiting
remote adding
pushing
finish
但是当我检查github时,什么都没有改变,甚至没有空的提交。也没有例外或错误。
感谢您的任何帮助或指导。
答案 0 :(得分:0)
您可能需要添加该文件的 path (而不仅仅是其名称),为in this example
https://docs.oracle.com/javase/7/docs/technotes/tools/windows/javac.html#crosscomp-example
路径可以是relative to the repository,所以adder.addFilepattern(getPath(fileVersion.getFile(), repository));
是您的情况。