2012-05-09 3 views
1

svnkit 및 poi를 사용하여 회사의 문서를 만들고 있는데, 문서의 '생성 날짜'부분에 닿을 때까지는 상당히 잘 진행된 것 같습니다. 내가 보여줄 필요가있는 여러 속성이 있는데, 지금까지 Google을 통해 찾을 수있었습니다. 나는 실제로 SVNRepository.log를 수행하고 첫 번째 SVNLogEntry.getDate를보고 어떤 파일의 생성 날짜를 검색 할 수 있지만 대부분의 내 문서는 개정판의 최신 데이터를 중심으로 읽었다. 최종 코멘트를 보면서 마지막으로 수정 한 사람, 그래서 SVNRepository.getLatestRevision으로 모두 채우려고했습니다. 그래서 사용할 수있는 것이 더 없다면 각 파일의 생성 날짜를 찾고 해당 파일을 찾는 forts를해야 할 것입니다. 내가 묻는 것은 : 파일의 생성 날짜를 직접 가리키는 svn 속성이 있습니까?svnkit을 사용하여 작성 날짜 받기

ArrayList<SVNFileRevision> resultReturn new ArrayList<SVNFileRevision>(); 
ArrayList entries = new ArrayList<SVNDirEntry>(); 
repository.getDir(path, repository.getLatestRevision(), true, entries); 

Iterator iterator = entries.iterator(); 
while (iterator.hasNext()) { 
SVNDirEntry entry = (SVNDirEntry) iterator.next(); 
if (entry.getKind() != SVNNodeKind.DIR) { 


    ArrayList<SVNFileRevision> aux = new ArrayList<SVNFileRevision>(); 
    repository.getFileRevisions(path + (path.equals("") ? "" : "/") + entry.getName(), temp, 1, 
           repository.getLatestRevision()); 

    for (SVNFileRevision rev : aux) { 

    //So we know that rev contains date author and log   
    //System.out.println(rev.getRevision()); 
    //System.out.println(rev.getRevisionProperties().getSVNPropertyValue("svn:date")); 
    //System.out.println(rev.getRevisionProperties().getSVNPropertyValue("svn:author")); 
    //System.out.println(rev.getRevisionProperties().getSVNPropertyValue("svn:log")); 

      //we add path and name 
      rev.getRevisionProperties().put("path", path); 
      rev.getRevisionProperties().put("name", entry.getName()); 

    //insert creation date 
    // ? ? ? 

      resultReturn.add(rev); 

    } 
} 
} 
return resultReturn; 

감사합니다 사전에 어떤 도움을 :

샘플 코드의 비트는 내가 뭐하는 거지 표시합니다.

답변

4

SVNProperty.COMMITTED_DATE 각 파일 및 디렉토리는 생성 날짜를 가리 킵니다.

SVNProperty.COMMITTED_REVISION 및 SVNProperty.LAST_AUTHOR (언젠가 파일/디렉토리의 최신 변경 사항을 작성하고 수정해야하는 경우)을 볼 수도 있습니다. 이러한 모든 특성은 모든 개정 (더 나은)> 0

SVNProperties properties = new SVNProperties(); 
svnRepostory.getFile("path/to/file", -1, properties, null); 
final String committedDateString = properties.getStringValue(SVNProperty.COMMITTED_DATE); 
SVNDate date = SVNDate.parseDate(committedDateString); 

또는 SVNRepository # 정보 전화를 사용할 수 있습니다에서 모든 파일 및 디렉토리에 대해 자동으로 SVN에 의해 ​​설정됩니다. getDate() 메소드가있는 SVNDirEntry 인스턴스를 반환합니다.

관련 문제