@Override public PageData getRevisionData(FileSystemPage page, String label) { // Workaround for CachingPage if (label == null) { return persistence.getRevisionData(page, null); } String content, propertiesXml; RevCommit revCommit; Repository repository = getRepository(page); try { String fileSystemPath = getPath(page, repository); ObjectId rev = repository.resolve(label); RevWalk walk = new RevWalk(repository); revCommit = walk.parseCommit(rev); content = getRepositoryContent(repository, revCommit, fileSystemPath + "/" + contentFilename); propertiesXml = getRepositoryContent(repository, revCommit, fileSystemPath + "/" + propertiesFilename); } catch (IOException e) { throw new RuntimeException("Unable to get data for revision " + label, e); } final PageData pageData = new PageData(page); pageData.setContent(content); pageData.setProperties( parsePropertiesXml(propertiesXml, revCommit.getAuthorIdent().getWhen().getTime())); return pageData; }
@Override public void deleteDirectory(File dir) { Repository repository = getRepository(dir); persistence.deleteDirectory(dir); Git git = new Git(repository); try { git.rm().addFilepattern(getPath(dir, repository)).call(); commit(git, String.format("FitNesse directory %s deleted.", dir.getName())); } catch (GitAPIException e) { throw new RuntimeException(e); } }
@Override public void addFile(File file, File contentFile) throws IOException { Repository repository = getRepository(file); persistence.addFile(file, contentFile); Git git = new Git(repository); try { git.add().addFilepattern(getPath(file, repository)).call(); commit(git, String.format("FitNesse file %s updated.", file.getName())); } catch (GitAPIException e) { throw new RuntimeException(e); } }
@Override public void renameFile(File file, File oldFile) { Repository repository = getRepository(file); persistence.renameFile(file, oldFile); Git git = new Git(repository); try { git.add().addFilepattern(getPath(file, repository)).call(); git.rm().addFilepattern(getPath(oldFile, repository)).call(); commit( git, String.format("FitNesse file %s moved to %s.", oldFile.getName(), file.getName())); } catch (GitAPIException e) { throw new RuntimeException(e); } }
@Override public void delete(FileSystemPage page) { Repository repository = getRepository(page); Git git = new Git(repository); String fileSystemPath = getPath(page, repository); try { git.rm() .addFilepattern(fileSystemPath + "/" + contentFilename) .addFilepattern(fileSystemPath + "/" + propertiesFilename) .call(); commit( git, String.format( "FitNesse page %s deleted.", PathParser.render(page.getPageCrawler().getFullPath()))); } catch (Exception e) { throw new RuntimeException(e); } persistence.delete(page); }
@Override public VersionInfo makeVersion(FileSystemPage page, PageData data) { persistence.makeVersion(page, data); Repository repository = getRepository(page); Git git = new Git(repository); String fileSystemPath = getPath(page, repository); try { git.add() .addFilepattern(fileSystemPath + "/" + contentFilename) .addFilepattern(fileSystemPath + "/" + propertiesFilename) .call(); commit( git, String.format( "FitNesse page %s updated.", PathParser.render(page.getPageCrawler().getFullPath()))); } catch (Exception e) { throw new RuntimeException(e); } return getCurrentVersion(repository); }
@Override public void addDirectory(File dir) { persistence.addDirectory(dir); }