2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
4 * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
6 * The contents of this file are subject to the terms of either the GNU
7 * General Public License Version 2 only ("GPL") or the Common
8 * Development and Distribution License("CDDL") (collectively, the
9 * "License"). You may not use this file except in compliance with the
10 * License. You can obtain a copy of the License at
11 * http://www.netbeans.org/cddl-gplv2.html
12 * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
13 * specific language governing permissions and limitations under the
14 * License. When distributing the software, include this License Header
15 * Notice in each file and include the License file at
16 * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
17 * particular file as subject to the "Classpath" exception as provided
18 * by Sun in the GPL Version 2 section of the License file that
19 * accompanied this code. If applicable, add the following below the
20 * License Header, with the fields enclosed by brackets [] replaced by
21 * your own identifying information:
22 * "Portions Copyrighted [year] [name of copyright owner]"
26 * The Original Software is NetBeans. The Initial Developer of the Original
27 * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
28 * Microsystems, Inc. All Rights Reserved.
29 * Portions Copyright 2008 Alexander Coles (Ikonoklastik Productions).
31 * If you wish your version of this file to be governed by only the CDDL
32 * or only the GPL Version 2, indicate your decision by adding
33 * "[Contributor] elects to include this software in this distribution
34 * under the [CDDL or GPL Version 2] license." If you do not indicate a
35 * single choice of license, a recipient has the option to distribute
36 * your version of this file under either the CDDL, the GPL Version 2 or
37 * to extend the choice of license to its licensees as provided above.
38 * However, if you add GPL Version 2 code and therefore, elected the GPL
39 * Version 2 license, then the option applies only if the new code is
40 * made subject to such option by the copyright holder.
42 package org
.netbeans
.modules
.git
;
45 import java
.io
.IOException
;
46 import org
.netbeans
.modules
.git
.ui
.diff
.Setup
;
47 import org
.netbeans
.modules
.git
.util
.GitCommand
;
50 * File revisions cache. It can access pristine files.
52 * XXX and what exactly is cached here?!
56 public class VersionsCache
{
58 private static VersionsCache instance
;
60 /** Creates a new instance of VersionsCache */
61 private VersionsCache() {
64 public static synchronized VersionsCache
getInstance() {
65 if (instance
== null) {
66 instance
= new VersionsCache();
72 * Loads the file in specified revision.
74 * @return null if the file does not exist in given revision
76 public File
getFileRevision(File base
, String revision
) throws IOException
{
77 if (revision
.equals("-1")) {
78 return null; // NOI18N
81 File repository
= Git
.getInstance().getTopmostManagedParent(base
);
82 if (Setup
.REVISION_BASE
.equals(revision
)) {
84 File tempFile
= File
.createTempFile("tmp", "-" + base
.getName()); //NOI18N
86 GitCommand
.doCat(repository
, base
, tempFile
, null);
87 if (tempFile
.length() == 0) {
91 } catch (GitException e
) {
92 IOException ioe
= new IOException();
96 } else if (Setup
.REVISION_CURRENT
.equals(revision
)) {
100 File tempFile
= File
.createTempFile("tmp", "-" + base
.getName()); //NOI18N
102 GitCommand
.doCat(repository
, base
, tempFile
, revision
, null);
103 if (tempFile
.length() == 0) {
107 } catch (GitException e
) {
108 IOException ioe
= new IOException();