如果要添加的文件不存在,addFilePattern 不会抛出 FileNotFoundException
addFilePattern does not throw FileNotFoundException if file to be added is not present
我编写了一个 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,Java1.8,Windows10
JGit 不会将传递不存在的路径视为错误addFilepatern()
。因此,原因可能是该方法还接受文件名模式。这样的模式可能匹配也可能不匹配文件。
您必须自己检查文件是否存在。使用 Java 文件 API,例如
boolean fileExists = new File( repository.getWorkTree(), "file.txt" ).isFile();
或者通过从AddCommand::call()
返回的DirCache
,例如
DirCache dirCache = git.add().addFilePattern( "file.txt" ).call();
boolean fileExists = dircache.findEntry( "file.txt" ) >= 0;
我编写了一个 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,Java1.8,Windows10
JGit 不会将传递不存在的路径视为错误addFilepatern()
。因此,原因可能是该方法还接受文件名模式。这样的模式可能匹配也可能不匹配文件。
您必须自己检查文件是否存在。使用 Java 文件 API,例如
boolean fileExists = new File( repository.getWorkTree(), "file.txt" ).isFile();
或者通过从AddCommand::call()
返回的DirCache
,例如
DirCache dirCache = git.add().addFilePattern( "file.txt" ).call();
boolean fileExists = dircache.findEntry( "file.txt" ) >= 0;