Suse linux上的JGit移动/重命名文件夹问题

时间:2018-07-10 09:03:21

标签: java java-io jgit suse

我面临一个奇怪的问题,我想使用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上都可以正常工作。

1 个答案:

答案 0 :(得分:0)

这是机器问题,我们得到了另一个Suse 12 Sp2环境,并且工作正常。