我面临一个奇怪的问题,我想使用Jgit将一个子目录移动到同一Git存储库中的另一个位置。以下代码可在所有操作系统上运行,但会在Suse Linux 12中产生问题。有时,它可以按预期工作,但几次却无法移动目录和删除新路径。
final File oldMasterDataDir = new File(repoDir, "repoGlobal/oldLocation/xsd/VocabularyType");
final File newMasterDataDir = new File(repoDir, "repoGlobal/newLocation/xsd/VocabularyType");
@Override
public <T> void moveDirectory(final File pathSrc, final File pathDest, Properties properties)
throws RepositoryException {
try {
Path sourcePath = Paths.get(pathSrc.getAbsolutePath());
Path destinationPath = Paths.get(pathDest.getAbsolutePath());
Files.move(sourcePath, destinationPath, StandardCopyOption.REPLACE_EXISTING);
// i have tried FileUtils.rename(pathSrc, pathDest); but same result
if(pathDest.exist())
final String gitPathSrc = toGitPath(pathSrc);
final String gitPathDest = toGitPath(pathDest);
getGit().add().addFilepattern(gitPathDest).call();
getGit().rm().addFilepattern(gitPathSrc).call();
properties.put(RevisionImpl.FILE_PATH, gitPathDest);
commit("Audit migration done", properties);
getRepository().tag("tag 1.1");
}else{
LOG.info("error while moving directory");
}
} catch (final Exception e) {
LOG.info("Error : File Not Found" + e.getMessage());
throw new RepositoryException(e.getMessage());
}
}
我没有看到任何异常,“ newLocation”被删除了。我观察到newLocation被创建了几秒钟,然后被删除了。但是我不知道为什么它仅在Suse linux上发生。在Windows 7,8和RedHat上都可以正常工作。
答案 0 :(得分:0)
这是机器问题,我们得到了另一个Suse 12 Sp2环境,并且工作正常。