I am trying to access the full repository history of an IFile object programatically from an Eclipse plugin. When the file has never been renamed or moved, the following code snippet works:

public long getFileHistoryTimestamp(IFile file, IProgressMonitor monitor, boolean lastModified) {
    IProject project = file.getProject();
    RepositoryProvider rProv = RepositoryProvider.getProvider(project);
    long createdMillis, lastModifiedMillis;
    if (rProv !=null) {
        IFileHistoryProvider fhp = rProv.getFileHistoryProvider();
        if (fhp != null) {
            IFileHistory fHist = fhp.getFileHistoryFor((IResource) file, 
                    IFileHistoryProvider.NONE, null);
            IFileRevision[] revs = fHist.getFileRevisions();
            Arrays.sort(revs, new Comparator<IFileRevision>(){
                   public int compare(IFileRevision o1, IFileRevision o2) {
                       return Long.compare(o1.getTimestamp(), o2.getTimestamp());
                   }
            });
            for (IFileRevision rev : revs) {
                if (rev.getTimestamp() >= 0) {
                    createdMillis = rev.getTimestamp();
                    break;
                }
            }
            if (revs.length > 0) {
                lastModifiedMillis = revs[revs.length - 1].getTimestamp();
            }
       }

       return lastModified ? lastModifiedMillis : createdMillis;
}

But, if the file has been moved (e.g. with a multi-module maven project to a new or different module/project), then the values returned above are only for the file in it's current location - i.e. it does not track any rename/moves. The same file in the Eclipse Team History view does track the full version history.

How can I access this full history within the Eclipse Team API?

0

There are 0 best solutions below