java.io.File.mkdir() and mkdirs() report failure as an exceptional return value false. Fix the code which silently ignored this exceptional return value. Change-Id: I41244f4b9d66176e68e2c07e2329cf08492f8619 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>tags/v0.11.1
import org.eclipse.jgit.storage.file.FileBasedConfig; | import org.eclipse.jgit.storage.file.FileBasedConfig; | ||||
import org.eclipse.jgit.storage.file.LockFile; | import org.eclipse.jgit.storage.file.LockFile; | ||||
import org.eclipse.jgit.util.FS; | import org.eclipse.jgit.util.FS; | ||||
import org.eclipse.jgit.util.FileUtils; | |||||
/** | /** | ||||
* Manages the {@code .eclipse_iplog} file in a project. | * Manages the {@code .eclipse_iplog} file in a project. | ||||
*/ | */ | ||||
public void syncCQs(File file, FS fs, URL base, String username, | public void syncCQs(File file, FS fs, URL base, String username, | ||||
String password) throws IOException, ConfigInvalidException { | String password) throws IOException, ConfigInvalidException { | ||||
if (!file.getParentFile().exists()) | |||||
file.getParentFile().mkdirs(); | |||||
FileUtils.mkdirs(file.getParentFile(), true); | |||||
LockFile lf = new LockFile(file, fs); | LockFile lf = new LockFile(file, fs); | ||||
if (!lf.lock()) | if (!lf.lock()) |
import org.eclipse.jgit.storage.file.WindowCache; | import org.eclipse.jgit.storage.file.WindowCache; | ||||
import org.eclipse.jgit.storage.file.WindowCacheConfig; | import org.eclipse.jgit.storage.file.WindowCacheConfig; | ||||
import org.eclipse.jgit.util.FS; | import org.eclipse.jgit.util.FS; | ||||
import org.eclipse.jgit.util.FileUtils; | |||||
import org.eclipse.jgit.util.IO; | import org.eclipse.jgit.util.IO; | ||||
import org.eclipse.jgit.util.SystemReader; | import org.eclipse.jgit.util.SystemReader; | ||||
import org.junit.After; | import org.junit.After; | ||||
* the file could not be written. | * the file could not be written. | ||||
*/ | */ | ||||
protected void write(final File f, final String body) throws IOException { | protected void write(final File f, final String body) throws IOException { | ||||
f.getParentFile().mkdirs(); | |||||
FileUtils.mkdirs(f.getParentFile(), true); | |||||
Writer w = new OutputStreamWriter(new FileOutputStream(f), "UTF-8"); | Writer w = new OutputStreamWriter(new FileOutputStream(f), "UTF-8"); | ||||
try { | try { | ||||
w.write(body); | w.write(body); |
import org.eclipse.jgit.revwalk.RevTag; | import org.eclipse.jgit.revwalk.RevTag; | ||||
import org.eclipse.jgit.revwalk.RevWalk; | import org.eclipse.jgit.revwalk.RevWalk; | ||||
import org.eclipse.jgit.storage.file.LockFile; | import org.eclipse.jgit.storage.file.LockFile; | ||||
import org.eclipse.jgit.util.FileUtils; | |||||
import org.kohsuke.args4j.Argument; | import org.kohsuke.args4j.Argument; | ||||
import org.kohsuke.args4j.Option; | import org.kohsuke.args4j.Option; | ||||
log.scan(db, rw.parseCommit(start), version); | log.scan(db, rw.parseCommit(start), version); | ||||
if (output != null) { | if (output != null) { | ||||
if (!output.getParentFile().exists()) | |||||
output.getParentFile().mkdirs(); | |||||
FileUtils.mkdirs(output.getParentFile(), true); | |||||
LockFile lf = new LockFile(output, db.getFS()); | LockFile lf = new LockFile(output, db.getFS()); | ||||
if (!lf.lock()) | if (!lf.lock()) | ||||
throw die(MessageFormat.format(CLIText.get().cannotLock, output)); | throw die(MessageFormat.format(CLIText.get().cannotLock, output)); |
@Test | @Test | ||||
public void testAddExistingSingleFile() throws IOException, NoFilepatternException { | public void testAddExistingSingleFile() throws IOException, NoFilepatternException { | ||||
File file = new File(db.getWorkTree(), "a.txt"); | File file = new File(db.getWorkTree(), "a.txt"); | ||||
file.createNewFile(); | |||||
FileUtils.createNewFile(file); | |||||
PrintWriter writer = new PrintWriter(file); | PrintWriter writer = new PrintWriter(file); | ||||
writer.print("content"); | writer.print("content"); | ||||
writer.close(); | writer.close(); | ||||
@Test | @Test | ||||
public void testAddExistingSingleFileInSubDir() throws IOException, NoFilepatternException { | public void testAddExistingSingleFileInSubDir() throws IOException, NoFilepatternException { | ||||
new File(db.getWorkTree(), "sub").mkdir(); | |||||
FileUtils.mkdir(new File(db.getWorkTree(), "sub")); | |||||
File file = new File(db.getWorkTree(), "sub/a.txt"); | File file = new File(db.getWorkTree(), "sub/a.txt"); | ||||
file.createNewFile(); | |||||
FileUtils.createNewFile(file); | |||||
PrintWriter writer = new PrintWriter(file); | PrintWriter writer = new PrintWriter(file); | ||||
writer.print("content"); | writer.print("content"); | ||||
writer.close(); | writer.close(); | ||||
@Test | @Test | ||||
public void testAddExistingSingleFileTwice() throws IOException, NoFilepatternException { | public void testAddExistingSingleFileTwice() throws IOException, NoFilepatternException { | ||||
File file = new File(db.getWorkTree(), "a.txt"); | File file = new File(db.getWorkTree(), "a.txt"); | ||||
file.createNewFile(); | |||||
FileUtils.createNewFile(file); | |||||
PrintWriter writer = new PrintWriter(file); | PrintWriter writer = new PrintWriter(file); | ||||
writer.print("content"); | writer.print("content"); | ||||
writer.close(); | writer.close(); | ||||
@Test | @Test | ||||
public void testAddExistingSingleFileTwiceWithCommit() throws Exception { | public void testAddExistingSingleFileTwiceWithCommit() throws Exception { | ||||
File file = new File(db.getWorkTree(), "a.txt"); | File file = new File(db.getWorkTree(), "a.txt"); | ||||
file.createNewFile(); | |||||
FileUtils.createNewFile(file); | |||||
PrintWriter writer = new PrintWriter(file); | PrintWriter writer = new PrintWriter(file); | ||||
writer.print("content"); | writer.print("content"); | ||||
writer.close(); | writer.close(); | ||||
@Test | @Test | ||||
public void testAddRemovedFile() throws Exception { | public void testAddRemovedFile() throws Exception { | ||||
File file = new File(db.getWorkTree(), "a.txt"); | File file = new File(db.getWorkTree(), "a.txt"); | ||||
file.createNewFile(); | |||||
FileUtils.createNewFile(file); | |||||
PrintWriter writer = new PrintWriter(file); | PrintWriter writer = new PrintWriter(file); | ||||
writer.print("content"); | writer.print("content"); | ||||
writer.close(); | writer.close(); | ||||
@Test | @Test | ||||
public void testAddRemovedCommittedFile() throws Exception { | public void testAddRemovedCommittedFile() throws Exception { | ||||
File file = new File(db.getWorkTree(), "a.txt"); | File file = new File(db.getWorkTree(), "a.txt"); | ||||
file.createNewFile(); | |||||
FileUtils.createNewFile(file); | |||||
PrintWriter writer = new PrintWriter(file); | PrintWriter writer = new PrintWriter(file); | ||||
writer.print("content"); | writer.print("content"); | ||||
writer.close(); | writer.close(); | ||||
// prepare conflict | // prepare conflict | ||||
File file = new File(db.getWorkTree(), "a.txt"); | File file = new File(db.getWorkTree(), "a.txt"); | ||||
file.createNewFile(); | |||||
FileUtils.createNewFile(file); | |||||
PrintWriter writer = new PrintWriter(file); | PrintWriter writer = new PrintWriter(file); | ||||
writer.print("content"); | writer.print("content"); | ||||
writer.close(); | writer.close(); | ||||
File file2 = new File(db.getWorkTree(), "b.txt"); | File file2 = new File(db.getWorkTree(), "b.txt"); | ||||
file2.createNewFile(); | |||||
FileUtils.createNewFile(file2); | |||||
writer = new PrintWriter(file2); | writer = new PrintWriter(file2); | ||||
writer.print("content b"); | writer.print("content b"); | ||||
writer.close(); | writer.close(); | ||||
@Test | @Test | ||||
public void testAddTwoFiles() throws Exception { | public void testAddTwoFiles() throws Exception { | ||||
File file = new File(db.getWorkTree(), "a.txt"); | File file = new File(db.getWorkTree(), "a.txt"); | ||||
file.createNewFile(); | |||||
FileUtils.createNewFile(file); | |||||
PrintWriter writer = new PrintWriter(file); | PrintWriter writer = new PrintWriter(file); | ||||
writer.print("content"); | writer.print("content"); | ||||
writer.close(); | writer.close(); | ||||
File file2 = new File(db.getWorkTree(), "b.txt"); | File file2 = new File(db.getWorkTree(), "b.txt"); | ||||
file2.createNewFile(); | |||||
FileUtils.createNewFile(file2); | |||||
writer = new PrintWriter(file2); | writer = new PrintWriter(file2); | ||||
writer.print("content b"); | writer.print("content b"); | ||||
writer.close(); | writer.close(); | ||||
@Test | @Test | ||||
public void testAddFolder() throws Exception { | public void testAddFolder() throws Exception { | ||||
new File(db.getWorkTree(), "sub").mkdir(); | |||||
FileUtils.mkdir(new File(db.getWorkTree(), "sub")); | |||||
File file = new File(db.getWorkTree(), "sub/a.txt"); | File file = new File(db.getWorkTree(), "sub/a.txt"); | ||||
file.createNewFile(); | |||||
FileUtils.createNewFile(file); | |||||
PrintWriter writer = new PrintWriter(file); | PrintWriter writer = new PrintWriter(file); | ||||
writer.print("content"); | writer.print("content"); | ||||
writer.close(); | writer.close(); | ||||
File file2 = new File(db.getWorkTree(), "sub/b.txt"); | File file2 = new File(db.getWorkTree(), "sub/b.txt"); | ||||
file2.createNewFile(); | |||||
FileUtils.createNewFile(file2); | |||||
writer = new PrintWriter(file2); | writer = new PrintWriter(file2); | ||||
writer.print("content b"); | writer.print("content b"); | ||||
writer.close(); | writer.close(); | ||||
@Test | @Test | ||||
public void testAddIgnoredFile() throws Exception { | public void testAddIgnoredFile() throws Exception { | ||||
new File(db.getWorkTree(), "sub").mkdir(); | |||||
FileUtils.mkdir(new File(db.getWorkTree(), "sub")); | |||||
File file = new File(db.getWorkTree(), "sub/a.txt"); | File file = new File(db.getWorkTree(), "sub/a.txt"); | ||||
file.createNewFile(); | |||||
FileUtils.createNewFile(file); | |||||
PrintWriter writer = new PrintWriter(file); | PrintWriter writer = new PrintWriter(file); | ||||
writer.print("content"); | writer.print("content"); | ||||
writer.close(); | writer.close(); | ||||
File ignoreFile = new File(db.getWorkTree(), ".gitignore"); | File ignoreFile = new File(db.getWorkTree(), ".gitignore"); | ||||
ignoreFile.createNewFile(); | |||||
FileUtils.createNewFile(ignoreFile); | |||||
writer = new PrintWriter(ignoreFile); | writer = new PrintWriter(ignoreFile); | ||||
writer.print("sub/b.txt"); | writer.print("sub/b.txt"); | ||||
writer.close(); | writer.close(); | ||||
File file2 = new File(db.getWorkTree(), "sub/b.txt"); | File file2 = new File(db.getWorkTree(), "sub/b.txt"); | ||||
file2.createNewFile(); | |||||
FileUtils.createNewFile(file2); | |||||
writer = new PrintWriter(file2); | writer = new PrintWriter(file2); | ||||
writer.print("content b"); | writer.print("content b"); | ||||
writer.close(); | writer.close(); | ||||
@Test | @Test | ||||
public void testAddWholeRepo() throws Exception { | public void testAddWholeRepo() throws Exception { | ||||
new File(db.getWorkTree(), "sub").mkdir(); | |||||
FileUtils.mkdir(new File(db.getWorkTree(), "sub")); | |||||
File file = new File(db.getWorkTree(), "sub/a.txt"); | File file = new File(db.getWorkTree(), "sub/a.txt"); | ||||
file.createNewFile(); | |||||
FileUtils.createNewFile(file); | |||||
PrintWriter writer = new PrintWriter(file); | PrintWriter writer = new PrintWriter(file); | ||||
writer.print("content"); | writer.print("content"); | ||||
writer.close(); | writer.close(); | ||||
File file2 = new File(db.getWorkTree(), "sub/b.txt"); | File file2 = new File(db.getWorkTree(), "sub/b.txt"); | ||||
file2.createNewFile(); | |||||
FileUtils.createNewFile(file2); | |||||
writer = new PrintWriter(file2); | writer = new PrintWriter(file2); | ||||
writer.print("content b"); | writer.print("content b"); | ||||
writer.close(); | writer.close(); | ||||
// file c exists in workdir but not in index -> added | // file c exists in workdir but not in index -> added | ||||
@Test | @Test | ||||
public void testAddWithoutParameterUpdate() throws Exception { | public void testAddWithoutParameterUpdate() throws Exception { | ||||
new File(db.getWorkTree(), "sub").mkdir(); | |||||
FileUtils.mkdir(new File(db.getWorkTree(), "sub")); | |||||
File file = new File(db.getWorkTree(), "sub/a.txt"); | File file = new File(db.getWorkTree(), "sub/a.txt"); | ||||
file.createNewFile(); | |||||
FileUtils.createNewFile(file); | |||||
PrintWriter writer = new PrintWriter(file); | PrintWriter writer = new PrintWriter(file); | ||||
writer.print("content"); | writer.print("content"); | ||||
writer.close(); | writer.close(); | ||||
File file2 = new File(db.getWorkTree(), "sub/b.txt"); | File file2 = new File(db.getWorkTree(), "sub/b.txt"); | ||||
file2.createNewFile(); | |||||
FileUtils.createNewFile(file2); | |||||
writer = new PrintWriter(file2); | writer = new PrintWriter(file2); | ||||
writer.print("content b"); | writer.print("content b"); | ||||
writer.close(); | writer.close(); | ||||
// new unstaged file sub/c.txt | // new unstaged file sub/c.txt | ||||
File file3 = new File(db.getWorkTree(), "sub/c.txt"); | File file3 = new File(db.getWorkTree(), "sub/c.txt"); | ||||
file3.createNewFile(); | |||||
FileUtils.createNewFile(file3); | |||||
writer = new PrintWriter(file3); | writer = new PrintWriter(file3); | ||||
writer.print("content c"); | writer.print("content c"); | ||||
writer.close(); | writer.close(); | ||||
// file c exists in workdir but not in index -> unchanged | // file c exists in workdir but not in index -> unchanged | ||||
@Test | @Test | ||||
public void testAddWithParameterUpdate() throws Exception { | public void testAddWithParameterUpdate() throws Exception { | ||||
new File(db.getWorkTree(), "sub").mkdir(); | |||||
FileUtils.mkdir(new File(db.getWorkTree(), "sub")); | |||||
File file = new File(db.getWorkTree(), "sub/a.txt"); | File file = new File(db.getWorkTree(), "sub/a.txt"); | ||||
file.createNewFile(); | |||||
FileUtils.createNewFile(file); | |||||
PrintWriter writer = new PrintWriter(file); | PrintWriter writer = new PrintWriter(file); | ||||
writer.print("content"); | writer.print("content"); | ||||
writer.close(); | writer.close(); | ||||
File file2 = new File(db.getWorkTree(), "sub/b.txt"); | File file2 = new File(db.getWorkTree(), "sub/b.txt"); | ||||
file2.createNewFile(); | |||||
FileUtils.createNewFile(file2); | |||||
writer = new PrintWriter(file2); | writer = new PrintWriter(file2); | ||||
writer.print("content b"); | writer.print("content b"); | ||||
writer.close(); | writer.close(); | ||||
// new unstaged file sub/c.txt | // new unstaged file sub/c.txt | ||||
File file3 = new File(db.getWorkTree(), "sub/c.txt"); | File file3 = new File(db.getWorkTree(), "sub/c.txt"); | ||||
file3.createNewFile(); | |||||
FileUtils.createNewFile(file3); | |||||
writer = new PrintWriter(file3); | writer = new PrintWriter(file3); | ||||
writer.print("content c"); | writer.print("content c"); | ||||
writer.close(); | writer.close(); |
import org.eclipse.jgit.lib.RepositoryTestCase; | import org.eclipse.jgit.lib.RepositoryTestCase; | ||||
import org.eclipse.jgit.revwalk.RevCommit; | import org.eclipse.jgit.revwalk.RevCommit; | ||||
import org.eclipse.jgit.treewalk.TreeWalk; | import org.eclipse.jgit.treewalk.TreeWalk; | ||||
import org.eclipse.jgit.util.FileUtils; | |||||
public class CommitAndLogCommandTests extends RepositoryTestCase { | public class CommitAndLogCommandTests extends RepositoryTestCase { | ||||
public void testSomeCommits() throws NoHeadException, NoMessageException, | public void testSomeCommits() throws NoHeadException, NoMessageException, | ||||
JGitInternalException, WrongRepositoryStateException, | JGitInternalException, WrongRepositoryStateException, | ||||
NoFilepatternException { | NoFilepatternException { | ||||
File file = new File(db.getWorkTree(), "a.txt"); | File file = new File(db.getWorkTree(), "a.txt"); | ||||
file.createNewFile(); | |||||
FileUtils.createNewFile(file); | |||||
PrintWriter writer = new PrintWriter(file); | PrintWriter writer = new PrintWriter(file); | ||||
writer.print("content"); | writer.print("content"); | ||||
writer.close(); | writer.close(); |
import org.eclipse.jgit.lib.Repository; | import org.eclipse.jgit.lib.Repository; | ||||
import org.eclipse.jgit.lib.RepositoryTestCase; | import org.eclipse.jgit.lib.RepositoryTestCase; | ||||
import org.eclipse.jgit.util.FileUtils; | |||||
import org.junit.Before; | import org.junit.Before; | ||||
import org.junit.Test; | import org.junit.Test; | ||||
public static File createTempDirectory(String name) throws IOException { | public static File createTempDirectory(String name) throws IOException { | ||||
final File temp; | final File temp; | ||||
temp = File.createTempFile(name, Long.toString(System.nanoTime())); | temp = File.createTempFile(name, Long.toString(System.nanoTime())); | ||||
if (!(temp.delete())) { | |||||
throw new IOException("Could not delete temp file: " | |||||
+ temp.getAbsolutePath()); | |||||
} | |||||
if (!(temp.mkdir())) { | |||||
throw new IOException("Could not create temp directory: " | |||||
+ temp.getAbsolutePath()); | |||||
} | |||||
FileUtils.delete(temp); | |||||
FileUtils.mkdir(temp); | |||||
return temp; | return temp; | ||||
} | } | ||||
import org.eclipse.jgit.treewalk.FileTreeIterator; | import org.eclipse.jgit.treewalk.FileTreeIterator; | ||||
import org.eclipse.jgit.treewalk.FileTreeIteratorWithTimeControl; | import org.eclipse.jgit.treewalk.FileTreeIteratorWithTimeControl; | ||||
import org.eclipse.jgit.treewalk.NameConflictTreeWalk; | import org.eclipse.jgit.treewalk.NameConflictTreeWalk; | ||||
import org.eclipse.jgit.util.FileUtils; | |||||
public class RacyGitTests extends RepositoryTestCase { | public class RacyGitTests extends RepositoryTestCase { | ||||
public void testIterator() throws IllegalStateException, IOException, | public void testIterator() throws IllegalStateException, IOException, | ||||
File lastFile = null; | File lastFile = null; | ||||
for (int i = 0; i < 10; i++) { | for (int i = 0; i < 10; i++) { | ||||
lastFile = new File(db.getWorkTree(), "0." + i); | lastFile = new File(db.getWorkTree(), "0." + i); | ||||
lastFile.createNewFile(); | |||||
FileUtils.createNewFile(lastFile); | |||||
if (i == 5) | if (i == 5) | ||||
fsTick(lastFile); | fsTick(lastFile); | ||||
} | } | ||||
modTimes.add(fsTick(lastFile)); | modTimes.add(fsTick(lastFile)); | ||||
for (int i = 0; i < 10; i++) { | for (int i = 0; i < 10; i++) { | ||||
lastFile = new File(db.getWorkTree(), "1." + i); | lastFile = new File(db.getWorkTree(), "1." + i); | ||||
lastFile.createNewFile(); | |||||
FileUtils.createNewFile(lastFile); | |||||
} | } | ||||
modTimes.add(fsTick(lastFile)); | modTimes.add(fsTick(lastFile)); | ||||
for (int i = 0; i < 10; i++) { | for (int i = 0; i < 10; i++) { | ||||
lastFile = new File(db.getWorkTree(), "2." + i); | lastFile = new File(db.getWorkTree(), "2." + i); | ||||
lastFile.createNewFile(); | |||||
FileUtils.createNewFile(lastFile); | |||||
if (i % 4 == 0) | if (i % 4 == 0) | ||||
fsTick(lastFile); | fsTick(lastFile); | ||||
} | } |
import org.eclipse.jgit.lib.ObjectReader; | import org.eclipse.jgit.lib.ObjectReader; | ||||
import org.eclipse.jgit.revwalk.RevBlob; | import org.eclipse.jgit.revwalk.RevBlob; | ||||
import org.eclipse.jgit.transport.PackedObjectInfo; | import org.eclipse.jgit.transport.PackedObjectInfo; | ||||
import org.eclipse.jgit.util.FileUtils; | |||||
import org.junit.After; | import org.junit.After; | ||||
import org.junit.Before; | import org.junit.Before; | ||||
import org.junit.Test; | import org.junit.Test; | ||||
File packDir = new File(db.getObjectDatabase().getDirectory(), "pack"); | File packDir = new File(db.getObjectDatabase().getDirectory(), "pack"); | ||||
File idxFile = new File(packDir, packName + ".idx"); | File idxFile = new File(packDir, packName + ".idx"); | ||||
File packFile = new File(packDir, packName + ".pack"); | File packFile = new File(packDir, packName + ".pack"); | ||||
packDir.mkdir(); | |||||
FileUtils.mkdir(packDir, true); | |||||
OutputStream dst = new BufferedOutputStream(new FileOutputStream( | OutputStream dst = new BufferedOutputStream(new FileOutputStream( | ||||
idxFile)); | idxFile)); | ||||
try { | try { |
import java.io.File; | import java.io.File; | ||||
import org.eclipse.jgit.junit.LocalDiskRepositoryTestCase; | import org.eclipse.jgit.junit.LocalDiskRepositoryTestCase; | ||||
import org.eclipse.jgit.util.FileUtils; | |||||
import org.junit.Test; | import org.junit.Test; | ||||
public class FileRepositoryBuilderTest extends LocalDiskRepositoryTestCase { | public class FileRepositoryBuilderTest extends LocalDiskRepositoryTestCase { | ||||
public void testShouldAutomagicallyDetectGitDirectory() throws Exception { | public void testShouldAutomagicallyDetectGitDirectory() throws Exception { | ||||
FileRepository r = createWorkRepository(); | FileRepository r = createWorkRepository(); | ||||
File d = new File(r.getDirectory(), "sub-dir"); | File d = new File(r.getDirectory(), "sub-dir"); | ||||
d.mkdir(); | |||||
FileUtils.mkdir(d); | |||||
assertEquals(r.getDirectory(), new FileRepositoryBuilder() | assertEquals(r.getDirectory(), new FileRepositoryBuilder() | ||||
.findGitDir(d).getGitDir()); | .findGitDir(d).getGitDir()); |
import org.eclipse.jgit.lib.Constants; | import org.eclipse.jgit.lib.Constants; | ||||
import org.eclipse.jgit.lib.Repository; | import org.eclipse.jgit.lib.Repository; | ||||
import org.eclipse.jgit.util.FS; | import org.eclipse.jgit.util.FS; | ||||
import org.eclipse.jgit.util.FileUtils; | |||||
import org.junit.Test; | import org.junit.Test; | ||||
/** | /** | ||||
} | } | ||||
} | } | ||||
private File getFile(String... pathComponents) { | |||||
private File getFile(String... pathComponents) throws IOException { | |||||
String rootPath = new File(new File("target"), "trash").getPath(); | String rootPath = new File(new File("target"), "trash").getPath(); | ||||
for (String pathComponent : pathComponents) | for (String pathComponent : pathComponents) | ||||
rootPath = rootPath + File.separatorChar + pathComponent; | rootPath = rootPath + File.separatorChar + pathComponent; | ||||
File result = new File(rootPath); | File result = new File(rootPath); | ||||
result.mkdir(); | |||||
FileUtils.mkdirs(result, true); | |||||
return result; | return result; | ||||
} | } | ||||
import org.eclipse.jgit.revwalk.RevCommit; | import org.eclipse.jgit.revwalk.RevCommit; | ||||
import org.eclipse.jgit.revwalk.RevTag; | import org.eclipse.jgit.revwalk.RevTag; | ||||
import org.eclipse.jgit.revwalk.RevWalk; | import org.eclipse.jgit.revwalk.RevWalk; | ||||
import org.eclipse.jgit.util.FileUtils; | |||||
import org.junit.Test; | import org.junit.Test; | ||||
public class T0003_BasicTest extends SampleDataRepositoryTestCase { | public class T0003_BasicTest extends SampleDataRepositoryTestCase { | ||||
throws IOException { | throws IOException { | ||||
File repo1Parent = new File(trash.getParentFile(), "r1"); | File repo1Parent = new File(trash.getParentFile(), "r1"); | ||||
File workdir = new File(trash.getParentFile(), "rw"); | File workdir = new File(trash.getParentFile(), "rw"); | ||||
workdir.mkdir(); | |||||
FileUtils.mkdir(workdir); | |||||
FileRepository repo1initial = new FileRepository(new File(repo1Parent, | FileRepository repo1initial = new FileRepository(new File(repo1Parent, | ||||
Constants.DOT_GIT)); | Constants.DOT_GIT)); | ||||
repo1initial.create(); | repo1initial.create(); | ||||
throws IOException { | throws IOException { | ||||
File repo1Parent = new File(trash.getParentFile(), "r1"); | File repo1Parent = new File(trash.getParentFile(), "r1"); | ||||
File workdir = new File(trash.getParentFile(), "rw"); | File workdir = new File(trash.getParentFile(), "rw"); | ||||
workdir.mkdir(); | |||||
FileUtils.mkdir(workdir); | |||||
FileRepository repo1initial = new FileRepository(new File(repo1Parent, | FileRepository repo1initial = new FileRepository(new File(repo1Parent, | ||||
Constants.DOT_GIT)); | Constants.DOT_GIT)); | ||||
repo1initial.create(); | repo1initial.create(); |
import org.eclipse.jgit.lib.ObjectInserter; | import org.eclipse.jgit.lib.ObjectInserter; | ||||
import org.eclipse.jgit.lib.ObjectLoader; | import org.eclipse.jgit.lib.ObjectLoader; | ||||
import org.eclipse.jgit.lib.ObjectStream; | import org.eclipse.jgit.lib.ObjectStream; | ||||
import org.eclipse.jgit.util.FileUtils; | |||||
import org.eclipse.jgit.util.IO; | import org.eclipse.jgit.util.IO; | ||||
import org.junit.After; | import org.junit.After; | ||||
import org.junit.Before; | import org.junit.Before; | ||||
private void write(ObjectId id, byte[] data) throws IOException { | private void write(ObjectId id, byte[] data) throws IOException { | ||||
File path = path(id); | File path = path(id); | ||||
path.getParentFile().mkdirs(); | |||||
FileUtils.mkdirs(path.getParentFile()); | |||||
FileOutputStream out = new FileOutputStream(path); | FileOutputStream out = new FileOutputStream(path); | ||||
try { | try { | ||||
out.write(data); | out.write(data); |
import org.eclipse.jgit.lib.RepositoryTestCase; | import org.eclipse.jgit.lib.RepositoryTestCase; | ||||
import org.eclipse.jgit.transport.OpenSshConfig.Host; | import org.eclipse.jgit.transport.OpenSshConfig.Host; | ||||
import org.eclipse.jgit.util.FileUtils; | |||||
import org.junit.Before; | import org.junit.Before; | ||||
import org.junit.Test; | import org.junit.Test; | ||||
super.setUp(); | super.setUp(); | ||||
home = new File(trash, "home"); | home = new File(trash, "home"); | ||||
home.mkdir(); | |||||
FileUtils.mkdir(home); | |||||
configFile = new File(new File(home, ".ssh"), "config"); | configFile = new File(new File(home, ".ssh"), "config"); | ||||
configFile.getParentFile().mkdir(); | |||||
FileUtils.mkdir(configFile.getParentFile()); | |||||
System.setProperty("user.name", "jex_junit"); | System.setProperty("user.name", "jex_junit"); | ||||
osc = new OpenSshConfig(home, configFile); | osc = new OpenSshConfig(home, configFile); |
public void testEmptyIfRootIsEmpty() throws Exception { | public void testEmptyIfRootIsEmpty() throws Exception { | ||||
final File r = new File(trash, "not-existing-file"); | final File r = new File(trash, "not-existing-file"); | ||||
assertFalse(r.exists()); | assertFalse(r.exists()); | ||||
r.mkdir(); | |||||
assertTrue(r.isDirectory()); | |||||
FileUtils.mkdir(r); | |||||
final FileTreeIterator fti = new FileTreeIterator(r, db.getFS(), | final FileTreeIterator fti = new FileTreeIterator(r, db.getFS(), | ||||
db.getConfig().get(WorkingTreeOptions.KEY)); | db.getConfig().get(WorkingTreeOptions.KEY)); |
@Test | @Test | ||||
public void testDeleteFile() throws IOException { | public void testDeleteFile() throws IOException { | ||||
File f = new File(trash, "test"); | File f = new File(trash, "test"); | ||||
assertTrue(f.createNewFile()); | |||||
FileUtils.createNewFile(f); | |||||
FileUtils.delete(f); | FileUtils.delete(f); | ||||
assertFalse(f.exists()); | assertFalse(f.exists()); | ||||
@Test | @Test | ||||
public void testDeleteRecursive() throws IOException { | public void testDeleteRecursive() throws IOException { | ||||
File f1 = new File(trash, "test/test/a"); | File f1 = new File(trash, "test/test/a"); | ||||
f1.mkdirs(); | |||||
f1.createNewFile(); | |||||
FileUtils.mkdirs(f1.getParentFile()); | |||||
FileUtils.createNewFile(f1); | |||||
File f2 = new File(trash, "test/test/b"); | File f2 = new File(trash, "test/test/b"); | ||||
f2.createNewFile(); | |||||
FileUtils.createNewFile(f2); | |||||
File d = new File(trash, "test"); | File d = new File(trash, "test"); | ||||
FileUtils.delete(d, FileUtils.RECURSIVE); | FileUtils.delete(d, FileUtils.RECURSIVE); | ||||
assertFalse(d.exists()); | assertFalse(d.exists()); | ||||
assertTrue(d.delete()); | assertTrue(d.delete()); | ||||
File f = new File(trash, "test"); | File f = new File(trash, "test"); | ||||
assertTrue(f.createNewFile()); | |||||
FileUtils.createNewFile(f); | |||||
try { | try { | ||||
FileUtils.mkdir(d); | FileUtils.mkdir(d); | ||||
fail("creation of directory having same path as existing file must" | fail("creation of directory having same path as existing file must" | ||||
FileUtils.delete(root, FileUtils.RECURSIVE); | FileUtils.delete(root, FileUtils.RECURSIVE); | ||||
File f = new File(trash, "test"); | File f = new File(trash, "test"); | ||||
assertTrue(f.createNewFile()); | |||||
FileUtils.createNewFile(f); | |||||
try { | try { | ||||
FileUtils.mkdirs(d); | FileUtils.mkdirs(d); | ||||
fail("creation of directory having path conflicting with existing" | fail("creation of directory having path conflicting with existing" |
<Bug pattern="DM_GC" /> | <Bug pattern="DM_GC" /> | ||||
</Match> | </Match> | ||||
<!-- Silence ignoring return value of mkdirs --> | |||||
<Match> | |||||
<Class name="org.eclipse.jgit.dircache.DirCacheCheckout" /> | |||||
<Method name="checkout" /> | |||||
<Bug pattern="RV_RETURN_VALUE_IGNORED_BAD_PRACTICE" /> | |||||
</Match> | |||||
<!-- Silence the construction of our magic String instance. | <!-- Silence the construction of our magic String instance. | ||||
--> | --> | ||||
<Match> | <Match> |
Collections.reverse(cherryPickList); | Collections.reverse(cherryPickList); | ||||
// create the folder for the meta information | // create the folder for the meta information | ||||
rebaseDir.mkdir(); | |||||
FileUtils.mkdir(rebaseDir); | |||||
createFile(repo.getDirectory(), Constants.ORIG_HEAD, headId.name()); | createFile(repo.getDirectory(), Constants.ORIG_HEAD, headId.name()); | ||||
createFile(rebaseDir, REBASE_HEAD, headId.name()); | createFile(rebaseDir, REBASE_HEAD, headId.name()); |
for (String path : updated.keySet()) { | for (String path : updated.keySet()) { | ||||
// ... create/overwrite this file ... | // ... create/overwrite this file ... | ||||
file = new File(repo.getWorkTree(), path); | file = new File(repo.getWorkTree(), path); | ||||
file.getParentFile().mkdirs(); | |||||
if (!file.getParentFile().mkdirs()) { | |||||
// ignore | |||||
} | |||||
file.createNewFile(); | file.createNewFile(); | ||||
DirCacheEntry entry = dc.getEntry(path); | DirCacheEntry entry = dc.getEntry(path); | ||||
checkoutEntry(repo, file, entry); | checkoutEntry(repo, file, entry); |
import org.eclipse.jgit.errors.CorruptObjectException; | import org.eclipse.jgit.errors.CorruptObjectException; | ||||
import org.eclipse.jgit.errors.NotSupportedException; | import org.eclipse.jgit.errors.NotSupportedException; | ||||
import org.eclipse.jgit.events.IndexChangedEvent; | import org.eclipse.jgit.events.IndexChangedEvent; | ||||
import org.eclipse.jgit.util.FileUtils; | |||||
import org.eclipse.jgit.util.RawParseUtils; | import org.eclipse.jgit.util.RawParseUtils; | ||||
/** | /** | ||||
ObjectLoader ol = db.open(e.sha1, Constants.OBJ_BLOB); | ObjectLoader ol = db.open(e.sha1, Constants.OBJ_BLOB); | ||||
File file = new File(wd, e.getName()); | File file = new File(wd, e.getName()); | ||||
file.delete(); | file.delete(); | ||||
file.getParentFile().mkdirs(); | |||||
FileUtils.mkdirs(file.getParentFile(), true); | |||||
FileOutputStream dst = new FileOutputStream(file); | FileOutputStream dst = new FileOutputStream(file); | ||||
try { | try { | ||||
ol.copyTo(dst); | ol.copyTo(dst); |
throw new IllegalStateException(MessageFormat.format( | throw new IllegalStateException(MessageFormat.format( | ||||
JGitText.get().repositoryAlreadyExists, getDirectory())); | JGitText.get().repositoryAlreadyExists, getDirectory())); | ||||
} | } | ||||
getDirectory().mkdirs(); | |||||
FileUtils.mkdirs(getDirectory(), true); | |||||
refs.create(); | refs.create(); | ||||
objectDatabase.create(); | objectDatabase.create(); | ||||
new File(getDirectory(), "branches").mkdir(); | |||||
FileUtils.mkdir(new File(getDirectory(), "branches")); | |||||
RefUpdate head = updateRef(Constants.HEAD); | RefUpdate head = updateRef(Constants.HEAD); | ||||
head.disableRefLog(); | head.disableRefLog(); |
import org.eclipse.jgit.lib.Constants; | import org.eclipse.jgit.lib.Constants; | ||||
import org.eclipse.jgit.lib.ObjectId; | import org.eclipse.jgit.lib.ObjectId; | ||||
import org.eclipse.jgit.util.FS; | import org.eclipse.jgit.util.FS; | ||||
import org.eclipse.jgit.util.FileUtils; | |||||
/** | /** | ||||
* Git style file locking and replacement. | * Git style file locking and replacement. | ||||
* does not hold the lock. | * does not hold the lock. | ||||
*/ | */ | ||||
public boolean lock() throws IOException { | public boolean lock() throws IOException { | ||||
lck.getParentFile().mkdirs(); | |||||
FileUtils.mkdirs(lck.getParentFile(), true); | |||||
if (lck.createNewFile()) { | if (lck.createNewFile()) { | ||||
haveLck = true; | haveLck = true; | ||||
try { | try { |
@Override | @Override | ||||
public void create() throws IOException { | public void create() throws IOException { | ||||
objects.mkdirs(); | |||||
infoDirectory.mkdir(); | |||||
packDirectory.mkdir(); | |||||
FileUtils.mkdirs(objects); | |||||
FileUtils.mkdir(infoDirectory); | |||||
FileUtils.mkdir(packDirectory); | |||||
} | } | ||||
@Override | @Override | ||||
// directories are always lazily created. Note that we | // directories are always lazily created. Note that we | ||||
// try the rename first as the directory likely does exist. | // try the rename first as the directory likely does exist. | ||||
// | // | ||||
dst.getParentFile().mkdir(); | |||||
FileUtils.mkdir(dst.getParentFile()); | |||||
if (tmp.renameTo(dst)) { | if (tmp.renameTo(dst)) { | ||||
dst.setReadOnly(); | dst.setReadOnly(); | ||||
unpackedObjectCache.add(id); | unpackedObjectCache.add(id); |
import org.eclipse.jgit.revwalk.RevTag; | import org.eclipse.jgit.revwalk.RevTag; | ||||
import org.eclipse.jgit.revwalk.RevWalk; | import org.eclipse.jgit.revwalk.RevWalk; | ||||
import org.eclipse.jgit.util.FS; | import org.eclipse.jgit.util.FS; | ||||
import org.eclipse.jgit.util.FileUtils; | |||||
import org.eclipse.jgit.util.IO; | import org.eclipse.jgit.util.IO; | ||||
import org.eclipse.jgit.util.RawParseUtils; | import org.eclipse.jgit.util.RawParseUtils; | ||||
import org.eclipse.jgit.util.RefList; | import org.eclipse.jgit.util.RefList; | ||||
} | } | ||||
public void create() throws IOException { | public void create() throws IOException { | ||||
refsDir.mkdir(); | |||||
logsDir.mkdir(); | |||||
logsRefsDir.mkdir(); | |||||
new File(refsDir, R_HEADS.substring(R_REFS.length())).mkdir(); | |||||
new File(refsDir, R_TAGS.substring(R_REFS.length())).mkdir(); | |||||
new File(logsRefsDir, R_HEADS.substring(R_REFS.length())).mkdir(); | |||||
FileUtils.mkdir(refsDir); | |||||
FileUtils.mkdir(logsDir); | |||||
FileUtils.mkdir(logsRefsDir); | |||||
FileUtils.mkdir(new File(refsDir, R_HEADS.substring(R_REFS.length()))); | |||||
FileUtils.mkdir(new File(refsDir, R_TAGS.substring(R_REFS.length()))); | |||||
FileUtils.mkdir(new File(logsRefsDir, | |||||
R_HEADS.substring(R_REFS.length()))); | |||||
} | } | ||||
@Override | @Override |