我已经编写了一个java程序来推送到git存储库,我一次推送特定文件而不是推送所有文件。
try {
git.add().addFilePattern("files\\file1.txt").call();
} catch (Exception e) {
e.printStackTrace();
}
但如果file1.txt
不存在,则不会输入catch块。
如果我使用CLI Git执行相同的操作,它会将异常视为
fatal: pathspec 'D:\mygit\files\\file1.txt' did not match any files
我想使用JGit在Java中捕获此异常。
JGit版本4.6.0,Java 1.8,Windows 10
答案 0 :(得分:1)
JGit不会将传递不存在的路径addFilepatern()
视为错误。因此,原因可能是该方法也接受文件名模式。这样的模式可能与文件匹配也可能不匹配。
您必须自己检查文件是否存在。使用Java文件API,例如
boolean fileExists = new File( repository.getWorkTree(), "file.txt" ).isFile();
或通过DirCache
返回的AddCommand::call()
,例如
DirCache dirCache = git.add().addFilePattern( "file.txt" ).call();
boolean fileExists = dircache.findEntry( "file.txt" ) >= 0;