aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/DefaultReceivePackFactoryTest.java1
-rw-r--r--org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/DefaultUploadPackFactoryTest.java1
-rw-r--r--org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/MockServletConfig.java2
-rw-r--r--org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/TestRepository.java2
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/DiffAlgorithms.java23
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/RebuildCommitGraph.java4
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/api/GitConstructionTest.java11
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/api/HugeFileTest.java17
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/api/MergeCommandTest.java2423
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/dircache/DirCacheBasicTest.java8
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/dircache/DirCacheBuilderIteratorTest.java31
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/dircache/DirCacheCGitCompatabilityTest.java23
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/dircache/DirCacheIteratorTest.java181
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/gitrepo/ManifestParserTest.java5
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcPackRefsTest.java2
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/LockFileTest.java35
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/RefUpdateTest.java8
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/DirCacheCheckoutMaliciousPathTest.java121
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/IndexDiffTest.java674
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/IndexModificationTimesTest.java103
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/MergeAlgorithmTest.java2
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/ForPathTest.java23
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/filter/InterIndexDiffFilterTest.java69
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCache.java6
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/InMemoryRepository.java4
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileRepository.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackLock.java4
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectory.java8
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectoryUpdate.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/merge/MergeFormatter.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/storage/file/FileBasedConfig.java5
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/FetchProcess.java3
32 files changed, 1923 insertions, 1882 deletions
diff --git a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/DefaultReceivePackFactoryTest.java b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/DefaultReceivePackFactoryTest.java
index 772865df7d..f2879e0fac 100644
--- a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/DefaultReceivePackFactoryTest.java
+++ b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/DefaultReceivePackFactoryTest.java
@@ -79,6 +79,7 @@ public class DefaultReceivePackFactoryTest extends LocalDiskRepositoryTestCase {
factory = new DefaultReceivePackFactory();
}
+ @SuppressWarnings("unchecked")
@Test
public void testDisabledSingleton() throws ServiceNotAuthorizedException {
factory = (ReceivePackFactory<HttpServletRequest>) ReceivePackFactory.DISABLED;
diff --git a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/DefaultUploadPackFactoryTest.java b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/DefaultUploadPackFactoryTest.java
index c9d43cdafc..3bcb0571b9 100644
--- a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/DefaultUploadPackFactoryTest.java
+++ b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/DefaultUploadPackFactoryTest.java
@@ -77,6 +77,7 @@ public class DefaultUploadPackFactoryTest extends LocalDiskRepositoryTestCase {
factory = new DefaultUploadPackFactory();
}
+ @SuppressWarnings("unchecked")
@Test
public void testDisabledSingleton() throws ServiceNotAuthorizedException {
factory = (UploadPackFactory<HttpServletRequest>) UploadPackFactory.DISABLED;
diff --git a/org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/MockServletConfig.java b/org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/MockServletConfig.java
index 0b4530ded2..59765890bd 100644
--- a/org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/MockServletConfig.java
+++ b/org.eclipse.jgit.junit.http/src/org/eclipse/jgit/junit/http/MockServletConfig.java
@@ -62,7 +62,7 @@ public class MockServletConfig implements ServletConfig {
return parameters.get(name);
}
- public Enumeration getInitParameterNames() {
+ public Enumeration<String> getInitParameterNames() {
final Iterator<String> i = parameters.keySet().iterator();
return new Enumeration<String>() {
public boolean hasMoreElements() {
diff --git a/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/TestRepository.java b/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/TestRepository.java
index 8439c39c8b..e259156c31 100644
--- a/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/TestRepository.java
+++ b/org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/TestRepository.java
@@ -905,7 +905,7 @@ public class TestRepository<R extends Repository> {
private void writeFile(final File p, final byte[] bin) throws IOException,
ObjectWritingException {
- final LockFile lck = new LockFile(p, db.getFS());
+ final LockFile lck = new LockFile(p);
if (!lck.lock())
throw new ObjectWritingException("Can't write " + p);
try {
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/DiffAlgorithms.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/DiffAlgorithms.java
index c96f2c1ba4..05d094f0de 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/DiffAlgorithms.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/DiffAlgorithms.java
@@ -155,16 +155,16 @@ class DiffAlgorithms extends TextBuiltin {
else
rb.findGitDir(dir);
- Repository db = rb.build();
+ Repository repo = rb.build();
try {
- run(db);
+ run(repo);
} finally {
- db.close();
+ repo.close();
}
}
}
- private void run(Repository db) throws Exception {
+ private void run(Repository repo) throws Exception {
List<Test> all = init();
long files = 0;
@@ -173,14 +173,14 @@ class DiffAlgorithms extends TextBuiltin {
int maxN = 0;
AbbreviatedObjectId startId;
- try (ObjectReader or = db.newObjectReader();
+ try (ObjectReader or = repo.newObjectReader();
RevWalk rw = new RevWalk(or)) {
final MutableObjectId id = new MutableObjectId();
TreeWalk tw = new TreeWalk(or);
tw.setFilter(TreeFilter.ANY_DIFF);
tw.setRecursive(true);
- ObjectId start = db.resolve(Constants.HEAD);
+ ObjectId start = repo.resolve(Constants.HEAD);
startId = or.abbreviate(start);
rw.markStart(rw.parseCommit(start));
for (;;) {
@@ -235,14 +235,15 @@ class DiffAlgorithms extends TextBuiltin {
Collections.sort(all, new Comparator<Test>() {
public int compare(Test a, Test b) {
- int cmp = Long.signum(a.runningTimeNanos - b.runningTimeNanos);
- if (cmp == 0)
- cmp = a.algorithm.name.compareTo(b.algorithm.name);
- return cmp;
+ int result = Long.signum(a.runningTimeNanos - b.runningTimeNanos);
+ if (result == 0) {
+ result = a.algorithm.name.compareTo(b.algorithm.name);
+ }
+ return result;
}
});
- File directory = db.getDirectory();
+ File directory = repo.getDirectory();
if (directory != null) {
String name = directory.getName();
File parent = directory.getParentFile();
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/RebuildCommitGraph.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/RebuildCommitGraph.java
index e2f93f4814..8cfcba9113 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/RebuildCommitGraph.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/debug/RebuildCommitGraph.java
@@ -235,7 +235,7 @@ class RebuildCommitGraph extends TextBuiltin {
final ObjectId id = db.resolve(Constants.HEAD);
if (!ObjectId.isId(head) && id != null) {
final LockFile lf;
- lf = new LockFile(new File(db.getDirectory(), Constants.HEAD), db.getFS());
+ lf = new LockFile(new File(db.getDirectory(), Constants.HEAD));
if (!lf.lock())
throw new IOException(MessageFormat.format(CLIText.get().cannotLock, Constants.HEAD));
lf.write(id);
@@ -263,7 +263,7 @@ class RebuildCommitGraph extends TextBuiltin {
protected void writeFile(final String name, final byte[] content)
throws IOException {
final File file = new File(db.getDirectory(), name);
- final LockFile lck = new LockFile(file, db.getFS());
+ final LockFile lck = new LockFile(file);
if (!lck.lock())
throw new ObjectWritingException(MessageFormat.format(CLIText.get().cantWrite, file));
try {
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/GitConstructionTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/GitConstructionTest.java
index 2220a536f1..3bff8f2ff6 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/GitConstructionTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/GitConstructionTest.java
@@ -66,11 +66,12 @@ public class GitConstructionTest extends RepositoryTestCase {
@Before
public void setUp() throws Exception {
super.setUp();
- Git git = new Git(db);
- git.commit().setMessage("initial commit").call();
- writeTrashFile("Test.txt", "Hello world");
- git.add().addFilepattern("Test.txt").call();
- git.commit().setMessage("Initial commit").call();
+ try (Git git = new Git(db)) {
+ git.commit().setMessage("initial commit").call();
+ writeTrashFile("Test.txt", "Hello world");
+ git.add().addFilepattern("Test.txt").call();
+ git.commit().setMessage("Initial commit").call();
+ }
bareRepo = Git.cloneRepository().setBare(true)
.setURI(db.getDirectory().toURI().toString())
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/HugeFileTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/HugeFileTest.java
index 5449d02a08..4208f4d8e3 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/HugeFileTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/HugeFileTest.java
@@ -51,6 +51,8 @@ import java.util.Collection;
import org.eclipse.jgit.api.ResetCommand.ResetType;
import org.eclipse.jgit.junit.RepositoryTestCase;
+import org.junit.After;
+import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
@@ -60,12 +62,26 @@ public class HugeFileTest extends RepositoryTestCase {
private long lastt = t;
+ private Git git;
+
private void measure(String name) {
long c = System.currentTimeMillis();
System.out.println(name + ", dt=" + (c - lastt) / 1000.0 + "s");
lastt = c;
}
+ @Before
+ public void before() {
+ git = new Git(db);
+ }
+
+ @After
+ public void after() {
+ if (git != null) {
+ git.close();
+ }
+ }
+
@Ignore("Test takes way too long (~10 minutes) to be part of the standard suite")
@Test
public void testAddHugeFile() throws Exception {
@@ -75,7 +91,6 @@ public class HugeFileTest extends RepositoryTestCase {
rf.setLength(4429185024L);
rf.close();
measure("Created file");
- Git git = new Git(db);
git.add().addFilepattern("a.txt").call();
measure("Added file");
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/MergeCommandTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/MergeCommandTest.java
index cea8393ff7..cb3dbf1bc2 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/MergeCommandTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/MergeCommandTest.java
@@ -50,6 +50,7 @@ import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+import static org.junit.Assume.assumeTrue;
import java.io.File;
import java.util.Iterator;
@@ -96,11 +97,12 @@ public class MergeCommandTest extends RepositoryTestCase {
@Test
public void testMergeInItself() throws Exception {
- Git git = new Git(db);
- git.commit().setMessage("initial commit").call();
+ try (Git git = new Git(db)) {
+ git.commit().setMessage("initial commit").call();
- MergeResult result = git.merge().include(db.exactRef(Constants.HEAD)).call();
- assertEquals(MergeResult.MergeStatus.ALREADY_UP_TO_DATE, result.getMergeStatus());
+ MergeResult result = git.merge().include(db.exactRef(Constants.HEAD)).call();
+ assertEquals(MergeResult.MergeStatus.ALREADY_UP_TO_DATE, result.getMergeStatus());
+ }
// no reflog entry written by merge
assertEquals("commit (initial): initial commit",
db
@@ -112,14 +114,15 @@ public class MergeCommandTest extends RepositoryTestCase {
@Test
public void testAlreadyUpToDate() throws Exception {
- Git git = new Git(db);
- RevCommit first = git.commit().setMessage("initial commit").call();
- createBranch(first, "refs/heads/branch1");
-
- RevCommit second = git.commit().setMessage("second commit").call();
- MergeResult result = git.merge().include(db.exactRef("refs/heads/branch1")).call();
- assertEquals(MergeResult.MergeStatus.ALREADY_UP_TO_DATE, result.getMergeStatus());
- assertEquals(second, result.getNewHead());
+ try (Git git = new Git(db)) {
+ RevCommit first = git.commit().setMessage("initial commit").call();
+ createBranch(first, "refs/heads/branch1");
+
+ RevCommit second = git.commit().setMessage("second commit").call();
+ MergeResult result = git.merge().include(db.exactRef("refs/heads/branch1")).call();
+ assertEquals(MergeResult.MergeStatus.ALREADY_UP_TO_DATE, result.getMergeStatus());
+ assertEquals(second, result.getNewHead());
+ }
// no reflog entry written by merge
assertEquals("commit: second commit", db
.getReflogReader(Constants.HEAD).getLastEntry().getComment());
@@ -129,18 +132,19 @@ public class MergeCommandTest extends RepositoryTestCase {
@Test
public void testFastForward() throws Exception {
- Git git = new Git(db);
- RevCommit first = git.commit().setMessage("initial commit").call();
- createBranch(first, "refs/heads/branch1");
+ try (Git git = new Git(db)) {
+ RevCommit first = git.commit().setMessage("initial commit").call();
+ createBranch(first, "refs/heads/branch1");
- RevCommit second = git.commit().setMessage("second commit").call();
+ RevCommit second = git.commit().setMessage("second commit").call();
- checkoutBranch("refs/heads/branch1");
+ checkoutBranch("refs/heads/branch1");
- MergeResult result = git.merge().include(db.exactRef(R_HEADS + MASTER)).call();
+ MergeResult result = git.merge().include(db.exactRef(R_HEADS + MASTER)).call();
- assertEquals(MergeResult.MergeStatus.FAST_FORWARD, result.getMergeStatus());
- assertEquals(second, result.getNewHead());
+ assertEquals(MergeResult.MergeStatus.FAST_FORWARD, result.getMergeStatus());
+ assertEquals(second, result.getNewHead());
+ }
assertEquals("merge refs/heads/master: Fast-forward",
db.getReflogReader(Constants.HEAD).getLastEntry().getComment());
assertEquals("merge refs/heads/master: Fast-forward",
@@ -149,20 +153,21 @@ public class MergeCommandTest extends RepositoryTestCase {
@Test
public void testFastForwardNoCommit() throws Exception {
- Git git = new Git(db);
- RevCommit first = git.commit().setMessage("initial commit").call();
- createBranch(first, "refs/heads/branch1");
+ try (Git git = new Git(db)) {
+ RevCommit first = git.commit().setMessage("initial commit").call();
+ createBranch(first, "refs/heads/branch1");
- RevCommit second = git.commit().setMessage("second commit").call();
+ RevCommit second = git.commit().setMessage("second commit").call();
- checkoutBranch("refs/heads/branch1");
+ checkoutBranch("refs/heads/branch1");
- MergeResult result = git.merge().include(db.exactRef(R_HEADS + MASTER))
- .setCommit(false).call();
+ MergeResult result = git.merge().include(db.exactRef(R_HEADS + MASTER))
+ .setCommit(false).call();
- assertEquals(MergeResult.MergeStatus.FAST_FORWARD,
- result.getMergeStatus());
- assertEquals(second, result.getNewHead());
+ assertEquals(MergeResult.MergeStatus.FAST_FORWARD,
+ result.getMergeStatus());
+ assertEquals(second, result.getNewHead());
+ }
assertEquals("merge refs/heads/master: Fast-forward", db
.getReflogReader(Constants.HEAD).getLastEntry().getComment());
assertEquals("merge refs/heads/master: Fast-forward", db
@@ -171,29 +176,29 @@ public class MergeCommandTest extends RepositoryTestCase {
@Test
public void testFastForwardWithFiles() throws Exception {
- Git git = new Git(db);
-
- writeTrashFile("file1", "file1");
- git.add().addFilepattern("file1").call();
- RevCommit first = git.commit().setMessage("initial commit").call();
+ try (Git git = new Git(db)) {
+ writeTrashFile("file1", "file1");
+ git.add().addFilepattern("file1").call();
+ RevCommit first = git.commit().setMessage("initial commit").call();
- assertTrue(new File(db.getWorkTree(), "file1").exists());
- createBranch(first, "refs/heads/branch1");
+ assertTrue(new File(db.getWorkTree(), "file1").exists());
+ createBranch(first, "refs/heads/branch1");
- writeTrashFile("file2", "file2");
- git.add().addFilepattern("file2").call();
- RevCommit second = git.commit().setMessage("second commit").call();
- assertTrue(new File(db.getWorkTree(), "file2").exists());
+ writeTrashFile("file2", "file2");
+ git.add().addFilepattern("file2").call();
+ RevCommit second = git.commit().setMessage("second commit").call();
+ assertTrue(new File(db.getWorkTree(), "file2").exists());
- checkoutBranch("refs/heads/branch1");
- assertFalse(new File(db.getWorkTree(), "file2").exists());
+ checkoutBranch("refs/heads/branch1");
+ assertFalse(new File(db.getWorkTree(), "file2").exists());
- MergeResult result = git.merge().include(db.exactRef(R_HEADS + MASTER)).call();
+ MergeResult result = git.merge().include(db.exactRef(R_HEADS + MASTER)).call();
- assertTrue(new File(db.getWorkTree(), "file1").exists());
- assertTrue(new File(db.getWorkTree(), "file2").exists());
- assertEquals(MergeResult.MergeStatus.FAST_FORWARD, result.getMergeStatus());
- assertEquals(second, result.getNewHead());
+ assertTrue(new File(db.getWorkTree(), "file1").exists());
+ assertTrue(new File(db.getWorkTree(), "file2").exists());
+ assertEquals(MergeResult.MergeStatus.FAST_FORWARD, result.getMergeStatus());
+ assertEquals(second, result.getNewHead());
+ }
assertEquals("merge refs/heads/master: Fast-forward",
db.getReflogReader(Constants.HEAD).getLastEntry().getComment());
assertEquals("merge refs/heads/master: Fast-forward",
@@ -202,56 +207,56 @@ public class MergeCommandTest extends RepositoryTestCase {
@Test
public void testMultipleHeads() throws Exception {
- Git git = new Git(db);
-
- writeTrashFile("file1", "file1");
- git.add().addFilepattern("file1").call();
- RevCommit first = git.commit().setMessage("initial commit").call();
- createBranch(first, "refs/heads/branch1");
-
- writeTrashFile("file2", "file2");
- git.add().addFilepattern("file2").call();
- RevCommit second = git.commit().setMessage("second commit").call();
-
- writeTrashFile("file3", "file3");
- git.add().addFilepattern("file3").call();
- git.commit().setMessage("third commit").call();
-
- checkoutBranch("refs/heads/branch1");
- assertFalse(new File(db.getWorkTree(), "file2").exists());
- assertFalse(new File(db.getWorkTree(), "file3").exists());
-
- MergeCommand merge = git.merge();
- merge.include(second.getId());
- merge.include(db.exactRef(R_HEADS + MASTER));
- try {
- merge.call();
- fail("Expected exception not thrown when merging multiple heads");
- } catch (InvalidMergeHeadsException e) {
- // expected this exception
+ try (Git git = new Git(db)) {
+ writeTrashFile("file1", "file1");
+ git.add().addFilepattern("file1").call();
+ RevCommit first = git.commit().setMessage("initial commit").call();
+ createBranch(first, "refs/heads/branch1");
+
+ writeTrashFile("file2", "file2");
+ git.add().addFilepattern("file2").call();
+ RevCommit second = git.commit().setMessage("second commit").call();
+
+ writeTrashFile("file3", "file3");
+ git.add().addFilepattern("file3").call();
+ git.commit().setMessage("third commit").call();
+
+ checkoutBranch("refs/heads/branch1");
+ assertFalse(new File(db.getWorkTree(), "file2").exists());
+ assertFalse(new File(db.getWorkTree(), "file3").exists());
+
+ MergeCommand merge = git.merge();
+ merge.include(second.getId());
+ merge.include(db.exactRef(R_HEADS + MASTER));
+ try {
+ merge.call();
+ fail("Expected exception not thrown when merging multiple heads");
+ } catch (InvalidMergeHeadsException e) {
+ // expected this exception
+ }
}
}
@Theory
public void testMergeSuccessAllStrategies(MergeStrategy mergeStrategy)
throws Exception {
- Git git = new Git(db);
-
- RevCommit first = git.commit().setMessage("first").call();
- createBranch(first, "refs/heads/side");
-
- writeTrashFile("a", "a");
- git.add().addFilepattern("a").call();
- git.commit().setMessage("second").call();
-
- checkoutBranch("refs/heads/side");
- writeTrashFile("b", "b");
- git.add().addFilepattern("b").call();
- git.commit().setMessage("third").call();
-
- MergeResult result = git.merge().setStrategy(mergeStrategy)
- .include(db.exactRef(R_HEADS + MASTER)).call();
- assertEquals(MergeStatus.MERGED, result.getMergeStatus());
+ try (Git git = new Git(db)) {
+ RevCommit first = git.commit().setMessage("first").call();
+ createBranch(first, "refs/heads/side");
+
+ writeTrashFile("a", "a");
+ git.add().addFilepattern("a").call();
+ git.commit().setMessage("second").call();
+
+ checkoutBranch("refs/heads/side");
+ writeTrashFile("b", "b");
+ git.add().addFilepattern("b").call();
+ git.commit().setMessage("third").call();
+
+ MergeResult result = git.merge().setStrategy(mergeStrategy)
+ .include(db.exactRef(R_HEADS + MASTER)).call();
+ assertEquals(MergeStatus.MERGED, result.getMergeStatus());
+ }
assertEquals(
"merge refs/heads/master: Merge made by "
+ mergeStrategy.getName() + ".",
@@ -265,604 +270,604 @@ public class MergeCommandTest extends RepositoryTestCase {
@Theory
public void testMergeSuccessAllStrategiesNoCommit(
MergeStrategy mergeStrategy) throws Exception {
- Git git = new Git(db);
-
- RevCommit first = git.commit().setMessage("first").call();
- createBranch(first, "refs/heads/side");
-
- writeTrashFile("a", "a");
- git.add().addFilepattern("a").call();
- git.commit().setMessage("second").call();
-
- checkoutBranch("refs/heads/side");
- writeTrashFile("b", "b");
- git.add().addFilepattern("b").call();
- RevCommit thirdCommit = git.commit().setMessage("third").call();
-
- MergeResult result = git.merge().setStrategy(mergeStrategy)
- .setCommit(false)
- .include(db.exactRef(R_HEADS + MASTER)).call();
- assertEquals(MergeStatus.MERGED_NOT_COMMITTED, result.getMergeStatus());
- assertEquals(db.exactRef(Constants.HEAD).getTarget().getObjectId(),
- thirdCommit.getId());
+ try (Git git = new Git(db)) {
+ RevCommit first = git.commit().setMessage("first").call();
+ createBranch(first, "refs/heads/side");
+
+ writeTrashFile("a", "a");
+ git.add().addFilepattern("a").call();
+ git.commit().setMessage("second").call();
+
+ checkoutBranch("refs/heads/side");
+ writeTrashFile("b", "b");
+ git.add().addFilepattern("b").call();
+ RevCommit thirdCommit = git.commit().setMessage("third").call();
+
+ MergeResult result = git.merge().setStrategy(mergeStrategy)
+ .setCommit(false)
+ .include(db.exactRef(R_HEADS + MASTER)).call();
+ assertEquals(MergeStatus.MERGED_NOT_COMMITTED, result.getMergeStatus());
+ assertEquals(db.exactRef(Constants.HEAD).getTarget().getObjectId(),
+ thirdCommit.getId());
+ }
}
@Test
public void testContentMerge() throws Exception {
- Git git = new Git(db);
-
- writeTrashFile("a", "1\na\n3\n");
- writeTrashFile("b", "1\nb\n3\n");
- writeTrashFile("c/c/c", "1\nc\n3\n");
- git.add().addFilepattern("a").addFilepattern("b")
- .addFilepattern("c/c/c").call();
- RevCommit initialCommit = git.commit().setMessage("initial").call();
-
- createBranch(initialCommit, "refs/heads/side");
- checkoutBranch("refs/heads/side");
-
- writeTrashFile("a", "1\na(side)\n3\n");
- writeTrashFile("b", "1\nb(side)\n3\n");
- git.add().addFilepattern("a").addFilepattern("b").call();
- RevCommit secondCommit = git.commit().setMessage("side").call();
-
- assertEquals("1\nb(side)\n3\n", read(new File(db.getWorkTree(), "b")));
- checkoutBranch("refs/heads/master");
- assertEquals("1\nb\n3\n", read(new File(db.getWorkTree(), "b")));
-
- writeTrashFile("a", "1\na(main)\n3\n");
- writeTrashFile("c/c/c", "1\nc(main)\n3\n");
- git.add().addFilepattern("a").addFilepattern("c/c/c").call();
- git.commit().setMessage("main").call();
-
- MergeResult result = git.merge().include(secondCommit.getId())
- .setStrategy(MergeStrategy.RESOLVE).call();
- assertEquals(MergeStatus.CONFLICTING, result.getMergeStatus());
-
- assertEquals(
- "1\n<<<<<<< HEAD\na(main)\n=======\na(side)\n>>>>>>> 86503e7e397465588cc267b65d778538bffccb83\n3\n",
- read(new File(db.getWorkTree(), "a")));
- assertEquals("1\nb(side)\n3\n", read(new File(db.getWorkTree(), "b")));
- assertEquals("1\nc(main)\n3\n",
- read(new File(db.getWorkTree(), "c/c/c")));
-
- assertEquals(1, result.getConflicts().size());
- assertEquals(3, result.getConflicts().get("a")[0].length);
-
- assertEquals(RepositoryState.MERGING, db.getRepositoryState());
+ try (Git git = new Git(db)) {
+ writeTrashFile("a", "1\na\n3\n");
+ writeTrashFile("b", "1\nb\n3\n");
+ writeTrashFile("c/c/c", "1\nc\n3\n");
+ git.add().addFilepattern("a").addFilepattern("b")
+ .addFilepattern("c/c/c").call();
+ RevCommit initialCommit = git.commit().setMessage("initial").call();
+
+ createBranch(initialCommit, "refs/heads/side");
+ checkoutBranch("refs/heads/side");
+
+ writeTrashFile("a", "1\na(side)\n3\n");
+ writeTrashFile("b", "1\nb(side)\n3\n");
+ git.add().addFilepattern("a").addFilepattern("b").call();
+ RevCommit secondCommit = git.commit().setMessage("side").call();
+
+ assertEquals("1\nb(side)\n3\n", read(new File(db.getWorkTree(), "b")));
+ checkoutBranch("refs/heads/master");
+ assertEquals("1\nb\n3\n", read(new File(db.getWorkTree(), "b")));
+
+ writeTrashFile("a", "1\na(main)\n3\n");
+ writeTrashFile("c/c/c", "1\nc(main)\n3\n");
+ git.add().addFilepattern("a").addFilepattern("c/c/c").call();
+ git.commit().setMessage("main").call();
+
+ MergeResult result = git.merge().include(secondCommit.getId())
+ .setStrategy(MergeStrategy.RESOLVE).call();
+ assertEquals(MergeStatus.CONFLICTING, result.getMergeStatus());
+
+ assertEquals(
+ "1\n<<<<<<< HEAD\na(main)\n=======\na(side)\n>>>>>>> 86503e7e397465588cc267b65d778538bffccb83\n3\n",
+ read(new File(db.getWorkTree(), "a")));
+ assertEquals("1\nb(side)\n3\n", read(new File(db.getWorkTree(), "b")));
+ assertEquals("1\nc(main)\n3\n",
+ read(new File(db.getWorkTree(), "c/c/c")));
+
+ assertEquals(1, result.getConflicts().size());
+ assertEquals(3, result.getConflicts().get("a")[0].length);
+
+ assertEquals(RepositoryState.MERGING, db.getRepositoryState());
+ }
}
@Test
public void testMergeTag() throws Exception {
- Git git = new Git(db);
-
- writeTrashFile("a", "a");
- git.add().addFilepattern("a").call();
- RevCommit initialCommit = git.commit().setMessage("initial").call();
+ try (Git git = new Git(db)) {
+ writeTrashFile("a", "a");
+ git.add().addFilepattern("a").call();
+ RevCommit initialCommit = git.commit().setMessage("initial").call();
- createBranch(initialCommit, "refs/heads/side");
- checkoutBranch("refs/heads/side");
+ createBranch(initialCommit, "refs/heads/side");
+ checkoutBranch("refs/heads/side");
- writeTrashFile("b", "b");
- git.add().addFilepattern("b").call();
- RevCommit secondCommit = git.commit().setMessage("side").call();
- Ref tag = git.tag().setAnnotated(true).setMessage("my tag 01")
- .setName("tag01").setObjectId(secondCommit).call();
+ writeTrashFile("b", "b");
+ git.add().addFilepattern("b").call();
+ RevCommit secondCommit = git.commit().setMessage("side").call();
+ Ref tag = git.tag().setAnnotated(true).setMessage("my tag 01")
+ .setName("tag01").setObjectId(secondCommit).call();
- checkoutBranch("refs/heads/master");
+ checkoutBranch("refs/heads/master");
- writeTrashFile("a", "a2");
- git.add().addFilepattern("a").call();
- git.commit().setMessage("main").call();
+ writeTrashFile("a", "a2");
+ git.add().addFilepattern("a").call();
+ git.commit().setMessage("main").call();
- MergeResult result = git.merge().include(tag).setStrategy(MergeStrategy.RESOLVE).call();
- assertEquals(MergeStatus.MERGED, result.getMergeStatus());
+ MergeResult result = git.merge().include(tag).setStrategy(MergeStrategy.RESOLVE).call();
+ assertEquals(MergeStatus.MERGED, result.getMergeStatus());
+ }
}
@Test
public void testMergeMessage() throws Exception {
- Git git = new Git(db);
-
- writeTrashFile("a", "1\na\n3\n");
- git.add().addFilepattern("a").call();
- RevCommit initialCommit = git.commit().setMessage("initial").call();
+ try (Git git = new Git(db)) {
+ writeTrashFile("a", "1\na\n3\n");
+ git.add().addFilepattern("a").call();
+ RevCommit initialCommit = git.commit().setMessage("initial").call();
- createBranch(initialCommit, "refs/heads/side");
- checkoutBranch("refs/heads/side");
+ createBranch(initialCommit, "refs/heads/side");
+ checkoutBranch("refs/heads/side");
- writeTrashFile("a", "1\na(side)\n3\n");
- git.add().addFilepattern("a").call();
- git.commit().setMessage("side").call();
+ writeTrashFile("a", "1\na(side)\n3\n");
+ git.add().addFilepattern("a").call();
+ git.commit().setMessage("side").call();
- checkoutBranch("refs/heads/master");
+ checkoutBranch("refs/heads/master");
- writeTrashFile("a", "1\na(main)\n3\n");
- git.add().addFilepattern("a").call();
- git.commit().setMessage("main").call();
+ writeTrashFile("a", "1\na(main)\n3\n");
+ git.add().addFilepattern("a").call();
+ git.commit().setMessage("main").call();
- Ref sideBranch = db.exactRef("refs/heads/side");
+ Ref sideBranch = db.exactRef("refs/heads/side");
- git.merge().include(sideBranch)
- .setStrategy(MergeStrategy.RESOLVE).call();
+ git.merge().include(sideBranch)
+ .setStrategy(MergeStrategy.RESOLVE).call();
- assertEquals("Merge branch 'side'\n\nConflicts:\n\ta\n",
- db.readMergeCommitMsg());
+ assertEquals("Merge branch 'side'\n\nConflicts:\n\ta\n",
+ db.readMergeCommitMsg());
+ }
}
@Test
public void testMergeNonVersionedPaths() throws Exception {
- Git git = new Git(db);
-
- writeTrashFile("a", "1\na\n3\n");
- writeTrashFile("b", "1\nb\n3\n");
- writeTrashFile("c/c/c", "1\nc\n3\n");
- git.add().addFilepattern("a").addFilepattern("b")
- .addFilepattern("c/c/c").call();
- RevCommit initialCommit = git.commit().setMessage("initial").call();
-
- createBranch(initialCommit, "refs/heads/side");
- checkoutBranch("refs/heads/side");
-
- writeTrashFile("a", "1\na(side)\n3\n");
- writeTrashFile("b", "1\nb(side)\n3\n");
- git.add().addFilepattern("a").addFilepattern("b").call();
- RevCommit secondCommit = git.commit().setMessage("side").call();
-
- assertEquals("1\nb(side)\n3\n", read(new File(db.getWorkTree(), "b")));
- checkoutBranch("refs/heads/master");
- assertEquals("1\nb\n3\n", read(new File(db.getWorkTree(), "b")));
-
- writeTrashFile("a", "1\na(main)\n3\n");
- writeTrashFile("c/c/c", "1\nc(main)\n3\n");
- git.add().addFilepattern("a").addFilepattern("c/c/c").call();
- git.commit().setMessage("main").call();
-
- writeTrashFile("d", "1\nd\n3\n");
- assertTrue(new File(db.getWorkTree(), "e").mkdir());
-
- MergeResult result = git.merge().include(secondCommit.getId())
- .setStrategy(MergeStrategy.RESOLVE).call();
- assertEquals(MergeStatus.CONFLICTING, result.getMergeStatus());
-
- assertEquals(
- "1\n<<<<<<< HEAD\na(main)\n=======\na(side)\n>>>>>>> 86503e7e397465588cc267b65d778538bffccb83\n3\n",
- read(new File(db.getWorkTree(), "a")));
- assertEquals("1\nb(side)\n3\n", read(new File(db.getWorkTree(), "b")));
- assertEquals("1\nc(main)\n3\n",
- read(new File(db.getWorkTree(), "c/c/c")));
- assertEquals("1\nd\n3\n", read(new File(db.getWorkTree(), "d")));
- File dir = new File(db.getWorkTree(), "e");
- assertTrue(dir.isDirectory());
-
- assertEquals(1, result.getConflicts().size());
- assertEquals(3, result.getConflicts().get("a")[0].length);
-
- assertEquals(RepositoryState.MERGING, db.getRepositoryState());
+ try (Git git = new Git(db)) {
+ writeTrashFile("a", "1\na\n3\n");
+ writeTrashFile("b", "1\nb\n3\n");
+ writeTrashFile("c/c/c", "1\nc\n3\n");
+ git.add().addFilepattern("a").addFilepattern("b")
+ .addFilepattern("c/c/c").call();
+ RevCommit initialCommit = git.commit().setMessage("initial").call();
+
+ createBranch(initialCommit, "refs/heads/side");
+ checkoutBranch("refs/heads/side");
+
+ writeTrashFile("a", "1\na(side)\n3\n");
+ writeTrashFile("b", "1\nb(side)\n3\n");
+ git.add().addFilepattern("a").addFilepattern("b").call();
+ RevCommit secondCommit = git.commit().setMessage("side").call();
+
+ assertEquals("1\nb(side)\n3\n", read(new File(db.getWorkTree(), "b")));
+ checkoutBranch("refs/heads/master");
+ assertEquals("1\nb\n3\n", read(new File(db.getWorkTree(), "b")));
+
+ writeTrashFile("a", "1\na(main)\n3\n");
+ writeTrashFile("c/c/c", "1\nc(main)\n3\n");
+ git.add().addFilepattern("a").addFilepattern("c/c/c").call();
+ git.commit().setMessage("main").call();
+
+ writeTrashFile("d", "1\nd\n3\n");
+ assertTrue(new File(db.getWorkTree(), "e").mkdir());
+
+ MergeResult result = git.merge().include(secondCommit.getId())
+ .setStrategy(MergeStrategy.RESOLVE).call();
+ assertEquals(MergeStatus.CONFLICTING, result.getMergeStatus());
+
+ assertEquals(
+ "1\n<<<<<<< HEAD\na(main)\n=======\na(side)\n>>>>>>> 86503e7e397465588cc267b65d778538bffccb83\n3\n",
+ read(new File(db.getWorkTree(), "a")));
+ assertEquals("1\nb(side)\n3\n", read(new File(db.getWorkTree(), "b")));
+ assertEquals("1\nc(main)\n3\n",
+ read(new File(db.getWorkTree(), "c/c/c")));
+ assertEquals("1\nd\n3\n", read(new File(db.getWorkTree(), "d")));
+ File dir = new File(db.getWorkTree(), "e");
+ assertTrue(dir.isDirectory());
+
+ assertEquals(1, result.getConflicts().size());
+ assertEquals(3, result.getConflicts().get("a")[0].length);
+
+ assertEquals(RepositoryState.MERGING, db.getRepositoryState());
+ }
}
@Test
public void testMultipleCreations() throws Exception {
- Git git = new Git(db);
-
- writeTrashFile("a", "1\na\n3\n");
- git.add().addFilepattern("a").call();
- RevCommit initialCommit = git.commit().setMessage("initial").call();
+ try (Git git = new Git(db)) {
+ writeTrashFile("a", "1\na\n3\n");
+ git.add().addFilepattern("a").call();
+ RevCommit initialCommit = git.commit().setMessage("initial").call();
- createBranch(initialCommit, "refs/heads/side");
- checkoutBranch("refs/heads/side");
+ createBranch(initialCommit, "refs/heads/side");
+ checkoutBranch("refs/heads/side");
- writeTrashFile("b", "1\nb(side)\n3\n");
- git.add().addFilepattern("b").call();
- RevCommit secondCommit = git.commit().setMessage("side").call();
+ writeTrashFile("b", "1\nb(side)\n3\n");
+ git.add().addFilepattern("b").call();
+ RevCommit secondCommit = git.commit().setMessage("side").call();
- checkoutBranch("refs/heads/master");
+ checkoutBranch("refs/heads/master");
- writeTrashFile("b", "1\nb(main)\n3\n");
- git.add().addFilepattern("b").call();
- git.commit().setMessage("main").call();
+ writeTrashFile("b", "1\nb(main)\n3\n");
+ git.add().addFilepattern("b").call();
+ git.commit().setMessage("main").call();
- MergeResult result = git.merge().include(secondCommit.getId())
- .setStrategy(MergeStrategy.RESOLVE).call();
- assertEquals(MergeStatus.CONFLICTING, result.getMergeStatus());
+ MergeResult result = git.merge().include(secondCommit.getId())
+ .setStrategy(MergeStrategy.RESOLVE).call();
+ assertEquals(MergeStatus.CONFLICTING, result.getMergeStatus());
+ }
}
@Test
public void testMultipleCreationsSameContent() throws Exception {
- Git git = new Git(db);
-
- writeTrashFile("a", "1\na\n3\n");
- git.add().addFilepattern("a").call();
- RevCommit initialCommit = git.commit().setMessage("initial").call();
-
- createBranch(initialCommit, "refs/heads/side");
- checkoutBranch("refs/heads/side");
-
- writeTrashFile("b", "1\nb(1)\n3\n");
- git.add().addFilepattern("b").call();
- RevCommit secondCommit = git.commit().setMessage("side").call();
-
- checkoutBranch("refs/heads/master");
-
- writeTrashFile("b", "1\nb(1)\n3\n");
- git.add().addFilepattern("b").call();
- git.commit().setMessage("main").call();
-
- MergeResult result = git.merge().include(secondCommit.getId())
- .setStrategy(MergeStrategy.RESOLVE).call();
- assertEquals(MergeStatus.MERGED, result.getMergeStatus());
- assertEquals("1\nb(1)\n3\n", read(new File(db.getWorkTree(), "b")));
- assertEquals("merge " + secondCommit.getId().getName()
- + ": Merge made by resolve.", db
- .getReflogReader(Constants.HEAD)
- .getLastEntry().getComment());
- assertEquals("merge " + secondCommit.getId().getName()
- + ": Merge made by resolve.", db
- .getReflogReader(db.getBranch())
- .getLastEntry().getComment());
+ try (Git git = new Git(db)) {
+ writeTrashFile("a", "1\na\n3\n");
+ git.add().addFilepattern("a").call();
+ RevCommit initialCommit = git.commit().setMessage("initial").call();
+
+ createBranch(initialCommit, "refs/heads/side");
+ checkoutBranch("refs/heads/side");
+
+ writeTrashFile("b", "1\nb(1)\n3\n");
+ git.add().addFilepattern("b").call();
+ RevCommit secondCommit = git.commit().setMessage("side").call();
+
+ checkoutBranch("refs/heads/master");
+
+ writeTrashFile("b", "1\nb(1)\n3\n");
+ git.add().addFilepattern("b").call();
+ git.commit().setMessage("main").call();
+
+ MergeResult result = git.merge().include(secondCommit.getId())
+ .setStrategy(MergeStrategy.RESOLVE).call();
+ assertEquals(MergeStatus.MERGED, result.getMergeStatus());
+ assertEquals("1\nb(1)\n3\n", read(new File(db.getWorkTree(), "b")));
+ assertEquals("merge " + secondCommit.getId().getName()
+ + ": Merge made by resolve.", db
+ .getReflogReader(Constants.HEAD)
+ .getLastEntry().getComment());
+ assertEquals("merge " + secondCommit.getId().getName()
+ + ": Merge made by resolve.", db
+ .getReflogReader(db.getBranch())
+ .getLastEntry().getComment());
+ }
}
@Test
public void testSuccessfulContentMerge() throws Exception {
- Git git = new Git(db);
-
- writeTrashFile("a", "1\na\n3\n");
- writeTrashFile("b", "1\nb\n3\n");
- writeTrashFile("c/c/c", "1\nc\n3\n");
- git.add().addFilepattern("a").addFilepattern("b")
- .addFilepattern("c/c/c").call();
- RevCommit initialCommit = git.commit().setMessage("initial").call();
-
- createBranch(initialCommit, "refs/heads/side");
- checkoutBranch("refs/heads/side");
-
- writeTrashFile("a", "1(side)\na\n3\n");
- writeTrashFile("b", "1\nb(side)\n3\n");
- git.add().addFilepattern("a").addFilepattern("b").call();
- RevCommit secondCommit = git.commit().setMessage("side").call();
-
- assertEquals("1\nb(side)\n3\n", read(new File(db.getWorkTree(), "b")));
- checkoutBranch("refs/heads/master");
- assertEquals("1\nb\n3\n", read(new File(db.getWorkTree(), "b")));
-
- writeTrashFile("a", "1\na\n3(main)\n");
- writeTrashFile("c/c/c", "1\nc(main)\n3\n");
- git.add().addFilepattern("a").addFilepattern("c/c/c").call();
- RevCommit thirdCommit = git.commit().setMessage("main").call();
-
- MergeResult result = git.merge().include(secondCommit.getId())
- .setStrategy(MergeStrategy.RESOLVE).call();
- assertEquals(MergeStatus.MERGED, result.getMergeStatus());
-
- assertEquals("1(side)\na\n3(main)\n", read(new File(db.getWorkTree(),
- "a")));
- assertEquals("1\nb(side)\n3\n", read(new File(db.getWorkTree(), "b")));
- assertEquals("1\nc(main)\n3\n", read(new File(db.getWorkTree(),
- "c/c/c")));
-
- assertEquals(null, result.getConflicts());
-
- assertEquals(2, result.getMergedCommits().length);
- assertEquals(thirdCommit, result.getMergedCommits()[0]);
- assertEquals(secondCommit, result.getMergedCommits()[1]);
-
- Iterator<RevCommit> it = git.log().call().iterator();
- RevCommit newHead = it.next();
- assertEquals(newHead, result.getNewHead());
- assertEquals(2, newHead.getParentCount());
- assertEquals(thirdCommit, newHead.getParent(0));
- assertEquals(secondCommit, newHead.getParent(1));
- assertEquals(
- "Merge commit '3fa334456d236a92db020289fe0bf481d91777b4'",
- newHead.getFullMessage());
- // @TODO fix me
- assertEquals(RepositoryState.SAFE, db.getRepositoryState());
- // test index state
+ try (Git git = new Git(db)) {
+ writeTrashFile("a", "1\na\n3\n");
+ writeTrashFile("b", "1\nb\n3\n");
+ writeTrashFile("c/c/c", "1\nc\n3\n");
+ git.add().addFilepattern("a").addFilepattern("b")
+ .addFilepattern("c/c/c").call();
+ RevCommit initialCommit = git.commit().setMessage("initial").call();
+
+ createBranch(initialCommit, "refs/heads/side");
+ checkoutBranch("refs/heads/side");
+
+ writeTrashFile("a", "1(side)\na\n3\n");
+ writeTrashFile("b", "1\nb(side)\n3\n");
+ git.add().addFilepattern("a").addFilepattern("b").call();
+ RevCommit secondCommit = git.commit().setMessage("side").call();
+
+ assertEquals("1\nb(side)\n3\n", read(new File(db.getWorkTree(), "b")));
+ checkoutBranch("refs/heads/master");
+ assertEquals("1\nb\n3\n", read(new File(db.getWorkTree(), "b")));
+
+ writeTrashFile("a", "1\na\n3(main)\n");
+ writeTrashFile("c/c/c", "1\nc(main)\n3\n");
+ git.add().addFilepattern("a").addFilepattern("c/c/c").call();
+ RevCommit thirdCommit = git.commit().setMessage("main").call();
+
+ MergeResult result = git.merge().include(secondCommit.getId())
+ .setStrategy(MergeStrategy.RESOLVE).call();
+ assertEquals(MergeStatus.MERGED, result.getMergeStatus());
+
+ assertEquals("1(side)\na\n3(main)\n", read(new File(db.getWorkTree(),
+ "a")));
+ assertEquals("1\nb(side)\n3\n", read(new File(db.getWorkTree(), "b")));
+ assertEquals("1\nc(main)\n3\n", read(new File(db.getWorkTree(),
+ "c/c/c")));
+
+ assertEquals(null, result.getConflicts());
+
+ assertEquals(2, result.getMergedCommits().length);
+ assertEquals(thirdCommit, result.getMergedCommits()[0]);
+ assertEquals(secondCommit, result.getMergedCommits()[1]);
+
+ Iterator<RevCommit> it = git.log().call().iterator();
+ RevCommit newHead = it.next();
+ assertEquals(newHead, result.getNewHead());
+ assertEquals(2, newHead.getParentCount());
+ assertEquals(thirdCommit, newHead.getParent(0));
+ assertEquals(secondCommit, newHead.getParent(1));
+ assertEquals(
+ "Merge commit '3fa334456d236a92db020289fe0bf481d91777b4'",
+ newHead.getFullMessage());
+ // @TODO fix me
+ assertEquals(RepositoryState.SAFE, db.getRepositoryState());
+ // test index state
+ }
}
@Test
public void testSuccessfulContentMergeNoCommit() throws Exception {
- Git git = new Git(db);
-
- writeTrashFile("a", "1\na\n3\n");
- writeTrashFile("b", "1\nb\n3\n");
- writeTrashFile("c/c/c", "1\nc\n3\n");
- git.add().addFilepattern("a").addFilepattern("b")
- .addFilepattern("c/c/c").call();
- RevCommit initialCommit = git.commit().setMessage("initial").call();
-
- createBranch(initialCommit, "refs/heads/side");
- checkoutBranch("refs/heads/side");
-
- writeTrashFile("a", "1(side)\na\n3\n");
- writeTrashFile("b", "1\nb(side)\n3\n");
- git.add().addFilepattern("a").addFilepattern("b").call();
- RevCommit secondCommit = git.commit().setMessage("side").call();
-
- assertEquals("1\nb(side)\n3\n", read(new File(db.getWorkTree(), "b")));
- checkoutBranch("refs/heads/master");
- assertEquals("1\nb\n3\n", read(new File(db.getWorkTree(), "b")));
-
- writeTrashFile("a", "1\na\n3(main)\n");
- writeTrashFile("c/c/c", "1\nc(main)\n3\n");
- git.add().addFilepattern("a").addFilepattern("c/c/c").call();
- RevCommit thirdCommit = git.commit().setMessage("main").call();
-
- MergeResult result = git.merge().include(secondCommit.getId())
- .setCommit(false)
- .setStrategy(MergeStrategy.RESOLVE).call();
- assertEquals(MergeStatus.MERGED_NOT_COMMITTED, result.getMergeStatus());
- assertEquals(db.exactRef(Constants.HEAD).getTarget().getObjectId(),
- thirdCommit.getId());
-
- assertEquals("1(side)\na\n3(main)\n", read(new File(db.getWorkTree(),
- "a")));
- assertEquals("1\nb(side)\n3\n", read(new File(db.getWorkTree(), "b")));
- assertEquals("1\nc(main)\n3\n",
- read(new File(db.getWorkTree(), "c/c/c")));
-
- assertEquals(null, result.getConflicts());
-
- assertEquals(2, result.getMergedCommits().length);
- assertEquals(thirdCommit, result.getMergedCommits()[0]);
- assertEquals(secondCommit, result.getMergedCommits()[1]);
- assertNull(result.getNewHead());
- assertEquals(RepositoryState.MERGING_RESOLVED, db.getRepositoryState());
+ try (Git git = new Git(db)) {
+ writeTrashFile("a", "1\na\n3\n");
+ writeTrashFile("b", "1\nb\n3\n");
+ writeTrashFile("c/c/c", "1\nc\n3\n");
+ git.add().addFilepattern("a").addFilepattern("b")
+ .addFilepattern("c/c/c").call();
+ RevCommit initialCommit = git.commit().setMessage("initial").call();
+
+ createBranch(initialCommit, "refs/heads/side");
+ checkoutBranch("refs/heads/side");
+
+ writeTrashFile("a", "1(side)\na\n3\n");
+ writeTrashFile("b", "1\nb(side)\n3\n");
+ git.add().addFilepattern("a").addFilepattern("b").call();
+ RevCommit secondCommit = git.commit().setMessage("side").call();
+
+ assertEquals("1\nb(side)\n3\n", read(new File(db.getWorkTree(), "b")));
+ checkoutBranch("refs/heads/master");
+ assertEquals("1\nb\n3\n", read(new File(db.getWorkTree(), "b")));
+
+ writeTrashFile("a", "1\na\n3(main)\n");
+ writeTrashFile("c/c/c", "1\nc(main)\n3\n");
+ git.add().addFilepattern("a").addFilepattern("c/c/c").call();
+ RevCommit thirdCommit = git.commit().setMessage("main").call();
+
+ MergeResult result = git.merge().include(secondCommit.getId())
+ .setCommit(false)
+ .setStrategy(MergeStrategy.RESOLVE).call();
+ assertEquals(MergeStatus.MERGED_NOT_COMMITTED, result.getMergeStatus());
+ assertEquals(db.exactRef(Constants.HEAD).getTarget().getObjectId(),
+ thirdCommit.getId());
+
+ assertEquals("1(side)\na\n3(main)\n", read(new File(db.getWorkTree(),
+ "a")));
+ assertEquals("1\nb(side)\n3\n", read(new File(db.getWorkTree(), "b")));
+ assertEquals("1\nc(main)\n3\n",
+ read(new File(db.getWorkTree(), "c/c/c")));
+
+ assertEquals(null, result.getConflicts());
+
+ assertEquals(2, result.getMergedCommits().length);
+ assertEquals(thirdCommit, result.getMergedCommits()[0]);
+ assertEquals(secondCommit, result.getMergedCommits()[1]);
+ assertNull(result.getNewHead());
+ assertEquals(RepositoryState.MERGING_RESOLVED, db.getRepositoryState());
+ }
}
@Test
public void testSuccessfulContentMergeAndDirtyworkingTree()
throws Exception {
- Git git = new Git(db);
-
- writeTrashFile("a", "1\na\n3\n");
- writeTrashFile("b", "1\nb\n3\n");
- writeTrashFile("d", "1\nd\n3\n");
- writeTrashFile("c/c/c", "1\nc\n3\n");
- git.add().addFilepattern("a").addFilepattern("b")
- .addFilepattern("c/c/c").addFilepattern("d").call();
- RevCommit initialCommit = git.commit().setMessage("initial").call();
-
- createBranch(initialCommit, "refs/heads/side");
- checkoutBranch("refs/heads/side");
-
- writeTrashFile("a", "1(side)\na\n3\n");
- writeTrashFile("b", "1\nb(side)\n3\n");
- git.add().addFilepattern("a").addFilepattern("b").call();
- RevCommit secondCommit = git.commit().setMessage("side").call();
-
- assertEquals("1\nb(side)\n3\n", read(new File(db.getWorkTree(), "b")));
- checkoutBranch("refs/heads/master");
- assertEquals("1\nb\n3\n", read(new File(db.getWorkTree(), "b")));
-
- writeTrashFile("a", "1\na\n3(main)\n");
- writeTrashFile("c/c/c", "1\nc(main)\n3\n");
- git.add().addFilepattern("a").addFilepattern("c/c/c").call();
- RevCommit thirdCommit = git.commit().setMessage("main").call();
-
- writeTrashFile("d", "--- dirty ---");
- MergeResult result = git.merge().include(secondCommit.getId())
- .setStrategy(MergeStrategy.RESOLVE).call();
- assertEquals(MergeStatus.MERGED, result.getMergeStatus());
-
- assertEquals("1(side)\na\n3(main)\n", read(new File(db.getWorkTree(),
- "a")));
- assertEquals("1\nb(side)\n3\n", read(new File(db.getWorkTree(), "b")));
- assertEquals("1\nc(main)\n3\n", read(new File(db.getWorkTree(),
- "c/c/c")));
- assertEquals("--- dirty ---", read(new File(db.getWorkTree(), "d")));
-
- assertEquals(null, result.getConflicts());
-
- assertEquals(2, result.getMergedCommits().length);
- assertEquals(thirdCommit, result.getMergedCommits()[0]);
- assertEquals(secondCommit, result.getMergedCommits()[1]);
-
- Iterator<RevCommit> it = git.log().call().iterator();
- RevCommit newHead = it.next();
- assertEquals(newHead, result.getNewHead());
- assertEquals(2, newHead.getParentCount());
- assertEquals(thirdCommit, newHead.getParent(0));
- assertEquals(secondCommit, newHead.getParent(1));
- assertEquals(
- "Merge commit '064d54d98a4cdb0fed1802a21c656bfda67fe879'",
- newHead.getFullMessage());
-
- assertEquals(RepositoryState.SAFE, db.getRepositoryState());
+ try (Git git = new Git(db)) {
+ writeTrashFile("a", "1\na\n3\n");
+ writeTrashFile("b", "1\nb\n3\n");
+ writeTrashFile("d", "1\nd\n3\n");
+ writeTrashFile("c/c/c", "1\nc\n3\n");
+ git.add().addFilepattern("a").addFilepattern("b")
+ .addFilepattern("c/c/c").addFilepattern("d").call();
+ RevCommit initialCommit = git.commit().setMessage("initial").call();
+
+ createBranch(initialCommit, "refs/heads/side");
+ checkoutBranch("refs/heads/side");
+
+ writeTrashFile("a", "1(side)\na\n3\n");
+ writeTrashFile("b", "1\nb(side)\n3\n");
+ git.add().addFilepattern("a").addFilepattern("b").call();
+ RevCommit secondCommit = git.commit().setMessage("side").call();
+
+ assertEquals("1\nb(side)\n3\n", read(new File(db.getWorkTree(), "b")));
+ checkoutBranch("refs/heads/master");
+ assertEquals("1\nb\n3\n", read(new File(db.getWorkTree(), "b")));
+
+ writeTrashFile("a", "1\na\n3(main)\n");
+ writeTrashFile("c/c/c", "1\nc(main)\n3\n");
+ git.add().addFilepattern("a").addFilepattern("c/c/c").call();
+ RevCommit thirdCommit = git.commit().setMessage("main").call();
+
+ writeTrashFile("d", "--- dirty ---");
+ MergeResult result = git.merge().include(secondCommit.getId())
+ .setStrategy(MergeStrategy.RESOLVE).call();
+ assertEquals(MergeStatus.MERGED, result.getMergeStatus());
+
+ assertEquals("1(side)\na\n3(main)\n", read(new File(db.getWorkTree(),
+ "a")));
+ assertEquals("1\nb(side)\n3\n", read(new File(db.getWorkTree(), "b")));
+ assertEquals("1\nc(main)\n3\n", read(new File(db.getWorkTree(),
+ "c/c/c")));
+ assertEquals("--- dirty ---", read(new File(db.getWorkTree(), "d")));
+
+ assertEquals(null, result.getConflicts());
+
+ assertEquals(2, result.getMergedCommits().length);
+ assertEquals(thirdCommit, result.getMergedCommits()[0]);
+ assertEquals(secondCommit, result.getMergedCommits()[1]);
+
+ Iterator<RevCommit> it = git.log().call().iterator();
+ RevCommit newHead = it.next();
+ assertEquals(newHead, result.getNewHead());
+ assertEquals(2, newHead.getParentCount());
+ assertEquals(thirdCommit, newHead.getParent(0));
+ assertEquals(secondCommit, newHead.getParent(1));
+ assertEquals(
+ "Merge commit '064d54d98a4cdb0fed1802a21c656bfda67fe879'",
+ newHead.getFullMessage());
+
+ assertEquals(RepositoryState.SAFE, db.getRepositoryState());
+ }
}
@Test
public void testSingleDeletion() throws Exception {
- Git git = new Git(db);
-
- writeTrashFile("a", "1\na\n3\n");
- writeTrashFile("b", "1\nb\n3\n");
- writeTrashFile("d", "1\nd\n3\n");
- writeTrashFile("c/c/c", "1\nc\n3\n");
- git.add().addFilepattern("a").addFilepattern("b")
- .addFilepattern("c/c/c").addFilepattern("d").call();
- RevCommit initialCommit = git.commit().setMessage("initial").call();
-
- createBranch(initialCommit, "refs/heads/side");
- checkoutBranch("refs/heads/side");
-
- assertTrue(new File(db.getWorkTree(), "b").delete());
- git.add().addFilepattern("b").setUpdate(true).call();
- RevCommit secondCommit = git.commit().setMessage("side").call();
-
- assertFalse(new File(db.getWorkTree(), "b").exists());
- checkoutBranch("refs/heads/master");
- assertTrue(new File(db.getWorkTree(), "b").exists());
-
- writeTrashFile("a", "1\na\n3(main)\n");
- writeTrashFile("c/c/c", "1\nc(main)\n3\n");
- git.add().addFilepattern("a").addFilepattern("c/c/c").call();
- RevCommit thirdCommit = git.commit().setMessage("main").call();
-
- // We are merging a deletion into our branch
- MergeResult result = git.merge().include(secondCommit.getId())
- .setStrategy(MergeStrategy.RESOLVE).call();
- assertEquals(MergeStatus.MERGED, result.getMergeStatus());
-
- assertEquals("1\na\n3(main)\n", read(new File(db.getWorkTree(), "a")));
- assertFalse(new File(db.getWorkTree(), "b").exists());
- assertEquals("1\nc(main)\n3\n",
- read(new File(db.getWorkTree(), "c/c/c")));
- assertEquals("1\nd\n3\n", read(new File(db.getWorkTree(), "d")));
-
- // Do the opposite, be on a branch where we have deleted a file and
- // merge in a old commit where this file was not deleted
- checkoutBranch("refs/heads/side");
- assertFalse(new File(db.getWorkTree(), "b").exists());
-
- result = git.merge().include(thirdCommit.getId())
- .setStrategy(MergeStrategy.RESOLVE).call();
- assertEquals(MergeStatus.MERGED, result.getMergeStatus());
-
- assertEquals("1\na\n3(main)\n", read(new File(db.getWorkTree(), "a")));
- assertFalse(new File(db.getWorkTree(), "b").exists());
- assertEquals("1\nc(main)\n3\n",
- read(new File(db.getWorkTree(), "c/c/c")));
- assertEquals("1\nd\n3\n", read(new File(db.getWorkTree(), "d")));
+ try (Git git = new Git(db)) {
+ writeTrashFile("a", "1\na\n3\n");
+ writeTrashFile("b", "1\nb\n3\n");
+ writeTrashFile("d", "1\nd\n3\n");
+ writeTrashFile("c/c/c", "1\nc\n3\n");
+ git.add().addFilepattern("a").addFilepattern("b")
+ .addFilepattern("c/c/c").addFilepattern("d").call();
+ RevCommit initialCommit = git.commit().setMessage("initial").call();
+
+ createBranch(initialCommit, "refs/heads/side");
+ checkoutBranch("refs/heads/side");
+
+ assertTrue(new File(db.getWorkTree(), "b").delete());
+ git.add().addFilepattern("b").setUpdate(true).call();
+ RevCommit secondCommit = git.commit().setMessage("side").call();
+
+ assertFalse(new File(db.getWorkTree(), "b").exists());
+ checkoutBranch("refs/heads/master");
+ assertTrue(new File(db.getWorkTree(), "b").exists());
+
+ writeTrashFile("a", "1\na\n3(main)\n");
+ writeTrashFile("c/c/c", "1\nc(main)\n3\n");
+ git.add().addFilepattern("a").addFilepattern("c/c/c").call();
+ RevCommit thirdCommit = git.commit().setMessage("main").call();
+
+ // We are merging a deletion into our branch
+ MergeResult result = git.merge().include(secondCommit.getId())
+ .setStrategy(MergeStrategy.RESOLVE).call();
+ assertEquals(MergeStatus.MERGED, result.getMergeStatus());
+
+ assertEquals("1\na\n3(main)\n", read(new File(db.getWorkTree(), "a")));
+ assertFalse(new File(db.getWorkTree(), "b").exists());
+ assertEquals("1\nc(main)\n3\n",
+ read(new File(db.getWorkTree(), "c/c/c")));
+ assertEquals("1\nd\n3\n", read(new File(db.getWorkTree(), "d")));
+
+ // Do the opposite, be on a branch where we have deleted a file and
+ // merge in a old commit where this file was not deleted
+ checkoutBranch("refs/heads/side");
+ assertFalse(new File(db.getWorkTree(), "b").exists());
+
+ result = git.merge().include(thirdCommit.getId())
+ .setStrategy(MergeStrategy.RESOLVE).call();
+ assertEquals(MergeStatus.MERGED, result.getMergeStatus());
+
+ assertEquals("1\na\n3(main)\n", read(new File(db.getWorkTree(), "a")));
+ assertFalse(new File(db.getWorkTree(), "b").exists());
+ assertEquals("1\nc(main)\n3\n",
+ read(new File(db.getWorkTree(), "c/c/c")));
+ assertEquals("1\nd\n3\n", read(new File(db.getWorkTree(), "d")));
+ }
}
@Test
public void testMultipleDeletions() throws Exception {
- Git git = new Git(db);
-
- writeTrashFile("a", "1\na\n3\n");
- git.add().addFilepattern("a").call();
- RevCommit initialCommit = git.commit().setMessage("initial").call();
-
- createBranch(initialCommit, "refs/heads/side");
- checkoutBranch("refs/heads/side");
-
- assertTrue(new File(db.getWorkTree(), "a").delete());
- git.add().addFilepattern("a").setUpdate(true).call();
- RevCommit secondCommit = git.commit().setMessage("side").call();
-
- assertFalse(new File(db.getWorkTree(), "a").exists());
- checkoutBranch("refs/heads/master");
- assertTrue(new File(db.getWorkTree(), "a").exists());
-
- assertTrue(new File(db.getWorkTree(), "a").delete());
- git.add().addFilepattern("a").setUpdate(true).call();
- git.commit().setMessage("main").call();
-
- // We are merging a deletion into our branch
- MergeResult result = git.merge().include(secondCommit.getId())
- .setStrategy(MergeStrategy.RESOLVE).call();
- assertEquals(MergeStatus.MERGED, result.getMergeStatus());
+ try (Git git = new Git(db)) {
+ writeTrashFile("a", "1\na\n3\n");
+ git.add().addFilepattern("a").call();
+ RevCommit initialCommit = git.commit().setMessage("initial").call();
+
+ createBranch(initialCommit, "refs/heads/side");
+ checkoutBranch("refs/heads/side");
+
+ assertTrue(new File(db.getWorkTree(), "a").delete());
+ git.add().addFilepattern("a").setUpdate(true).call();
+ RevCommit secondCommit = git.commit().setMessage("side").call();
+
+ assertFalse(new File(db.getWorkTree(), "a").exists());
+ checkoutBranch("refs/heads/master");
+ assertTrue(new File(db.getWorkTree(), "a").exists());
+
+ assertTrue(new File(db.getWorkTree(), "a").delete());
+ git.add().addFilepattern("a").setUpdate(true).call();
+ git.commit().setMessage("main").call();
+
+ // We are merging a deletion into our branch
+ MergeResult result = git.merge().include(secondCommit.getId())
+ .setStrategy(MergeStrategy.RESOLVE).call();
+ assertEquals(MergeStatus.MERGED, result.getMergeStatus());
+ }
}
@Test
public void testDeletionAndConflict() throws Exception {
- Git git = new Git(db);
-
- writeTrashFile("a", "1\na\n3\n");
- writeTrashFile("b", "1\nb\n3\n");
- writeTrashFile("d", "1\nd\n3\n");
- writeTrashFile("c/c/c", "1\nc\n3\n");
- git.add().addFilepattern("a").addFilepattern("b")
- .addFilepattern("c/c/c").addFilepattern("d").call();
- RevCommit initialCommit = git.commit().setMessage("initial").call();
-
- createBranch(initialCommit, "refs/heads/side");
- checkoutBranch("refs/heads/side");
-
- assertTrue(new File(db.getWorkTree(), "b").delete());
- writeTrashFile("a", "1\na\n3(side)\n");
- git.add().addFilepattern("b").setUpdate(true).call();
- git.add().addFilepattern("a").setUpdate(true).call();
- RevCommit secondCommit = git.commit().setMessage("side").call();
-
- assertFalse(new File(db.getWorkTree(), "b").exists());
- checkoutBranch("refs/heads/master");
- assertTrue(new File(db.getWorkTree(), "b").exists());
-
- writeTrashFile("a", "1\na\n3(main)\n");
- writeTrashFile("c/c/c", "1\nc(main)\n3\n");
- git.add().addFilepattern("a").addFilepattern("c/c/c").call();
- git.commit().setMessage("main").call();
-
- // We are merging a deletion into our branch
- MergeResult result = git.merge().include(secondCommit.getId())
- .setStrategy(MergeStrategy.RESOLVE).call();
- assertEquals(MergeStatus.CONFLICTING, result.getMergeStatus());
-
- assertEquals(
- "1\na\n<<<<<<< HEAD\n3(main)\n=======\n3(side)\n>>>>>>> 54ffed45d62d252715fc20e41da92d44c48fb0ff\n",
- read(new File(db.getWorkTree(), "a")));
- assertFalse(new File(db.getWorkTree(), "b").exists());
- assertEquals("1\nc(main)\n3\n",
- read(new File(db.getWorkTree(), "c/c/c")));
- assertEquals("1\nd\n3\n", read(new File(db.getWorkTree(), "d")));
+ try (Git git = new Git(db)) {
+ writeTrashFile("a", "1\na\n3\n");
+ writeTrashFile("b", "1\nb\n3\n");
+ writeTrashFile("d", "1\nd\n3\n");
+ writeTrashFile("c/c/c", "1\nc\n3\n");
+ git.add().addFilepattern("a").addFilepattern("b")
+ .addFilepattern("c/c/c").addFilepattern("d").call();
+ RevCommit initialCommit = git.commit().setMessage("initial").call();
+
+ createBranch(initialCommit, "refs/heads/side");
+ checkoutBranch("refs/heads/side");
+
+ assertTrue(new File(db.getWorkTree(), "b").delete());
+ writeTrashFile("a", "1\na\n3(side)\n");
+ git.add().addFilepattern("b").setUpdate(true).call();
+ git.add().addFilepattern("a").setUpdate(true).call();
+ RevCommit secondCommit = git.commit().setMessage("side").call();
+
+ assertFalse(new File(db.getWorkTree(), "b").exists());
+ checkoutBranch("refs/heads/master");
+ assertTrue(new File(db.getWorkTree(), "b").exists());
+
+ writeTrashFile("a", "1\na\n3(main)\n");
+ writeTrashFile("c/c/c", "1\nc(main)\n3\n");
+ git.add().addFilepattern("a").addFilepattern("c/c/c").call();
+ git.commit().setMessage("main").call();
+
+ // We are merging a deletion into our branch
+ MergeResult result = git.merge().include(secondCommit.getId())
+ .setStrategy(MergeStrategy.RESOLVE).call();
+ assertEquals(MergeStatus.CONFLICTING, result.getMergeStatus());
+
+ assertEquals(
+ "1\na\n<<<<<<< HEAD\n3(main)\n=======\n3(side)\n>>>>>>> 54ffed45d62d252715fc20e41da92d44c48fb0ff\n",
+ read(new File(db.getWorkTree(), "a")));
+ assertFalse(new File(db.getWorkTree(), "b").exists());
+ assertEquals("1\nc(main)\n3\n",
+ read(new File(db.getWorkTree(), "c/c/c")));
+ assertEquals("1\nd\n3\n", read(new File(db.getWorkTree(), "d")));
+ }
}
@Test
public void testDeletionOnMasterConflict() throws Exception {
- Git git = new Git(db);
-
- writeTrashFile("a", "1\na\n3\n");
- writeTrashFile("b", "1\nb\n3\n");
- git.add().addFilepattern("a").addFilepattern("b").call();
- RevCommit initialCommit = git.commit().setMessage("initial").call();
-
- // create side branch and modify "a"
- createBranch(initialCommit, "refs/heads/side");
- checkoutBranch("refs/heads/side");
- writeTrashFile("a", "1\na(side)\n3\n");
- git.add().addFilepattern("a").call();
- RevCommit secondCommit = git.commit().setMessage("side").call();
-
- // delete a on master to generate conflict
- checkoutBranch("refs/heads/master");
- git.rm().addFilepattern("a").call();
- git.commit().setMessage("main").call();
-
- // merge side with master
- MergeResult result = git.merge().include(secondCommit.getId())
- .setStrategy(MergeStrategy.RESOLVE).call();
- assertEquals(MergeStatus.CONFLICTING, result.getMergeStatus());
-
- // result should be 'a' conflicting with workspace content from side
- assertTrue(new File(db.getWorkTree(), "a").exists());
- assertEquals("1\na(side)\n3\n", read(new File(db.getWorkTree(), "a")));
- assertEquals("1\nb\n3\n", read(new File(db.getWorkTree(), "b")));
+ try (Git git = new Git(db)) {
+ writeTrashFile("a", "1\na\n3\n");
+ writeTrashFile("b", "1\nb\n3\n");
+ git.add().addFilepattern("a").addFilepattern("b").call();
+ RevCommit initialCommit = git.commit().setMessage("initial").call();
+
+ // create side branch and modify "a"
+ createBranch(initialCommit, "refs/heads/side");
+ checkoutBranch("refs/heads/side");
+ writeTrashFile("a", "1\na(side)\n3\n");
+ git.add().addFilepattern("a").call();
+ RevCommit secondCommit = git.commit().setMessage("side").call();
+
+ // delete a on master to generate conflict
+ checkoutBranch("refs/heads/master");
+ git.rm().addFilepattern("a").call();
+ git.commit().setMessage("main").call();
+
+ // merge side with master
+ MergeResult result = git.merge().include(secondCommit.getId())
+ .setStrategy(MergeStrategy.RESOLVE).call();
+ assertEquals(MergeStatus.CONFLICTING, result.getMergeStatus());
+
+ // result should be 'a' conflicting with workspace content from side
+ assertTrue(new File(db.getWorkTree(), "a").exists());
+ assertEquals("1\na(side)\n3\n", read(new File(db.getWorkTree(), "a")));
+ assertEquals("1\nb\n3\n", read(new File(db.getWorkTree(), "b")));
+ }
}
@Test
public void testDeletionOnSideConflict() throws Exception {
- Git git = new Git(db);
-
- writeTrashFile("a", "1\na\n3\n");
- writeTrashFile("b", "1\nb\n3\n");
- git.add().addFilepattern("a").addFilepattern("b").call();
- RevCommit initialCommit = git.commit().setMessage("initial").call();
-
- // create side branch and delete "a"
- createBranch(initialCommit, "refs/heads/side");
- checkoutBranch("refs/heads/side");
- git.rm().addFilepattern("a").call();
- RevCommit secondCommit = git.commit().setMessage("side").call();
-
- // update a on master to generate conflict
- checkoutBranch("refs/heads/master");
- writeTrashFile("a", "1\na(main)\n3\n");
- git.add().addFilepattern("a").call();
- git.commit().setMessage("main").call();
-
- // merge side with master
- MergeResult result = git.merge().include(secondCommit.getId())
- .setStrategy(MergeStrategy.RESOLVE).call();
- assertEquals(MergeStatus.CONFLICTING, result.getMergeStatus());
-
- assertTrue(new File(db.getWorkTree(), "a").exists());
- assertEquals("1\na(main)\n3\n", read(new File(db.getWorkTree(), "a")));
- assertEquals("1\nb\n3\n", read(new File(db.getWorkTree(), "b")));
-
- assertEquals(1, result.getConflicts().size());
- assertEquals(3, result.getConflicts().get("a")[0].length);
+ try (Git git = new Git(db)) {
+ writeTrashFile("a", "1\na\n3\n");
+ writeTrashFile("b", "1\nb\n3\n");
+ git.add().addFilepattern("a").addFilepattern("b").call();
+ RevCommit initialCommit = git.commit().setMessage("initial").call();
+
+ // create side branch and delete "a"
+ createBranch(initialCommit, "refs/heads/side");
+ checkoutBranch("refs/heads/side");
+ git.rm().addFilepattern("a").call();
+ RevCommit secondCommit = git.commit().setMessage("side").call();
+
+ // update a on master to generate conflict
+ checkoutBranch("refs/heads/master");
+ writeTrashFile("a", "1\na(main)\n3\n");
+ git.add().addFilepattern("a").call();
+ git.commit().setMessage("main").call();
+
+ // merge side with master
+ MergeResult result = git.merge().include(secondCommit.getId())
+ .setStrategy(MergeStrategy.RESOLVE).call();
+ assertEquals(MergeStatus.CONFLICTING, result.getMergeStatus());
+
+ assertTrue(new File(db.getWorkTree(), "a").exists());
+ assertEquals("1\na(main)\n3\n", read(new File(db.getWorkTree(), "a")));
+ assertEquals("1\nb\n3\n", read(new File(db.getWorkTree(), "b")));
+
+ assertEquals(1, result.getConflicts().size());
+ assertEquals(3, result.getConflicts().get("a")[0].length);
+ }
}
@Test
@@ -870,262 +875,262 @@ public class MergeCommandTest extends RepositoryTestCase {
// this test is essentially the same as testDeletionOnSideConflict,
// however if once rename support is added this test should result in a
// successful merge instead of a conflict
- Git git = new Git(db);
-
- writeTrashFile("x", "add x");
- git.add().addFilepattern("x").call();
- RevCommit initial = git.commit().setMessage("add x").call();
-
- createBranch(initial, "refs/heads/d1");
- createBranch(initial, "refs/heads/d2");
-
- // rename x to y on d1
- checkoutBranch("refs/heads/d1");
- new File(db.getWorkTree(), "x")
- .renameTo(new File(db.getWorkTree(), "y"));
- git.rm().addFilepattern("x").call();
- git.add().addFilepattern("y").call();
- RevCommit d1Commit = git.commit().setMessage("d1 rename x -> y").call();
-
- checkoutBranch("refs/heads/d2");
- writeTrashFile("x", "d2 change");
- git.add().addFilepattern("x").call();
- RevCommit d2Commit = git.commit().setMessage("d2 change in x").call();
-
- checkoutBranch("refs/heads/master");
- MergeResult d1Merge = git.merge().include(d1Commit).call();
- assertEquals(MergeResult.MergeStatus.FAST_FORWARD,
- d1Merge.getMergeStatus());
-
- MergeResult d2Merge = git.merge().include(d2Commit).call();
- assertEquals(MergeResult.MergeStatus.CONFLICTING,
- d2Merge.getMergeStatus());
- assertEquals(1, d2Merge.getConflicts().size());
- assertEquals(3, d2Merge.getConflicts().get("x")[0].length);
+ try (Git git = new Git(db)) {
+ writeTrashFile("x", "add x");
+ git.add().addFilepattern("x").call();
+ RevCommit initial = git.commit().setMessage("add x").call();
+
+ createBranch(initial, "refs/heads/d1");
+ createBranch(initial, "refs/heads/d2");
+
+ // rename x to y on d1
+ checkoutBranch("refs/heads/d1");
+ new File(db.getWorkTree(), "x")
+ .renameTo(new File(db.getWorkTree(), "y"));
+ git.rm().addFilepattern("x").call();
+ git.add().addFilepattern("y").call();
+ RevCommit d1Commit = git.commit().setMessage("d1 rename x -> y").call();
+
+ checkoutBranch("refs/heads/d2");
+ writeTrashFile("x", "d2 change");
+ git.add().addFilepattern("x").call();
+ RevCommit d2Commit = git.commit().setMessage("d2 change in x").call();
+
+ checkoutBranch("refs/heads/master");
+ MergeResult d1Merge = git.merge().include(d1Commit).call();
+ assertEquals(MergeResult.MergeStatus.FAST_FORWARD,
+ d1Merge.getMergeStatus());
+
+ MergeResult d2Merge = git.merge().include(d2Commit).call();
+ assertEquals(MergeResult.MergeStatus.CONFLICTING,
+ d2Merge.getMergeStatus());
+ assertEquals(1, d2Merge.getConflicts().size());
+ assertEquals(3, d2Merge.getConflicts().get("x")[0].length);
+ }
}
@Test
public void testMergeFailingWithDirtyWorkingTree() throws Exception {
- Git git = new Git(db);
+ try (Git git = new Git(db)) {
+ writeTrashFile("a", "1\na\n3\n");
+ writeTrashFile("b", "1\nb\n3\n");
+ git.add().addFilepattern("a").addFilepattern("b").call();
+ RevCommit initialCommit = git.commit().setMessage("initial").call();
- writeTrashFile("a", "1\na\n3\n");
- writeTrashFile("b", "1\nb\n3\n");
- git.add().addFilepattern("a").addFilepattern("b").call();
- RevCommit initialCommit = git.commit().setMessage("initial").call();
+ createBranch(initialCommit, "refs/heads/side");
+ checkoutBranch("refs/heads/side");
- createBranch(initialCommit, "refs/heads/side");
- checkoutBranch("refs/heads/side");
+ writeTrashFile("a", "1(side)\na\n3\n");
+ writeTrashFile("b", "1\nb(side)\n3\n");
+ git.add().addFilepattern("a").addFilepattern("b").call();
+ RevCommit secondCommit = git.commit().setMessage("side").call();
- writeTrashFile("a", "1(side)\na\n3\n");
- writeTrashFile("b", "1\nb(side)\n3\n");
- git.add().addFilepattern("a").addFilepattern("b").call();
- RevCommit secondCommit = git.commit().setMessage("side").call();
+ assertEquals("1\nb(side)\n3\n", read(new File(db.getWorkTree(), "b")));
+ checkoutBranch("refs/heads/master");
+ assertEquals("1\nb\n3\n", read(new File(db.getWorkTree(), "b")));
- assertEquals("1\nb(side)\n3\n", read(new File(db.getWorkTree(), "b")));
- checkoutBranch("refs/heads/master");
- assertEquals("1\nb\n3\n", read(new File(db.getWorkTree(), "b")));
+ writeTrashFile("a", "1\na\n3(main)\n");
+ git.add().addFilepattern("a").call();
+ git.commit().setMessage("main").call();
- writeTrashFile("a", "1\na\n3(main)\n");
- git.add().addFilepattern("a").call();
- git.commit().setMessage("main").call();
+ writeTrashFile("a", "--- dirty ---");
+ MergeResult result = git.merge().include(secondCommit.getId())
+ .setStrategy(MergeStrategy.RESOLVE).call();
- writeTrashFile("a", "--- dirty ---");
- MergeResult result = git.merge().include(secondCommit.getId())
- .setStrategy(MergeStrategy.RESOLVE).call();
+ assertEquals(MergeStatus.FAILED, result.getMergeStatus());
- assertEquals(MergeStatus.FAILED, result.getMergeStatus());
-
- assertEquals("--- dirty ---", read(new File(db.getWorkTree(), "a")));
- assertEquals("1\nb\n3\n", read(new File(db.getWorkTree(), "b")));
+ assertEquals("--- dirty ---", read(new File(db.getWorkTree(), "a")));
+ assertEquals("1\nb\n3\n", read(new File(db.getWorkTree(), "b")));
- assertEquals(null, result.getConflicts());
+ assertEquals(null, result.getConflicts());
- assertEquals(RepositoryState.SAFE, db.getRepositoryState());
+ assertEquals(RepositoryState.SAFE, db.getRepositoryState());
+ }
}
@Test
public void testMergeConflictFileFolder() throws Exception {
- Git git = new Git(db);
+ try (Git git = new Git(db)) {
+ writeTrashFile("a", "1\na\n3\n");
+ writeTrashFile("b", "1\nb\n3\n");
+ git.add().addFilepattern("a").addFilepattern("b").call();
+ RevCommit initialCommit = git.commit().setMessage("initial").call();
- writeTrashFile("a", "1\na\n3\n");
- writeTrashFile("b", "1\nb\n3\n");
- git.add().addFilepattern("a").addFilepattern("b").call();
- RevCommit initialCommit = git.commit().setMessage("initial").call();
+ createBranch(initialCommit, "refs/heads/side");
+ checkoutBranch("refs/heads/side");
- createBranch(initialCommit, "refs/heads/side");
- checkoutBranch("refs/heads/side");
+ writeTrashFile("c/c/c", "1\nc(side)\n3\n");
+ writeTrashFile("d", "1\nd(side)\n3\n");
+ git.add().addFilepattern("c/c/c").addFilepattern("d").call();
+ RevCommit secondCommit = git.commit().setMessage("side").call();
- writeTrashFile("c/c/c", "1\nc(side)\n3\n");
- writeTrashFile("d", "1\nd(side)\n3\n");
- git.add().addFilepattern("c/c/c").addFilepattern("d").call();
- RevCommit secondCommit = git.commit().setMessage("side").call();
+ checkoutBranch("refs/heads/master");
- checkoutBranch("refs/heads/master");
+ writeTrashFile("c", "1\nc(main)\n3\n");
+ writeTrashFile("d/d/d", "1\nd(main)\n3\n");
+ git.add().addFilepattern("c").addFilepattern("d/d/d").call();
+ git.commit().setMessage("main").call();
- writeTrashFile("c", "1\nc(main)\n3\n");
- writeTrashFile("d/d/d", "1\nd(main)\n3\n");
- git.add().addFilepattern("c").addFilepattern("d/d/d").call();
- git.commit().setMessage("main").call();
+ MergeResult result = git.merge().include(secondCommit.getId())
+ .setStrategy(MergeStrategy.RESOLVE).call();
- MergeResult result = git.merge().include(secondCommit.getId())
- .setStrategy(MergeStrategy.RESOLVE).call();
+ assertEquals(MergeStatus.CONFLICTING, result.getMergeStatus());
- assertEquals(MergeStatus.CONFLICTING, result.getMergeStatus());
-
- assertEquals("1\na\n3\n", read(new File(db.getWorkTree(), "a")));
- assertEquals("1\nb\n3\n", read(new File(db.getWorkTree(), "b")));
- assertEquals("1\nc(main)\n3\n", read(new File(db.getWorkTree(), "c")));
- assertEquals("1\nd(main)\n3\n", read(new File(db.getWorkTree(), "d/d/d")));
+ assertEquals("1\na\n3\n", read(new File(db.getWorkTree(), "a")));
+ assertEquals("1\nb\n3\n", read(new File(db.getWorkTree(), "b")));
+ assertEquals("1\nc(main)\n3\n", read(new File(db.getWorkTree(), "c")));
+ assertEquals("1\nd(main)\n3\n", read(new File(db.getWorkTree(), "d/d/d")));
- assertEquals(null, result.getConflicts());
+ assertEquals(null, result.getConflicts());
- assertEquals(RepositoryState.MERGING, db.getRepositoryState());
+ assertEquals(RepositoryState.MERGING, db.getRepositoryState());
+ }
}
@Test
public void testSuccessfulMergeFailsDueToDirtyIndex() throws Exception {
- Git git = new Git(db);
-
- File fileA = writeTrashFile("a", "a");
- RevCommit initialCommit = addAllAndCommit(git);
-
- // switch branch
- createBranch(initialCommit, "refs/heads/side");
- checkoutBranch("refs/heads/side");
- // modify file a
- write(fileA, "a(side)");
- writeTrashFile("b", "b");
- RevCommit sideCommit = addAllAndCommit(git);
-
- // switch branch
- checkoutBranch("refs/heads/master");
- writeTrashFile("c", "c");
- addAllAndCommit(git);
-
- // modify and add file a
- write(fileA, "a(modified)");
- git.add().addFilepattern("a").call();
- // do not commit
-
- // get current index state
- String indexState = indexState(CONTENT);
-
- // merge
- MergeResult result = git.merge().include(sideCommit.getId())
- .setStrategy(MergeStrategy.RESOLVE).call();
-
- checkMergeFailedResult(result, MergeFailureReason.DIRTY_INDEX,
- indexState, fileA);
+ try (Git git = new Git(db)) {
+ File fileA = writeTrashFile("a", "a");
+ RevCommit initialCommit = addAllAndCommit(git);
+
+ // switch branch
+ createBranch(initialCommit, "refs/heads/side");
+ checkoutBranch("refs/heads/side");
+ // modify file a
+ write(fileA, "a(side)");
+ writeTrashFile("b", "b");
+ RevCommit sideCommit = addAllAndCommit(git);
+
+ // switch branch
+ checkoutBranch("refs/heads/master");
+ writeTrashFile("c", "c");
+ addAllAndCommit(git);
+
+ // modify and add file a
+ write(fileA, "a(modified)");
+ git.add().addFilepattern("a").call();
+ // do not commit
+
+ // get current index state
+ String indexState = indexState(CONTENT);
+
+ // merge
+ MergeResult result = git.merge().include(sideCommit.getId())
+ .setStrategy(MergeStrategy.RESOLVE).call();
+
+ checkMergeFailedResult(result, MergeFailureReason.DIRTY_INDEX,
+ indexState, fileA);
+ }
}
@Test
public void testConflictingMergeFailsDueToDirtyIndex() throws Exception {
- Git git = new Git(db);
-
- File fileA = writeTrashFile("a", "a");
- RevCommit initialCommit = addAllAndCommit(git);
-
- // switch branch
- createBranch(initialCommit, "refs/heads/side");
- checkoutBranch("refs/heads/side");
- // modify file a
- write(fileA, "a(side)");
- writeTrashFile("b", "b");
- RevCommit sideCommit = addAllAndCommit(git);
-
- // switch branch
- checkoutBranch("refs/heads/master");
- // modify file a - this will cause a conflict during merge
- write(fileA, "a(master)");
- writeTrashFile("c", "c");
- addAllAndCommit(git);
-
- // modify and add file a
- write(fileA, "a(modified)");
- git.add().addFilepattern("a").call();
- // do not commit
-
- // get current index state
- String indexState = indexState(CONTENT);
-
- // merge
- MergeResult result = git.merge().include(sideCommit.getId())
- .setStrategy(MergeStrategy.RESOLVE).call();
-
- checkMergeFailedResult(result, MergeFailureReason.DIRTY_INDEX,
- indexState, fileA);
+ try (Git git = new Git(db)) {
+ File fileA = writeTrashFile("a", "a");
+ RevCommit initialCommit = addAllAndCommit(git);
+
+ // switch branch
+ createBranch(initialCommit, "refs/heads/side");
+ checkoutBranch("refs/heads/side");
+ // modify file a
+ write(fileA, "a(side)");
+ writeTrashFile("b", "b");
+ RevCommit sideCommit = addAllAndCommit(git);
+
+ // switch branch
+ checkoutBranch("refs/heads/master");
+ // modify file a - this will cause a conflict during merge
+ write(fileA, "a(master)");
+ writeTrashFile("c", "c");
+ addAllAndCommit(git);
+
+ // modify and add file a
+ write(fileA, "a(modified)");
+ git.add().addFilepattern("a").call();
+ // do not commit
+
+ // get current index state
+ String indexState = indexState(CONTENT);
+
+ // merge
+ MergeResult result = git.merge().include(sideCommit.getId())
+ .setStrategy(MergeStrategy.RESOLVE).call();
+
+ checkMergeFailedResult(result, MergeFailureReason.DIRTY_INDEX,
+ indexState, fileA);
+ }
}
@Test
public void testSuccessfulMergeFailsDueToDirtyWorktree() throws Exception {
- Git git = new Git(db);
-
- File fileA = writeTrashFile("a", "a");
- RevCommit initialCommit = addAllAndCommit(git);
-
- // switch branch
- createBranch(initialCommit, "refs/heads/side");
- checkoutBranch("refs/heads/side");
- // modify file a
- write(fileA, "a(side)");
- writeTrashFile("b", "b");
- RevCommit sideCommit = addAllAndCommit(git);
-
- // switch branch
- checkoutBranch("refs/heads/master");
- writeTrashFile("c", "c");
- addAllAndCommit(git);
-
- // modify file a
- write(fileA, "a(modified)");
- // do not add and commit
-
- // get current index state
- String indexState = indexState(CONTENT);
-
- // merge
- MergeResult result = git.merge().include(sideCommit.getId())
- .setStrategy(MergeStrategy.RESOLVE).call();
-
- checkMergeFailedResult(result, MergeFailureReason.DIRTY_WORKTREE,
- indexState, fileA);
+ try (Git git = new Git(db)) {
+ File fileA = writeTrashFile("a", "a");
+ RevCommit initialCommit = addAllAndCommit(git);
+
+ // switch branch
+ createBranch(initialCommit, "refs/heads/side");
+ checkoutBranch("refs/heads/side");
+ // modify file a
+ write(fileA, "a(side)");
+ writeTrashFile("b", "b");
+ RevCommit sideCommit = addAllAndCommit(git);
+
+ // switch branch
+ checkoutBranch("refs/heads/master");
+ writeTrashFile("c", "c");
+ addAllAndCommit(git);
+
+ // modify file a
+ write(fileA, "a(modified)");
+ // do not add and commit
+
+ // get current index state
+ String indexState = indexState(CONTENT);
+
+ // merge
+ MergeResult result = git.merge().include(sideCommit.getId())
+ .setStrategy(MergeStrategy.RESOLVE).call();
+
+ checkMergeFailedResult(result, MergeFailureReason.DIRTY_WORKTREE,
+ indexState, fileA);
+ }
}
@Test
public void testConflictingMergeFailsDueToDirtyWorktree() throws Exception {
- Git git = new Git(db);
-
- File fileA = writeTrashFile("a", "a");
- RevCommit initialCommit = addAllAndCommit(git);
-
- // switch branch
- createBranch(initialCommit, "refs/heads/side");
- checkoutBranch("refs/heads/side");
- // modify file a
- write(fileA, "a(side)");
- writeTrashFile("b", "b");
- RevCommit sideCommit = addAllAndCommit(git);
-
- // switch branch
- checkoutBranch("refs/heads/master");
- // modify file a - this will cause a conflict during merge
- write(fileA, "a(master)");
- writeTrashFile("c", "c");
- addAllAndCommit(git);
-
- // modify file a
- write(fileA, "a(modified)");
- // do not add and commit
-
- // get current index state
- String indexState = indexState(CONTENT);
-
- // merge
- MergeResult result = git.merge().include(sideCommit.getId())
- .setStrategy(MergeStrategy.RESOLVE).call();
-
- checkMergeFailedResult(result, MergeFailureReason.DIRTY_WORKTREE,
- indexState, fileA);
+ try (Git git = new Git(db)) {
+ File fileA = writeTrashFile("a", "a");
+ RevCommit initialCommit = addAllAndCommit(git);
+
+ // switch branch
+ createBranch(initialCommit, "refs/heads/side");
+ checkoutBranch("refs/heads/side");
+ // modify file a
+ write(fileA, "a(side)");
+ writeTrashFile("b", "b");
+ RevCommit sideCommit = addAllAndCommit(git);
+
+ // switch branch
+ checkoutBranch("refs/heads/master");
+ // modify file a - this will cause a conflict during merge
+ write(fileA, "a(master)");
+ writeTrashFile("c", "c");
+ addAllAndCommit(git);
+
+ // modify file a
+ write(fileA, "a(modified)");
+ // do not add and commit
+
+ // get current index state
+ String indexState = indexState(CONTENT);
+
+ // merge
+ MergeResult result = git.merge().include(sideCommit.getId())
+ .setStrategy(MergeStrategy.RESOLVE).call();
+
+ checkMergeFailedResult(result, MergeFailureReason.DIRTY_WORKTREE,
+ indexState, fileA);
+ }
}
@Test
@@ -1143,29 +1148,30 @@ public class MergeCommandTest extends RepositoryTestCase {
file = new File(folder2, "file2.txt");
write(file, "folder2--file2.txt");
- Git git = new Git(db);
- git.add().addFilepattern(folder1.getName())
- .addFilepattern(folder2.getName()).call();
- RevCommit commit1 = git.commit().setMessage("adding folders").call();
-
- recursiveDelete(folder1);
- recursiveDelete(folder2);
- git.rm().addFilepattern("folder1/file1.txt")
- .addFilepattern("folder1/file2.txt")
- .addFilepattern("folder2/file1.txt")
- .addFilepattern("folder2/file2.txt").call();
- RevCommit commit2 = git.commit()
- .setMessage("removing folders on 'branch'").call();
-
- git.checkout().setName(commit1.name()).call();
-
- MergeResult result = git.merge().include(commit2.getId())
- .setStrategy(MergeStrategy.RESOLVE).call();
- assertEquals(MergeResult.MergeStatus.FAST_FORWARD,
- result.getMergeStatus());
- assertEquals(commit2, result.getNewHead());
- assertFalse(folder1.exists());
- assertFalse(folder2.exists());
+ try (Git git = new Git(db)) {
+ git.add().addFilepattern(folder1.getName())
+ .addFilepattern(folder2.getName()).call();
+ RevCommit commit1 = git.commit().setMessage("adding folders").call();
+
+ recursiveDelete(folder1);
+ recursiveDelete(folder2);
+ git.rm().addFilepattern("folder1/file1.txt")
+ .addFilepattern("folder1/file2.txt")
+ .addFilepattern("folder2/file1.txt")
+ .addFilepattern("folder2/file2.txt").call();
+ RevCommit commit2 = git.commit()
+ .setMessage("removing folders on 'branch'").call();
+
+ git.checkout().setName(commit1.name()).call();
+
+ MergeResult result = git.merge().include(commit2.getId())
+ .setStrategy(MergeStrategy.RESOLVE).call();
+ assertEquals(MergeResult.MergeStatus.FAST_FORWARD,
+ result.getMergeStatus());
+ assertEquals(commit2, result.getNewHead());
+ assertFalse(folder1.exists());
+ assertFalse(folder2.exists());
+ }
}
@Test
@@ -1183,366 +1189,369 @@ public class MergeCommandTest extends RepositoryTestCase {
file = new File(folder2, "file2.txt");
write(file, "folder2--file2.txt");
- Git git = new Git(db);
- git.add().addFilepattern(folder1.getName())
- .addFilepattern(folder2.getName()).call();
- RevCommit base = git.commit().setMessage("adding folders").call();
+ try (Git git = new Git(db)) {
+ git.add().addFilepattern(folder1.getName())
+ .addFilepattern(folder2.getName()).call();
+ RevCommit base = git.commit().setMessage("adding folders").call();
- recursiveDelete(folder1);
- recursiveDelete(folder2);
- git.rm().addFilepattern("folder1/file1.txt")
- .addFilepattern("folder1/file2.txt")
- .addFilepattern("folder2/file1.txt")
- .addFilepattern("folder2/file2.txt").call();
- RevCommit other = git.commit()
- .setMessage("removing folders on 'branch'").call();
+ recursiveDelete(folder1);
+ recursiveDelete(folder2);
+ git.rm().addFilepattern("folder1/file1.txt")
+ .addFilepattern("folder1/file2.txt")
+ .addFilepattern("folder2/file1.txt")
+ .addFilepattern("folder2/file2.txt").call();
+ RevCommit other = git.commit()
+ .setMessage("removing folders on 'branch'").call();
- git.checkout().setName(base.name()).call();
+ git.checkout().setName(base.name()).call();
- file = new File(folder2, "file3.txt");
- write(file, "folder2--file3.txt");
+ file = new File(folder2, "file3.txt");
+ write(file, "folder2--file3.txt");
- git.add().addFilepattern(folder2.getName()).call();
- git.commit().setMessage("adding another file").call();
+ git.add().addFilepattern(folder2.getName()).call();
+ git.commit().setMessage("adding another file").call();
- MergeResult result = git.merge().include(other.getId())
- .setStrategy(MergeStrategy.RESOLVE).call();
+ MergeResult result = git.merge().include(other.getId())
+ .setStrategy(MergeStrategy.RESOLVE).call();
- assertEquals(MergeResult.MergeStatus.MERGED,
- result.getMergeStatus());
- assertFalse(folder1.exists());
+ assertEquals(MergeResult.MergeStatus.MERGED,
+ result.getMergeStatus());
+ assertFalse(folder1.exists());
+ }
}
@Test
public void testFileModeMerge() throws Exception {
- if (!FS.DETECTED.supportsExecute())
- return;
// Only Java6
- Git git = new Git(db);
-
- writeTrashFile("mergeableMode", "a");
- setExecutable(git, "mergeableMode", false);
- writeTrashFile("conflictingModeWithBase", "a");
- setExecutable(git, "conflictingModeWithBase", false);
- RevCommit initialCommit = addAllAndCommit(git);
-
- // switch branch
- createBranch(initialCommit, "refs/heads/side");
- checkoutBranch("refs/heads/side");
- setExecutable(git, "mergeableMode", true);
- writeTrashFile("conflictingModeNoBase", "b");
- setExecutable(git, "conflictingModeNoBase", true);
- RevCommit sideCommit = addAllAndCommit(git);
-
- // switch branch
- createBranch(initialCommit, "refs/heads/side2");
- checkoutBranch("refs/heads/side2");
- setExecutable(git, "mergeableMode", false);
- assertFalse(new File(git.getRepository().getWorkTree(),
- "conflictingModeNoBase").exists());
- writeTrashFile("conflictingModeNoBase", "b");
- setExecutable(git, "conflictingModeNoBase", false);
- addAllAndCommit(git);
-
- // merge
- MergeResult result = git.merge().include(sideCommit.getId())
- .setStrategy(MergeStrategy.RESOLVE).call();
- assertEquals(MergeStatus.CONFLICTING, result.getMergeStatus());
- assertTrue(canExecute(git, "mergeableMode"));
- assertFalse(canExecute(git, "conflictingModeNoBase"));
+ assumeTrue(FS.DETECTED.supportsExecute());
+ try (Git git = new Git(db)) {
+ writeTrashFile("mergeableMode", "a");
+ setExecutable(git, "mergeableMode", false);
+ writeTrashFile("conflictingModeWithBase", "a");
+ setExecutable(git, "conflictingModeWithBase", false);
+ RevCommit initialCommit = addAllAndCommit(git);
+
+ // switch branch
+ createBranch(initialCommit, "refs/heads/side");
+ checkoutBranch("refs/heads/side");
+ setExecutable(git, "mergeableMode", true);
+ writeTrashFile("conflictingModeNoBase", "b");
+ setExecutable(git, "conflictingModeNoBase", true);
+ RevCommit sideCommit = addAllAndCommit(git);
+
+ // switch branch
+ createBranch(initialCommit, "refs/heads/side2");
+ checkoutBranch("refs/heads/side2");
+ setExecutable(git, "mergeableMode", false);
+ assertFalse(new File(git.getRepository().getWorkTree(),
+ "conflictingModeNoBase").exists());
+ writeTrashFile("conflictingModeNoBase", "b");
+ setExecutable(git, "conflictingModeNoBase", false);
+ addAllAndCommit(git);
+
+ // merge
+ MergeResult result = git.merge().include(sideCommit.getId())
+ .setStrategy(MergeStrategy.RESOLVE).call();
+ assertEquals(MergeStatus.CONFLICTING, result.getMergeStatus());
+ assertTrue(canExecute(git, "mergeableMode"));
+ assertFalse(canExecute(git, "conflictingModeNoBase"));
+ }
}
@Test
public void testFileModeMergeWithDirtyWorkTree() throws Exception {
- if (!FS.DETECTED.supportsExecute())
- return;
// Only Java6 (or set x bit in index)
-
- Git git = new Git(db);
-
- writeTrashFile("mergeableButDirty", "a");
- setExecutable(git, "mergeableButDirty", false);
- RevCommit initialCommit = addAllAndCommit(git);
-
- // switch branch
- createBranch(initialCommit, "refs/heads/side");
- checkoutBranch("refs/heads/side");
- setExecutable(git, "mergeableButDirty", true);
- RevCommit sideCommit = addAllAndCommit(git);
-
- // switch branch
- createBranch(initialCommit, "refs/heads/side2");
- checkoutBranch("refs/heads/side2");
- setExecutable(git, "mergeableButDirty", false);
- addAllAndCommit(git);
-
- writeTrashFile("mergeableButDirty", "b");
-
- // merge
- MergeResult result = git.merge().include(sideCommit.getId())
- .setStrategy(MergeStrategy.RESOLVE).call();
- assertEquals(MergeStatus.FAILED, result.getMergeStatus());
- assertFalse(canExecute(git, "mergeableButDirty"));
+ assumeTrue(FS.DETECTED.supportsExecute());
+
+ try (Git git = new Git(db)) {
+ writeTrashFile("mergeableButDirty", "a");
+ setExecutable(git, "mergeableButDirty", false);
+ RevCommit initialCommit = addAllAndCommit(git);
+
+ // switch branch
+ createBranch(initialCommit, "refs/heads/side");
+ checkoutBranch("refs/heads/side");
+ setExecutable(git, "mergeableButDirty", true);
+ RevCommit sideCommit = addAllAndCommit(git);
+
+ // switch branch
+ createBranch(initialCommit, "refs/heads/side2");
+ checkoutBranch("refs/heads/side2");
+ setExecutable(git, "mergeableButDirty", false);
+ addAllAndCommit(git);
+
+ writeTrashFile("mergeableButDirty", "b");
+
+ // merge
+ MergeResult result = git.merge().include(sideCommit.getId())
+ .setStrategy(MergeStrategy.RESOLVE).call();
+ assertEquals(MergeStatus.FAILED, result.getMergeStatus());
+ assertFalse(canExecute(git, "mergeableButDirty"));
+ }
}
@Test
public void testSquashFastForward() throws Exception {
- Git git = new Git(db);
-
- writeTrashFile("file1", "file1");
- git.add().addFilepattern("file1").call();
- RevCommit first = git.commit().setMessage("initial commit").call();
-
- assertTrue(new File(db.getWorkTree(), "file1").exists());
- createBranch(first, "refs/heads/branch1");
- checkoutBranch("refs/heads/branch1");
-
- writeTrashFile("file2", "file2");
- git.add().addFilepattern("file2").call();
- RevCommit second = git.commit().setMessage("second commit").call();
- assertTrue(new File(db.getWorkTree(), "file2").exists());
-
- writeTrashFile("file3", "file3");
- git.add().addFilepattern("file3").call();
- RevCommit third = git.commit().setMessage("third commit").call();
- assertTrue(new File(db.getWorkTree(), "file3").exists());
-
- checkoutBranch("refs/heads/master");
- assertTrue(new File(db.getWorkTree(), "file1").exists());
- assertFalse(new File(db.getWorkTree(), "file2").exists());
- assertFalse(new File(db.getWorkTree(), "file3").exists());
-
- MergeResult result = git.merge()
- .include(db.exactRef("refs/heads/branch1"))
- .setSquash(true)
- .call();
-
- assertTrue(new File(db.getWorkTree(), "file1").exists());
- assertTrue(new File(db.getWorkTree(), "file2").exists());
- assertTrue(new File(db.getWorkTree(), "file3").exists());
- assertEquals(MergeResult.MergeStatus.FAST_FORWARD_SQUASHED,
- result.getMergeStatus());
- assertEquals(first, result.getNewHead()); // HEAD didn't move
- assertEquals(first, db.resolve(Constants.HEAD + "^{commit}"));
-
- assertEquals(
- "Squashed commit of the following:\n\ncommit "
- + third.getName()
- + "\nAuthor: "
- + third.getAuthorIdent().getName()
- + " <"
- + third.getAuthorIdent().getEmailAddress()
- + ">\nDate: "
- + dateFormatter.formatDate(third
- .getAuthorIdent())
- + "\n\n\tthird commit\n\ncommit "
- + second.getName()
- + "\nAuthor: "
- + second.getAuthorIdent().getName()
- + " <"
- + second.getAuthorIdent().getEmailAddress()
- + ">\nDate: "
- + dateFormatter.formatDate(second
- .getAuthorIdent()) + "\n\n\tsecond commit\n",
- db.readSquashCommitMsg());
- assertNull(db.readMergeCommitMsg());
-
- Status stat = git.status().call();
- assertEquals(Sets.of("file2", "file3"), stat.getAdded());
+ try (Git git = new Git(db)) {
+ writeTrashFile("file1", "file1");
+ git.add().addFilepattern("file1").call();
+ RevCommit first = git.commit().setMessage("initial commit").call();
+
+ assertTrue(new File(db.getWorkTree(), "file1").exists());
+ createBranch(first, "refs/heads/branch1");
+ checkoutBranch("refs/heads/branch1");
+
+ writeTrashFile("file2", "file2");
+ git.add().addFilepattern("file2").call();
+ RevCommit second = git.commit().setMessage("second commit").call();
+ assertTrue(new File(db.getWorkTree(), "file2").exists());
+
+ writeTrashFile("file3", "file3");
+ git.add().addFilepattern("file3").call();
+ RevCommit third = git.commit().setMessage("third commit").call();
+ assertTrue(new File(db.getWorkTree(), "file3").exists());
+
+ checkoutBranch("refs/heads/master");
+ assertTrue(new File(db.getWorkTree(), "file1").exists());
+ assertFalse(new File(db.getWorkTree(), "file2").exists());
+ assertFalse(new File(db.getWorkTree(), "file3").exists());
+
+ MergeResult result = git.merge()
+ .include(db.exactRef("refs/heads/branch1"))
+ .setSquash(true)
+ .call();
+
+ assertTrue(new File(db.getWorkTree(), "file1").exists());
+ assertTrue(new File(db.getWorkTree(), "file2").exists());
+ assertTrue(new File(db.getWorkTree(), "file3").exists());
+ assertEquals(MergeResult.MergeStatus.FAST_FORWARD_SQUASHED,
+ result.getMergeStatus());
+ assertEquals(first, result.getNewHead()); // HEAD didn't move
+ assertEquals(first, db.resolve(Constants.HEAD + "^{commit}"));
+
+ assertEquals(
+ "Squashed commit of the following:\n\ncommit "
+ + third.getName()
+ + "\nAuthor: "
+ + third.getAuthorIdent().getName()
+ + " <"
+ + third.getAuthorIdent().getEmailAddress()
+ + ">\nDate: "
+ + dateFormatter.formatDate(third
+ .getAuthorIdent())
+ + "\n\n\tthird commit\n\ncommit "
+ + second.getName()
+ + "\nAuthor: "
+ + second.getAuthorIdent().getName()
+ + " <"
+ + second.getAuthorIdent().getEmailAddress()
+ + ">\nDate: "
+ + dateFormatter.formatDate(second
+ .getAuthorIdent()) + "\n\n\tsecond commit\n",
+ db.readSquashCommitMsg());
+ assertNull(db.readMergeCommitMsg());
+
+ Status stat = git.status().call();
+ assertEquals(Sets.of("file2", "file3"), stat.getAdded());
+ }
}
@Test
public void testSquashMerge() throws Exception {
- Git git = new Git(db);
-
- writeTrashFile("file1", "file1");
- git.add().addFilepattern("file1").call();
- RevCommit first = git.commit().setMessage("initial commit").call();
-
- assertTrue(new File(db.getWorkTree(), "file1").exists());
- createBranch(first, "refs/heads/branch1");
-
- writeTrashFile("file2", "file2");
- git.add().addFilepattern("file2").call();
- RevCommit second = git.commit().setMessage("second commit").call();
- assertTrue(new File(db.getWorkTree(), "file2").exists());
-
- checkoutBranch("refs/heads/branch1");
-
- writeTrashFile("file3", "file3");
- git.add().addFilepattern("file3").call();
- RevCommit third = git.commit().setMessage("third commit").call();
- assertTrue(new File(db.getWorkTree(), "file3").exists());
-
- checkoutBranch("refs/heads/master");
- assertTrue(new File(db.getWorkTree(), "file1").exists());
- assertTrue(new File(db.getWorkTree(), "file2").exists());
- assertFalse(new File(db.getWorkTree(), "file3").exists());
-
- MergeResult result = git.merge()
- .include(db.exactRef("refs/heads/branch1"))
- .setSquash(true)
- .call();
-
- assertTrue(new File(db.getWorkTree(), "file1").exists());
- assertTrue(new File(db.getWorkTree(), "file2").exists());
- assertTrue(new File(db.getWorkTree(), "file3").exists());
- assertEquals(MergeResult.MergeStatus.MERGED_SQUASHED,
- result.getMergeStatus());
- assertEquals(second, result.getNewHead()); // HEAD didn't move
- assertEquals(second, db.resolve(Constants.HEAD + "^{commit}"));
-
- assertEquals(
- "Squashed commit of the following:\n\ncommit "
- + third.getName()
- + "\nAuthor: "
- + third.getAuthorIdent().getName()
- + " <"
- + third.getAuthorIdent().getEmailAddress()
- + ">\nDate: "
- + dateFormatter.formatDate(third
- .getAuthorIdent()) + "\n\n\tthird commit\n",
- db.readSquashCommitMsg());
- assertNull(db.readMergeCommitMsg());
-
- Status stat = git.status().call();
- assertEquals(Sets.of("file3"), stat.getAdded());
+ try (Git git = new Git(db)) {
+ writeTrashFile("file1", "file1");
+ git.add().addFilepattern("file1").call();
+ RevCommit first = git.commit().setMessage("initial commit").call();
+
+ assertTrue(new File(db.getWorkTree(), "file1").exists());
+ createBranch(first, "refs/heads/branch1");
+
+ writeTrashFile("file2", "file2");
+ git.add().addFilepattern("file2").call();
+ RevCommit second = git.commit().setMessage("second commit").call();
+ assertTrue(new File(db.getWorkTree(), "file2").exists());
+
+ checkoutBranch("refs/heads/branch1");
+
+ writeTrashFile("file3", "file3");
+ git.add().addFilepattern("file3").call();
+ RevCommit third = git.commit().setMessage("third commit").call();
+ assertTrue(new File(db.getWorkTree(), "file3").exists());
+
+ checkoutBranch("refs/heads/master");
+ assertTrue(new File(db.getWorkTree(), "file1").exists());
+ assertTrue(new File(db.getWorkTree(), "file2").exists());
+ assertFalse(new File(db.getWorkTree(), "file3").exists());
+
+ MergeResult result = git.merge()
+ .include(db.exactRef("refs/heads/branch1"))
+ .setSquash(true)
+ .call();
+
+ assertTrue(new File(db.getWorkTree(), "file1").exists());
+ assertTrue(new File(db.getWorkTree(), "file2").exists());
+ assertTrue(new File(db.getWorkTree(), "file3").exists());
+ assertEquals(MergeResult.MergeStatus.MERGED_SQUASHED,
+ result.getMergeStatus());
+ assertEquals(second, result.getNewHead()); // HEAD didn't move
+ assertEquals(second, db.resolve(Constants.HEAD + "^{commit}"));
+
+ assertEquals(
+ "Squashed commit of the following:\n\ncommit "
+ + third.getName()
+ + "\nAuthor: "
+ + third.getAuthorIdent().getName()
+ + " <"
+ + third.getAuthorIdent().getEmailAddress()
+ + ">\nDate: "
+ + dateFormatter.formatDate(third
+ .getAuthorIdent()) + "\n\n\tthird commit\n",
+ db.readSquashCommitMsg());
+ assertNull(db.readMergeCommitMsg());
+
+ Status stat = git.status().call();
+ assertEquals(Sets.of("file3"), stat.getAdded());
+ }
}
@Test
public void testSquashMergeConflict() throws Exception {
- Git git = new Git(db);
-
- writeTrashFile("file1", "file1");
- git.add().addFilepattern("file1").call();
- RevCommit first = git.commit().setMessage("initial commit").call();
-
- assertTrue(new File(db.getWorkTree(), "file1").exists());
- createBranch(first, "refs/heads/branch1");
-
- writeTrashFile("file2", "master");
- git.add().addFilepattern("file2").call();
- RevCommit second = git.commit().setMessage("second commit").call();
- assertTrue(new File(db.getWorkTree(), "file2").exists());
-
- checkoutBranch("refs/heads/branch1");
-
- writeTrashFile("file2", "branch");
- git.add().addFilepattern("file2").call();
- RevCommit third = git.commit().setMessage("third commit").call();
- assertTrue(new File(db.getWorkTree(), "file2").exists());
-
- checkoutBranch("refs/heads/master");
- assertTrue(new File(db.getWorkTree(), "file1").exists());
- assertTrue(new File(db.getWorkTree(), "file2").exists());
-
- MergeResult result = git.merge()
- .include(db.exactRef("refs/heads/branch1"))
- .setSquash(true)
- .call();
-
- assertTrue(new File(db.getWorkTree(), "file1").exists());
- assertTrue(new File(db.getWorkTree(), "file2").exists());
- assertEquals(MergeResult.MergeStatus.CONFLICTING,
- result.getMergeStatus());
- assertNull(result.getNewHead());
- assertEquals(second, db.resolve(Constants.HEAD + "^{commit}"));
-
- assertEquals(
- "Squashed commit of the following:\n\ncommit "
- + third.getName()
- + "\nAuthor: "
- + third.getAuthorIdent().getName()
- + " <"
- + third.getAuthorIdent().getEmailAddress()
- + ">\nDate: "
- + dateFormatter.formatDate(third
- .getAuthorIdent()) + "\n\n\tthird commit\n",
- db.readSquashCommitMsg());
- assertEquals("\nConflicts:\n\tfile2\n", db.readMergeCommitMsg());
-
- Status stat = git.status().call();
- assertEquals(Sets.of("file2"), stat.getConflicting());
+ try (Git git = new Git(db)) {
+ writeTrashFile("file1", "file1");
+ git.add().addFilepattern("file1").call();
+ RevCommit first = git.commit().setMessage("initial commit").call();
+
+ assertTrue(new File(db.getWorkTree(), "file1").exists());
+ createBranch(first, "refs/heads/branch1");
+
+ writeTrashFile("file2", "master");
+ git.add().addFilepattern("file2").call();
+ RevCommit second = git.commit().setMessage("second commit").call();
+ assertTrue(new File(db.getWorkTree(), "file2").exists());
+
+ checkoutBranch("refs/heads/branch1");
+
+ writeTrashFile("file2", "branch");
+ git.add().addFilepattern("file2").call();
+ RevCommit third = git.commit().setMessage("third commit").call();
+ assertTrue(new File(db.getWorkTree(), "file2").exists());
+
+ checkoutBranch("refs/heads/master");
+ assertTrue(new File(db.getWorkTree(), "file1").exists());
+ assertTrue(new File(db.getWorkTree(), "file2").exists());
+
+ MergeResult result = git.merge()
+ .include(db.exactRef("refs/heads/branch1"))
+ .setSquash(true)
+ .call();
+
+ assertTrue(new File(db.getWorkTree(), "file1").exists());
+ assertTrue(new File(db.getWorkTree(), "file2").exists());
+ assertEquals(MergeResult.MergeStatus.CONFLICTING,
+ result.getMergeStatus());
+ assertNull(result.getNewHead());
+ assertEquals(second, db.resolve(Constants.HEAD + "^{commit}"));
+
+ assertEquals(
+ "Squashed commit of the following:\n\ncommit "
+ + third.getName()
+ + "\nAuthor: "
+ + third.getAuthorIdent().getName()
+ + " <"
+ + third.getAuthorIdent().getEmailAddress()
+ + ">\nDate: "
+ + dateFormatter.formatDate(third
+ .getAuthorIdent()) + "\n\n\tthird commit\n",
+ db.readSquashCommitMsg());
+ assertEquals("\nConflicts:\n\tfile2\n", db.readMergeCommitMsg());
+
+ Status stat = git.status().call();
+ assertEquals(Sets.of("file2"), stat.getConflicting());
+ }
}
@Test
public void testFastForwardOnly() throws Exception {
- Git git = new Git(db);
- RevCommit initialCommit = git.commit().setMessage("initial commit")
- .call();
- createBranch(initialCommit, "refs/heads/branch1");
- git.commit().setMessage("second commit").call();
- checkoutBranch("refs/heads/branch1");
-
- MergeCommand merge = git.merge();
- merge.setFastForward(FastForwardMode.FF_ONLY);
- merge.include(db.exactRef(R_HEADS + MASTER));
- MergeResult result = merge.call();
-
- assertEquals(MergeStatus.FAST_FORWARD, result.getMergeStatus());
+ try (Git git = new Git(db)) {
+ RevCommit initialCommit = git.commit().setMessage("initial commit")
+ .call();
+ createBranch(initialCommit, "refs/heads/branch1");
+ git.commit().setMessage("second commit").call();
+ checkoutBranch("refs/heads/branch1");
+
+ MergeCommand merge = git.merge();
+ merge.setFastForward(FastForwardMode.FF_ONLY);
+ merge.include(db.exactRef(R_HEADS + MASTER));
+ MergeResult result = merge.call();
+
+ assertEquals(MergeStatus.FAST_FORWARD, result.getMergeStatus());
+ }
}
@Test
public void testNoFastForward() throws Exception {
- Git git = new Git(db);
- RevCommit initialCommit = git.commit().setMessage("initial commit")
- .call();
- createBranch(initialCommit, "refs/heads/branch1");
- git.commit().setMessage("second commit").call();
- checkoutBranch("refs/heads/branch1");
-
- MergeCommand merge = git.merge();
- merge.setFastForward(FastForwardMode.NO_FF);
- merge.include(db.exactRef(R_HEADS + MASTER));
- MergeResult result = merge.call();
-
- assertEquals(MergeStatus.MERGED, result.getMergeStatus());
+ try (Git git = new Git(db)) {
+ RevCommit initialCommit = git.commit().setMessage("initial commit")
+ .call();
+ createBranch(initialCommit, "refs/heads/branch1");
+ git.commit().setMessage("second commit").call();
+ checkoutBranch("refs/heads/branch1");
+
+ MergeCommand merge = git.merge();
+ merge.setFastForward(FastForwardMode.NO_FF);
+ merge.include(db.exactRef(R_HEADS + MASTER));
+ MergeResult result = merge.call();
+
+ assertEquals(MergeStatus.MERGED, result.getMergeStatus());
+ }
}
@Test
public void testNoFastForwardNoCommit() throws Exception {
// given
- Git git = new Git(db);
- RevCommit initialCommit = git.commit().setMessage("initial commit")
- .call();
- createBranch(initialCommit, "refs/heads/branch1");
- RevCommit secondCommit = git.commit().setMessage("second commit")
- .call();
- checkoutBranch("refs/heads/branch1");
-
- // when
- MergeCommand merge = git.merge();
- merge.setFastForward(FastForwardMode.NO_FF);
- merge.include(db.exactRef(R_HEADS + MASTER));
- merge.setCommit(false);
- MergeResult result = merge.call();
-
- // then
- assertEquals(MergeStatus.MERGED_NOT_COMMITTED, result.getMergeStatus());
- assertEquals(2, result.getMergedCommits().length);
- assertEquals(initialCommit, result.getMergedCommits()[0]);
- assertEquals(secondCommit, result.getMergedCommits()[1]);
- assertNull(result.getNewHead());
- assertEquals(RepositoryState.MERGING_RESOLVED, db.getRepositoryState());
+ try (Git git = new Git(db)) {
+ RevCommit initialCommit = git.commit().setMessage("initial commit")
+ .call();
+ createBranch(initialCommit, "refs/heads/branch1");
+ RevCommit secondCommit = git.commit().setMessage("second commit")
+ .call();
+ checkoutBranch("refs/heads/branch1");
+
+ // when
+ MergeCommand merge = git.merge();
+ merge.setFastForward(FastForwardMode.NO_FF);
+ merge.include(db.exactRef(R_HEADS + MASTER));
+ merge.setCommit(false);
+ MergeResult result = merge.call();
+
+ // then
+ assertEquals(MergeStatus.MERGED_NOT_COMMITTED, result.getMergeStatus());
+ assertEquals(2, result.getMergedCommits().length);
+ assertEquals(initialCommit, result.getMergedCommits()[0]);
+ assertEquals(secondCommit, result.getMergedCommits()[1]);
+ assertNull(result.getNewHead());
+ assertEquals(RepositoryState.MERGING_RESOLVED, db.getRepositoryState());
+ }
}
@Test
public void testFastForwardOnlyNotPossible() throws Exception {
- Git git = new Git(db);
- RevCommit initialCommit = git.commit().setMessage("initial commit")
- .call();
- createBranch(initialCommit, "refs/heads/branch1");
- git.commit().setMessage("second commit").call();
- checkoutBranch("refs/heads/branch1");
- writeTrashFile("file1", "branch1");
- git.add().addFilepattern("file").call();
- git.commit().setMessage("second commit on branch1").call();
- MergeCommand merge = git.merge();
- merge.setFastForward(FastForwardMode.FF_ONLY);
- merge.include(db.exactRef(R_HEADS + MASTER));
- MergeResult result = merge.call();
-
- assertEquals(MergeStatus.ABORTED, result.getMergeStatus());
+ try (Git git = new Git(db)) {
+ RevCommit initialCommit = git.commit().setMessage("initial commit")
+ .call();
+ createBranch(initialCommit, "refs/heads/branch1");
+ git.commit().setMessage("second commit").call();
+ checkoutBranch("refs/heads/branch1");
+ writeTrashFile("file1", "branch1");
+ git.add().addFilepattern("file").call();
+ git.commit().setMessage("second commit on branch1").call();
+ MergeCommand merge = git.merge();
+ merge.setFastForward(FastForwardMode.FF_ONLY);
+ merge.include(db.exactRef(R_HEADS + MASTER));
+ MergeResult result = merge.call();
+
+ assertEquals(MergeStatus.ABORTED, result.getMergeStatus());
+ }
}
@Test
@@ -1577,65 +1586,65 @@ public class MergeCommandTest extends RepositoryTestCase {
@Test
public void testMergeWithMessageOption() throws Exception {
- Git git = new Git(db);
-
- writeTrashFile("a", "1\na\n3\n");
- git.add().addFilepattern("a").call();
- RevCommit initialCommit = git.commit().setMessage("initial").call();
+ try (Git git = new Git(db)) {
+ writeTrashFile("a", "1\na\n3\n");
+ git.add().addFilepattern("a").call();
+ RevCommit initialCommit = git.commit().setMessage("initial").call();
- createBranch(initialCommit, "refs/heads/side");
- checkoutBranch("refs/heads/side");
+ createBranch(initialCommit, "refs/heads/side");
+ checkoutBranch("refs/heads/side");
- writeTrashFile("b", "1\nb\n3\n");
- git.add().addFilepattern("b").call();
- git.commit().setMessage("side").call();
+ writeTrashFile("b", "1\nb\n3\n");
+ git.add().addFilepattern("b").call();
+ git.commit().setMessage("side").call();
- checkoutBranch("refs/heads/master");
+ checkoutBranch("refs/heads/master");
- writeTrashFile("c", "1\nc\n3\n");
- git.add().addFilepattern("c").call();
- git.commit().setMessage("main").call();
+ writeTrashFile("c", "1\nc\n3\n");
+ git.add().addFilepattern("c").call();
+ git.commit().setMessage("main").call();
- Ref sideBranch = db.exactRef("refs/heads/side");
+ Ref sideBranch = db.exactRef("refs/heads/side");
- git.merge().include(sideBranch).setStrategy(MergeStrategy.RESOLVE)
- .setMessage("user message").call();
+ git.merge().include(sideBranch).setStrategy(MergeStrategy.RESOLVE)
+ .setMessage("user message").call();
- assertNull(db.readMergeCommitMsg());
+ assertNull(db.readMergeCommitMsg());
- Iterator<RevCommit> it = git.log().call().iterator();
- RevCommit newHead = it.next();
- assertEquals("user message", newHead.getFullMessage());
+ Iterator<RevCommit> it = git.log().call().iterator();
+ RevCommit newHead = it.next();
+ assertEquals("user message", newHead.getFullMessage());
+ }
}
@Test
public void testMergeConflictWithMessageOption() throws Exception {
- Git git = new Git(db);
+ try (Git git = new Git(db)) {
+ writeTrashFile("a", "1\na\n3\n");
+ git.add().addFilepattern("a").call();
+ RevCommit initialCommit = git.commit().setMessage("initial").call();
- writeTrashFile("a", "1\na\n3\n");
- git.add().addFilepattern("a").call();
- RevCommit initialCommit = git.commit().setMessage("initial").call();
+ createBranch(initialCommit, "refs/heads/side");
+ checkoutBranch("refs/heads/side");
- createBranch(initialCommit, "refs/heads/side");
- checkoutBranch("refs/heads/side");
+ writeTrashFile("a", "1\na(side)\n3\n");
+ git.add().addFilepattern("a").call();
+ git.commit().setMessage("side").call();
- writeTrashFile("a", "1\na(side)\n3\n");
- git.add().addFilepattern("a").call();
- git.commit().setMessage("side").call();
+ checkoutBranch("refs/heads/master");
- checkoutBranch("refs/heads/master");
+ writeTrashFile("a", "1\na(main)\n3\n");
+ git.add().addFilepattern("a").call();
+ git.commit().setMessage("main").call();
- writeTrashFile("a", "1\na(main)\n3\n");
- git.add().addFilepattern("a").call();
- git.commit().setMessage("main").call();
+ Ref sideBranch = db.exactRef("refs/heads/side");
- Ref sideBranch = db.exactRef("refs/heads/side");
+ git.merge().include(sideBranch).setStrategy(MergeStrategy.RESOLVE)
+ .setMessage("user message").call();
- git.merge().include(sideBranch).setStrategy(MergeStrategy.RESOLVE)
- .setMessage("user message").call();
-
- assertEquals("user message\n\nConflicts:\n\ta\n",
- db.readMergeCommitMsg());
+ assertEquals("user message\n\nConflicts:\n\ta\n",
+ db.readMergeCommitMsg());
+ }
}
private static void setExecutable(Git git, String path, boolean executable) {
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/dircache/DirCacheBasicTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/dircache/DirCacheBasicTest.java
index 0c1baab2b8..014406eb98 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/dircache/DirCacheBasicTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/dircache/DirCacheBasicTest.java
@@ -255,9 +255,11 @@ public class DirCacheBasicTest extends RepositoryTestCase {
DirCacheBuilder b = dc.builder();
DirCacheEntry e = new DirCacheEntry(path);
e.setFileMode(FileMode.REGULAR_FILE);
- e.setObjectId(new ObjectInserter.Formatter().idFor(
- Constants.OBJ_BLOB,
- Constants.encode(path)));
+ try (ObjectInserter.Formatter formatter = new ObjectInserter.Formatter()) {
+ e.setObjectId(formatter.idFor(
+ Constants.OBJ_BLOB,
+ Constants.encode(path)));
+ }
b.add(e);
b.commit();
db.readDirCache();
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/dircache/DirCacheBuilderIteratorTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/dircache/DirCacheBuilderIteratorTest.java
index 8561fdf35b..2b108870f9 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/dircache/DirCacheBuilderIteratorTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/dircache/DirCacheBuilderIteratorTest.java
@@ -78,23 +78,24 @@ public class DirCacheBuilderIteratorTest extends RepositoryTestCase {
final int expIdx = 2;
final DirCacheBuilder b = dc.builder();
- final TreeWalk tw = new TreeWalk(db);
- tw.addTree(new DirCacheBuildIterator(b));
- tw.setRecursive(true);
- tw.setFilter(PathFilterGroup.createFromStrings(Collections
- .singleton(paths[expIdx])));
+ try (final TreeWalk tw = new TreeWalk(db)) {
+ tw.addTree(new DirCacheBuildIterator(b));
+ tw.setRecursive(true);
+ tw.setFilter(PathFilterGroup.createFromStrings(Collections
+ .singleton(paths[expIdx])));
- assertTrue("found " + paths[expIdx], tw.next());
- final DirCacheIterator c = tw.getTree(0, DirCacheIterator.class);
- assertNotNull(c);
- assertEquals(expIdx, c.ptr);
- assertSame(ents[expIdx], c.getDirCacheEntry());
- assertEquals(paths[expIdx], tw.getPathString());
- assertEquals(mode.getBits(), tw.getRawMode(0));
- assertSame(mode, tw.getFileMode(0));
- b.add(c.getDirCacheEntry());
+ assertTrue("found " + paths[expIdx], tw.next());
+ final DirCacheIterator c = tw.getTree(0, DirCacheIterator.class);
+ assertNotNull(c);
+ assertEquals(expIdx, c.ptr);
+ assertSame(ents[expIdx], c.getDirCacheEntry());
+ assertEquals(paths[expIdx], tw.getPathString());
+ assertEquals(mode.getBits(), tw.getRawMode(0));
+ assertSame(mode, tw.getFileMode(0));
+ b.add(c.getDirCacheEntry());
- assertFalse("no more entries", tw.next());
+ assertFalse("no more entries", tw.next());
+ }
b.finish();
assertEquals(ents.length, dc.getEntryCount());
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/dircache/DirCacheCGitCompatabilityTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/dircache/DirCacheCGitCompatabilityTest.java
index 7f58a1cbed..3e780467bf 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/dircache/DirCacheCGitCompatabilityTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/dircache/DirCacheCGitCompatabilityTest.java
@@ -98,17 +98,18 @@ public class DirCacheCGitCompatabilityTest extends LocalDiskRepositoryTestCase {
assertEquals(ls.size(), dc.getEntryCount());
{
final Iterator<CGitIndexRecord> rItr = ls.values().iterator();
- final TreeWalk tw = new TreeWalk(db);
- tw.setRecursive(true);
- tw.addTree(new DirCacheIterator(dc));
- while (rItr.hasNext()) {
- final DirCacheIterator dcItr;
-
- assertTrue(tw.next());
- dcItr = tw.getTree(0, DirCacheIterator.class);
- assertNotNull(dcItr);
-
- assertEqual(rItr.next(), dcItr.getDirCacheEntry());
+ try (final TreeWalk tw = new TreeWalk(db)) {
+ tw.setRecursive(true);
+ tw.addTree(new DirCacheIterator(dc));
+ while (rItr.hasNext()) {
+ final DirCacheIterator dcItr;
+
+ assertTrue(tw.next());
+ dcItr = tw.getTree(0, DirCacheIterator.class);
+ assertNotNull(dcItr);
+
+ assertEqual(rItr.next(), dcItr.getDirCacheEntry());
+ }
}
}
}
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/dircache/DirCacheIteratorTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/dircache/DirCacheIteratorTest.java
index af1c8a3567..dd242e5a1a 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/dircache/DirCacheIteratorTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/dircache/DirCacheIteratorTest.java
@@ -76,9 +76,10 @@ public class DirCacheIteratorTest extends RepositoryTestCase {
final DirCache dc = DirCache.newInCore();
assertEquals(0, dc.getEntryCount());
- final TreeWalk tw = new TreeWalk(db);
- tw.addTree(new DirCacheIterator(dc));
- assertFalse(tw.next());
+ try (final TreeWalk tw = new TreeWalk(db)) {
+ tw.addTree(new DirCacheIterator(dc));
+ assertFalse(tw.next());
+ }
}
@Test
@@ -125,19 +126,20 @@ public class DirCacheIteratorTest extends RepositoryTestCase {
b.finish();
final DirCacheIterator i = new DirCacheIterator(dc);
- final TreeWalk tw = new TreeWalk(db);
- tw.addTree(i);
- int pathIdx = 0;
- while (tw.next()) {
- assertSame(i, tw.getTree(0, DirCacheIterator.class));
- assertEquals(pathIdx, i.ptr);
- assertSame(ents[pathIdx], i.getDirCacheEntry());
- assertEquals(paths[pathIdx], tw.getPathString());
- assertEquals(modes[pathIdx].getBits(), tw.getRawMode(0));
- assertSame(modes[pathIdx], tw.getFileMode(0));
- pathIdx++;
+ try (final TreeWalk tw = new TreeWalk(db)) {
+ tw.addTree(i);
+ int pathIdx = 0;
+ while (tw.next()) {
+ assertSame(i, tw.getTree(0, DirCacheIterator.class));
+ assertEquals(pathIdx, i.ptr);
+ assertSame(ents[pathIdx], i.getDirCacheEntry());
+ assertEquals(paths[pathIdx], tw.getPathString());
+ assertEquals(modes[pathIdx].getBits(), tw.getRawMode(0));
+ assertSame(modes[pathIdx], tw.getFileMode(0));
+ pathIdx++;
+ }
+ assertEquals(paths.length, pathIdx);
}
- assertEquals(paths.length, pathIdx);
}
@Test
@@ -162,26 +164,27 @@ public class DirCacheIteratorTest extends RepositoryTestCase {
final int expPos[] = { 0, -1, 4 };
final DirCacheIterator i = new DirCacheIterator(dc);
- final TreeWalk tw = new TreeWalk(db);
- tw.addTree(i);
- tw.setRecursive(false);
- int pathIdx = 0;
- while (tw.next()) {
- assertSame(i, tw.getTree(0, DirCacheIterator.class));
- assertEquals(expModes[pathIdx].getBits(), tw.getRawMode(0));
- assertSame(expModes[pathIdx], tw.getFileMode(0));
- assertEquals(expPaths[pathIdx], tw.getPathString());
-
- if (expPos[pathIdx] >= 0) {
- assertEquals(expPos[pathIdx], i.ptr);
- assertSame(ents[expPos[pathIdx]], i.getDirCacheEntry());
- } else {
- assertSame(FileMode.TREE, tw.getFileMode(0));
+ try (final TreeWalk tw = new TreeWalk(db)) {
+ tw.addTree(i);
+ tw.setRecursive(false);
+ int pathIdx = 0;
+ while (tw.next()) {
+ assertSame(i, tw.getTree(0, DirCacheIterator.class));
+ assertEquals(expModes[pathIdx].getBits(), tw.getRawMode(0));
+ assertSame(expModes[pathIdx], tw.getFileMode(0));
+ assertEquals(expPaths[pathIdx], tw.getPathString());
+
+ if (expPos[pathIdx] >= 0) {
+ assertEquals(expPos[pathIdx], i.ptr);
+ assertSame(ents[expPos[pathIdx]], i.getDirCacheEntry());
+ } else {
+ assertSame(FileMode.TREE, tw.getFileMode(0));
+ }
+
+ pathIdx++;
}
-
- pathIdx++;
+ assertEquals(expPaths.length, pathIdx);
}
- assertEquals(expPaths.length, pathIdx);
}
@Test
@@ -202,21 +205,22 @@ public class DirCacheIteratorTest extends RepositoryTestCase {
b.finish();
final DirCacheIterator i = new DirCacheIterator(dc);
- final TreeWalk tw = new TreeWalk(db);
- tw.addTree(i);
- tw.setRecursive(true);
- int pathIdx = 0;
- while (tw.next()) {
- final DirCacheIterator c = tw.getTree(0, DirCacheIterator.class);
- assertNotNull(c);
- assertEquals(pathIdx, c.ptr);
- assertSame(ents[pathIdx], c.getDirCacheEntry());
- assertEquals(paths[pathIdx], tw.getPathString());
- assertEquals(mode.getBits(), tw.getRawMode(0));
- assertSame(mode, tw.getFileMode(0));
- pathIdx++;
+ try (final TreeWalk tw = new TreeWalk(db)) {
+ tw.addTree(i);
+ tw.setRecursive(true);
+ int pathIdx = 0;
+ while (tw.next()) {
+ final DirCacheIterator c = tw.getTree(0, DirCacheIterator.class);
+ assertNotNull(c);
+ assertEquals(pathIdx, c.ptr);
+ assertSame(ents[pathIdx], c.getDirCacheEntry());
+ assertEquals(paths[pathIdx], tw.getPathString());
+ assertEquals(mode.getBits(), tw.getRawMode(0));
+ assertSame(mode, tw.getFileMode(0));
+ pathIdx++;
+ }
+ assertEquals(paths.length, pathIdx);
}
- assertEquals(paths.length, pathIdx);
}
@Test
@@ -236,21 +240,22 @@ public class DirCacheIteratorTest extends RepositoryTestCase {
b.add(ents[i]);
b.finish();
- final TreeWalk tw = new TreeWalk(db);
- tw.addTree(new DirCacheIterator(dc));
- tw.setRecursive(true);
- int pathIdx = 0;
- while (tw.next()) {
- final DirCacheIterator c = tw.getTree(0, DirCacheIterator.class);
- assertNotNull(c);
- assertEquals(pathIdx, c.ptr);
- assertSame(ents[pathIdx], c.getDirCacheEntry());
- assertEquals(paths[pathIdx], tw.getPathString());
- assertEquals(mode.getBits(), tw.getRawMode(0));
- assertSame(mode, tw.getFileMode(0));
- pathIdx++;
+ try (final TreeWalk tw = new TreeWalk(db)) {
+ tw.addTree(new DirCacheIterator(dc));
+ tw.setRecursive(true);
+ int pathIdx = 0;
+ while (tw.next()) {
+ final DirCacheIterator c = tw.getTree(0, DirCacheIterator.class);
+ assertNotNull(c);
+ assertEquals(pathIdx, c.ptr);
+ assertSame(ents[pathIdx], c.getDirCacheEntry());
+ assertEquals(paths[pathIdx], tw.getPathString());
+ assertEquals(mode.getBits(), tw.getRawMode(0));
+ assertSame(mode, tw.getFileMode(0));
+ pathIdx++;
+ }
+ assertEquals(paths.length, pathIdx);
}
- assertEquals(paths.length, pathIdx);
}
@Test
@@ -397,22 +402,23 @@ public class DirCacheIteratorTest extends RepositoryTestCase {
b.add(ents[i]);
b.finish();
- final TreeWalk tw = new TreeWalk(db);
- for (int victimIdx = 0; victimIdx < paths.length; victimIdx++) {
- tw.reset();
- tw.addTree(new DirCacheIterator(dc));
- tw.setFilter(PathFilterGroup.createFromStrings(Collections
- .singleton(paths[victimIdx])));
- tw.setRecursive(tw.getFilter().shouldBeRecursive());
- assertTrue(tw.next());
- final DirCacheIterator c = tw.getTree(0, DirCacheIterator.class);
- assertNotNull(c);
- assertEquals(victimIdx, c.ptr);
- assertSame(ents[victimIdx], c.getDirCacheEntry());
- assertEquals(paths[victimIdx], tw.getPathString());
- assertEquals(mode.getBits(), tw.getRawMode(0));
- assertSame(mode, tw.getFileMode(0));
- assertFalse(tw.next());
+ try (final TreeWalk tw = new TreeWalk(db)) {
+ for (int victimIdx = 0; victimIdx < paths.length; victimIdx++) {
+ tw.reset();
+ tw.addTree(new DirCacheIterator(dc));
+ tw.setFilter(PathFilterGroup.createFromStrings(Collections
+ .singleton(paths[victimIdx])));
+ tw.setRecursive(tw.getFilter().shouldBeRecursive());
+ assertTrue(tw.next());
+ final DirCacheIterator c = tw.getTree(0, DirCacheIterator.class);
+ assertNotNull(c);
+ assertEquals(victimIdx, c.ptr);
+ assertSame(ents[victimIdx], c.getDirCacheEntry());
+ assertEquals(paths[victimIdx], tw.getPathString());
+ assertEquals(mode.getBits(), tw.getRawMode(0));
+ assertSame(mode, tw.getFileMode(0));
+ assertFalse(tw.next());
+ }
}
}
@@ -424,18 +430,19 @@ public class DirCacheIteratorTest extends RepositoryTestCase {
final DirCache dc = DirCache.read(path, FS.DETECTED);
assertEquals(2, dc.getEntryCount());
- final TreeWalk tw = new TreeWalk(db);
- tw.setRecursive(true);
- tw.addTree(new DirCacheIterator(dc));
+ try (final TreeWalk tw = new TreeWalk(db)) {
+ tw.setRecursive(true);
+ tw.addTree(new DirCacheIterator(dc));
- assertTrue(tw.next());
- assertEquals("a/a", tw.getPathString());
- assertSame(FileMode.REGULAR_FILE, tw.getFileMode(0));
+ assertTrue(tw.next());
+ assertEquals("a/a", tw.getPathString());
+ assertSame(FileMode.REGULAR_FILE, tw.getFileMode(0));
- assertTrue(tw.next());
- assertEquals("q", tw.getPathString());
- assertSame(FileMode.REGULAR_FILE, tw.getFileMode(0));
+ assertTrue(tw.next());
+ assertEquals("q", tw.getPathString());
+ assertSame(FileMode.REGULAR_FILE, tw.getFileMode(0));
- assertFalse(tw.next());
+ assertFalse(tw.next());
+ }
}
}
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/gitrepo/ManifestParserTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/gitrepo/ManifestParserTest.java
index 5ed4268eb8..30b3df1c0d 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/gitrepo/ManifestParserTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/gitrepo/ManifestParserTest.java
@@ -43,8 +43,9 @@
package org.eclipse.jgit.gitrepo;
import static org.junit.Assert.assertTrue;
+import static java.nio.charset.StandardCharsets.UTF_8;
-import java.io.StringBufferInputStream;
+import java.io.ByteArrayInputStream;
import java.util.HashSet;
import java.util.Set;
@@ -77,7 +78,7 @@ public class ManifestParserTest {
ManifestParser parser = new ManifestParser(
null, null, "master", baseUrl, null, null);
- parser.read(new StringBufferInputStream(xmlContent.toString()));
+ parser.read(new ByteArrayInputStream(xmlContent.toString().getBytes(UTF_8)));
// Unfiltered projects should have them all.
results.clear();
results.add("foo");
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcPackRefsTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcPackRefsTest.java
index fa40458f34..48ea13b98a 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcPackRefsTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcPackRefsTest.java
@@ -118,7 +118,7 @@ public class GcPackRefsTest extends GcTestCase {
tr.lightweightTag("t1", a);
tr.lightweightTag("t2", a);
LockFile refLock = new LockFile(new File(repo.getDirectory(),
- "refs/tags/t1"), repo.getFS());
+ "refs/tags/t1"));
try {
refLock.lock();
gc.packRefs();
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/LockFileTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/LockFileTest.java
index 1a3a567f9f..f1bc7c8f64 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/LockFileTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/LockFileTest.java
@@ -61,25 +61,26 @@ public class LockFileTest extends RepositoryTestCase {
@Test
public void lockFailedExceptionRecovery() throws Exception {
- Git git = new Git(db);
- writeTrashFile("file.txt", "content");
- git.add().addFilepattern("file.txt").call();
- RevCommit commit1 = git.commit().setMessage("create file").call();
+ try (Git git = new Git(db)) {
+ writeTrashFile("file.txt", "content");
+ git.add().addFilepattern("file.txt").call();
+ RevCommit commit1 = git.commit().setMessage("create file").call();
- assertNotNull(commit1);
- writeTrashFile("file.txt", "content2");
- git.add().addFilepattern("file.txt").call();
- assertNotNull(git.commit().setMessage("edit file").call());
+ assertNotNull(commit1);
+ writeTrashFile("file.txt", "content2");
+ git.add().addFilepattern("file.txt").call();
+ assertNotNull(git.commit().setMessage("edit file").call());
- LockFile lf = new LockFile(db.getIndexFile(), db.getFS());
- assertTrue(lf.lock());
- try {
- git.checkout().setName(commit1.name()).call();
- fail("JGitInternalException not thrown");
- } catch (JGitInternalException e) {
- assertTrue(e.getCause() instanceof LockFailedException);
- lf.unlock();
- git.checkout().setName(commit1.name()).call();
+ LockFile lf = new LockFile(db.getIndexFile());
+ assertTrue(lf.lock());
+ try {
+ git.checkout().setName(commit1.name()).call();
+ fail("JGitInternalException not thrown");
+ } catch (JGitInternalException e) {
+ assertTrue(e.getCause() instanceof LockFailedException);
+ lf.unlock();
+ git.checkout().setName(commit1.name()).call();
+ }
}
}
}
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/RefUpdateTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/RefUpdateTest.java
index 4d91a2368d..4be1d6d370 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/RefUpdateTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/RefUpdateTest.java
@@ -597,14 +597,13 @@ public class RefUpdateTest extends SampleDataRepositoryTestCase {
RefUpdate updateRef = db.updateRef("refs/heads/master");
updateRef.setNewObjectId(pid);
LockFile lockFile1 = new LockFile(new File(db.getDirectory(),
- "refs/heads/master"), db.getFS());
+ "refs/heads/master"));
try {
assertTrue(lockFile1.lock()); // precondition to test
Result update = updateRef.update();
assertEquals(Result.LOCK_FAILURE, update);
assertEquals(opid, db.resolve("refs/heads/master"));
- LockFile lockFile2 = new LockFile(new File(db.getDirectory(),"refs/heads/master"),
- db.getFS());
+ LockFile lockFile2 = new LockFile(new File(db.getDirectory(),"refs/heads/master"));
assertFalse(lockFile2.lock()); // was locked, still is
} finally {
lockFile1.unlock();
@@ -747,8 +746,7 @@ public class RefUpdateTest extends SampleDataRepositoryTestCase {
"logs/" + fromName).exists());
// "someone" has branch X locked
- LockFile lockFile = new LockFile(new File(db.getDirectory(), toLock),
- db.getFS());
+ LockFile lockFile = new LockFile(new File(db.getDirectory(), toLock));
try {
assertTrue(lockFile.lock());
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/DirCacheCheckoutMaliciousPathTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/DirCacheCheckoutMaliciousPathTest.java
index ca3e0666ea..59a4699bcd 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/DirCacheCheckoutMaliciousPathTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/DirCacheCheckoutMaliciousPathTest.java
@@ -338,68 +338,69 @@ public class DirCacheCheckoutMaliciousPathTest extends RepositoryTestCase {
*/
private void testMaliciousPath(boolean good, boolean secondCheckout,
String... path) throws GitAPIException, IOException {
- Git git = new Git(db);
- ObjectInserter newObjectInserter;
- newObjectInserter = git.getRepository().newObjectInserter();
- ObjectId blobId = newObjectInserter.insert(Constants.OBJ_BLOB,
- "data".getBytes());
- newObjectInserter = git.getRepository().newObjectInserter();
- FileMode mode = FileMode.REGULAR_FILE;
- ObjectId insertId = blobId;
- for (int i = path.length - 1; i >= 0; --i) {
- TreeFormatter treeFormatter = new TreeFormatter();
- treeFormatter.append("goodpath", mode, insertId);
- insertId = newObjectInserter.insert(treeFormatter);
- mode = FileMode.TREE;
- }
- newObjectInserter = git.getRepository().newObjectInserter();
- CommitBuilder commitBuilder = new CommitBuilder();
- commitBuilder.setAuthor(author);
- commitBuilder.setCommitter(committer);
- commitBuilder.setMessage("foo#1");
- commitBuilder.setTreeId(insertId);
- ObjectId firstCommitId = newObjectInserter.insert(commitBuilder);
-
- newObjectInserter = git.getRepository().newObjectInserter();
- mode = FileMode.REGULAR_FILE;
- insertId = blobId;
- for (int i = path.length - 1; i >= 0; --i) {
- TreeFormatter treeFormatter = new TreeFormatter();
- treeFormatter.append(path[i], mode, insertId);
- insertId = newObjectInserter.insert(treeFormatter);
- mode = FileMode.TREE;
- }
+ try (Git git = new Git(db);
+ RevWalk revWalk = new RevWalk(git.getRepository())) {
+ ObjectInserter newObjectInserter;
+ newObjectInserter = git.getRepository().newObjectInserter();
+ ObjectId blobId = newObjectInserter.insert(Constants.OBJ_BLOB,
+ "data".getBytes());
+ newObjectInserter = git.getRepository().newObjectInserter();
+ FileMode mode = FileMode.REGULAR_FILE;
+ ObjectId insertId = blobId;
+ for (int i = path.length - 1; i >= 0; --i) {
+ TreeFormatter treeFormatter = new TreeFormatter();
+ treeFormatter.append("goodpath", mode, insertId);
+ insertId = newObjectInserter.insert(treeFormatter);
+ mode = FileMode.TREE;
+ }
+ newObjectInserter = git.getRepository().newObjectInserter();
+ CommitBuilder commitBuilder = new CommitBuilder();
+ commitBuilder.setAuthor(author);
+ commitBuilder.setCommitter(committer);
+ commitBuilder.setMessage("foo#1");
+ commitBuilder.setTreeId(insertId);
+ ObjectId firstCommitId = newObjectInserter.insert(commitBuilder);
+
+ newObjectInserter = git.getRepository().newObjectInserter();
+ mode = FileMode.REGULAR_FILE;
+ insertId = blobId;
+ for (int i = path.length - 1; i >= 0; --i) {
+ TreeFormatter treeFormatter = new TreeFormatter();
+ treeFormatter.append(path[i], mode, insertId);
+ insertId = newObjectInserter.insert(treeFormatter);
+ mode = FileMode.TREE;
+ }
- // Create another commit
- commitBuilder = new CommitBuilder();
- commitBuilder.setAuthor(author);
- commitBuilder.setCommitter(committer);
- commitBuilder.setMessage("foo#2");
- commitBuilder.setTreeId(insertId);
- commitBuilder.setParentId(firstCommitId);
- ObjectId commitId = newObjectInserter.insert(commitBuilder);
-
- RevWalk revWalk = new RevWalk(git.getRepository());
- if (!secondCheckout)
- git.checkout().setStartPoint(revWalk.parseCommit(firstCommitId))
- .setName("refs/heads/master").setCreateBranch(true).call();
- try {
- if (secondCheckout) {
- git.checkout().setStartPoint(revWalk.parseCommit(commitId))
- .setName("refs/heads/master").setCreateBranch(true)
- .call();
- } else {
- git.branchCreate().setName("refs/heads/next")
- .setStartPoint(commitId.name()).call();
- git.checkout().setName("refs/heads/next")
- .call();
+ // Create another commit
+ commitBuilder = new CommitBuilder();
+ commitBuilder.setAuthor(author);
+ commitBuilder.setCommitter(committer);
+ commitBuilder.setMessage("foo#2");
+ commitBuilder.setTreeId(insertId);
+ commitBuilder.setParentId(firstCommitId);
+ ObjectId commitId = newObjectInserter.insert(commitBuilder);
+
+ if (!secondCheckout)
+ git.checkout().setStartPoint(revWalk.parseCommit(firstCommitId))
+ .setName("refs/heads/master").setCreateBranch(true).call();
+ try {
+ if (secondCheckout) {
+ git.checkout().setStartPoint(revWalk.parseCommit(commitId))
+ .setName("refs/heads/master").setCreateBranch(true)
+ .call();
+ } else {
+ git.branchCreate().setName("refs/heads/next")
+ .setStartPoint(commitId.name()).call();
+ git.checkout().setName("refs/heads/next")
+ .call();
+ }
+ if (!good)
+ fail("Checkout of Tree " + Arrays.asList(path) + " should fail");
+ } catch (InvalidPathException e) {
+ if (good)
+ throw e;
+ assertTrue(e.getMessage().startsWith("Invalid path"));
}
- if (!good)
- fail("Checkout of Tree " + Arrays.asList(path) + " should fail");
- } catch (InvalidPathException e) {
- if (good)
- throw e;
- assertTrue(e.getMessage().startsWith("Invalid path"));
}
}
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/IndexDiffTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/IndexDiffTest.java
index 18c959607a..733f1668bf 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/IndexDiffTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/IndexDiffTest.java
@@ -148,8 +148,9 @@ public class IndexDiffTest extends RepositoryTestCase {
writeTrashFile("file2", "file2");
writeTrashFile("dir/file3", "dir/file3");
- Git git = new Git(db);
- git.add().addFilepattern("file2").addFilepattern("dir/file3").call();
+ try (Git git = new Git(db)) {
+ git.add().addFilepattern("file2").addFilepattern("dir/file3").call();
+ }
writeTrashFile("dir/file3", "changed");
@@ -177,31 +178,31 @@ public class IndexDiffTest extends RepositoryTestCase {
@Test
public void testConflicting() throws Exception {
- Git git = new Git(db);
-
- writeTrashFile("a", "1\na\n3\n");
- writeTrashFile("b", "1\nb\n3\n");
- git.add().addFilepattern("a").addFilepattern("b").call();
- RevCommit initialCommit = git.commit().setMessage("initial").call();
-
- // create side branch with two modifications
- createBranch(initialCommit, "refs/heads/side");
- checkoutBranch("refs/heads/side");
- writeTrashFile("a", "1\na(side)\n3\n");
- writeTrashFile("b", "1\nb\n3\n(side)");
- git.add().addFilepattern("a").addFilepattern("b").call();
- RevCommit secondCommit = git.commit().setMessage("side").call();
-
- // update a on master to generate conflict
- checkoutBranch("refs/heads/master");
- writeTrashFile("a", "1\na(main)\n3\n");
- git.add().addFilepattern("a").call();
- git.commit().setMessage("main").call();
-
- // merge side with master
- MergeResult result = git.merge().include(secondCommit.getId())
- .setStrategy(MergeStrategy.RESOLVE).call();
- assertEquals(MergeStatus.CONFLICTING, result.getMergeStatus());
+ try (Git git = new Git(db)) {
+ writeTrashFile("a", "1\na\n3\n");
+ writeTrashFile("b", "1\nb\n3\n");
+ git.add().addFilepattern("a").addFilepattern("b").call();
+ RevCommit initialCommit = git.commit().setMessage("initial").call();
+
+ // create side branch with two modifications
+ createBranch(initialCommit, "refs/heads/side");
+ checkoutBranch("refs/heads/side");
+ writeTrashFile("a", "1\na(side)\n3\n");
+ writeTrashFile("b", "1\nb\n3\n(side)");
+ git.add().addFilepattern("a").addFilepattern("b").call();
+ RevCommit secondCommit = git.commit().setMessage("side").call();
+
+ // update a on master to generate conflict
+ checkoutBranch("refs/heads/master");
+ writeTrashFile("a", "1\na(main)\n3\n");
+ git.add().addFilepattern("a").call();
+ git.commit().setMessage("main").call();
+
+ // merge side with master
+ MergeResult result = git.merge().include(secondCommit.getId())
+ .setStrategy(MergeStrategy.RESOLVE).call();
+ assertEquals(MergeStatus.CONFLICTING, result.getMergeStatus());
+ }
FileTreeIterator iterator = new FileTreeIterator(db);
IndexDiff diff = new IndexDiff(db, Constants.HEAD, iterator);
@@ -221,29 +222,29 @@ public class IndexDiffTest extends RepositoryTestCase {
@Test
public void testConflictingDeletedAndModified() throws Exception {
- Git git = new Git(db);
-
- writeTrashFile("a", "1\na\n3\n");
- writeTrashFile("b", "1\nb\n3\n");
- git.add().addFilepattern("a").addFilepattern("b").call();
- RevCommit initialCommit = git.commit().setMessage("initial").call();
-
- // create side branch and delete "a"
- createBranch(initialCommit, "refs/heads/side");
- checkoutBranch("refs/heads/side");
- git.rm().addFilepattern("a").call();
- RevCommit secondCommit = git.commit().setMessage("side").call();
-
- // update a on master to generate conflict
- checkoutBranch("refs/heads/master");
- writeTrashFile("a", "1\na(main)\n3\n");
- git.add().addFilepattern("a").call();
- git.commit().setMessage("main").call();
-
- // merge side with master
- MergeResult result = git.merge().include(secondCommit.getId())
- .setStrategy(MergeStrategy.RESOLVE).call();
- assertEquals(MergeStatus.CONFLICTING, result.getMergeStatus());
+ try (Git git = new Git(db)) {
+ writeTrashFile("a", "1\na\n3\n");
+ writeTrashFile("b", "1\nb\n3\n");
+ git.add().addFilepattern("a").addFilepattern("b").call();
+ RevCommit initialCommit = git.commit().setMessage("initial").call();
+
+ // create side branch and delete "a"
+ createBranch(initialCommit, "refs/heads/side");
+ checkoutBranch("refs/heads/side");
+ git.rm().addFilepattern("a").call();
+ RevCommit secondCommit = git.commit().setMessage("side").call();
+
+ // update a on master to generate conflict
+ checkoutBranch("refs/heads/master");
+ writeTrashFile("a", "1\na(main)\n3\n");
+ git.add().addFilepattern("a").call();
+ git.commit().setMessage("main").call();
+
+ // merge side with master
+ MergeResult result = git.merge().include(secondCommit.getId())
+ .setStrategy(MergeStrategy.RESOLVE).call();
+ assertEquals(MergeStatus.CONFLICTING, result.getMergeStatus());
+ }
FileTreeIterator iterator = new FileTreeIterator(db);
IndexDiff diff = new IndexDiff(db, Constants.HEAD, iterator);
@@ -262,28 +263,28 @@ public class IndexDiffTest extends RepositoryTestCase {
@Test
public void testConflictingFromMultipleCreations() throws Exception {
- Git git = new Git(db);
+ try (Git git = new Git(db)) {
+ writeTrashFile("a", "1\na\n3\n");
+ git.add().addFilepattern("a").call();
+ RevCommit initialCommit = git.commit().setMessage("initial").call();
- writeTrashFile("a", "1\na\n3\n");
- git.add().addFilepattern("a").call();
- RevCommit initialCommit = git.commit().setMessage("initial").call();
+ createBranch(initialCommit, "refs/heads/side");
+ checkoutBranch("refs/heads/side");
- createBranch(initialCommit, "refs/heads/side");
- checkoutBranch("refs/heads/side");
+ writeTrashFile("b", "1\nb(side)\n3\n");
+ git.add().addFilepattern("b").call();
+ RevCommit secondCommit = git.commit().setMessage("side").call();
- writeTrashFile("b", "1\nb(side)\n3\n");
- git.add().addFilepattern("b").call();
- RevCommit secondCommit = git.commit().setMessage("side").call();
+ checkoutBranch("refs/heads/master");
- checkoutBranch("refs/heads/master");
+ writeTrashFile("b", "1\nb(main)\n3\n");
+ git.add().addFilepattern("b").call();
+ git.commit().setMessage("main").call();
- writeTrashFile("b", "1\nb(main)\n3\n");
- git.add().addFilepattern("b").call();
- git.commit().setMessage("main").call();
-
- MergeResult result = git.merge().include(secondCommit.getId())
- .setStrategy(MergeStrategy.RESOLVE).call();
- assertEquals(MergeStatus.CONFLICTING, result.getMergeStatus());
+ MergeResult result = git.merge().include(secondCommit.getId())
+ .setStrategy(MergeStrategy.RESOLVE).call();
+ assertEquals(MergeStatus.CONFLICTING, result.getMergeStatus());
+ }
FileTreeIterator iterator = new FileTreeIterator(db);
IndexDiff diff = new IndexDiff(db, Constants.HEAD, iterator);
@@ -304,11 +305,12 @@ public class IndexDiffTest extends RepositoryTestCase {
writeTrashFile("a.c", "a.c");
writeTrashFile("a=c", "a=c");
writeTrashFile("a=d", "a=d");
- Git git = new Git(db);
- git.add().addFilepattern("a.b").call();
- git.add().addFilepattern("a.c").call();
- git.add().addFilepattern("a=c").call();
- git.add().addFilepattern("a=d").call();
+ try (Git git = new Git(db)) {
+ git.add().addFilepattern("a.b").call();
+ git.add().addFilepattern("a.c").call();
+ git.add().addFilepattern("a=c").call();
+ git.add().addFilepattern("a=d").call();
+ }
TreeFormatter tree = new TreeFormatter();
// got the hash id'd from the data using echo -n a.b|git hash-object -t blob --stdin
@@ -338,7 +340,6 @@ public class IndexDiffTest extends RepositoryTestCase {
*/
@Test
public void testUnchangedComplex() throws IOException, GitAPIException {
- Git git = new Git(db);
writeTrashFile("a.b", "a.b");
writeTrashFile("a.c", "a.c");
writeTrashFile("a/b.b/b", "a/b.b/b");
@@ -346,10 +347,12 @@ public class IndexDiffTest extends RepositoryTestCase {
writeTrashFile("a/c", "a/c");
writeTrashFile("a=c", "a=c");
writeTrashFile("a=d", "a=d");
- git.add().addFilepattern("a.b").addFilepattern("a.c")
- .addFilepattern("a/b.b/b").addFilepattern("a/b")
- .addFilepattern("a/c").addFilepattern("a=c")
- .addFilepattern("a=d").call();
+ try (Git git = new Git(db)) {
+ git.add().addFilepattern("a.b").addFilepattern("a.c")
+ .addFilepattern("a/b.b/b").addFilepattern("a/b")
+ .addFilepattern("a/c").addFilepattern("a=c")
+ .addFilepattern("a=d").call();
+ }
// got the hash id'd from the data using echo -n a.b|git hash-object -t blob --stdin
@@ -397,11 +400,12 @@ public class IndexDiffTest extends RepositoryTestCase {
*/
@Test
public void testRemovedUntracked() throws Exception{
- Git git = new Git(db);
String path = "file";
- writeTrashFile(path, "content");
- git.add().addFilepattern(path).call();
- git.commit().setMessage("commit").call();
+ try (Git git = new Git(db)) {
+ writeTrashFile(path, "content");
+ git.add().addFilepattern(path).call();
+ git.commit().setMessage("commit").call();
+ }
removeFromIndex(path);
FileTreeIterator iterator = new FileTreeIterator(db);
IndexDiff diff = new IndexDiff(db, Constants.HEAD, iterator);
@@ -417,51 +421,51 @@ public class IndexDiffTest extends RepositoryTestCase {
*/
@Test
public void testUntrackedFolders() throws Exception {
- Git git = new Git(db);
-
- IndexDiff diff = new IndexDiff(db, Constants.HEAD,
- new FileTreeIterator(db));
- diff.diff();
- assertEquals(Collections.EMPTY_SET, diff.getUntrackedFolders());
-
- writeTrashFile("readme", "");
- writeTrashFile("src/com/A.java", "");
- writeTrashFile("src/com/B.java", "");
- writeTrashFile("src/org/A.java", "");
- writeTrashFile("src/org/B.java", "");
- writeTrashFile("target/com/A.java", "");
- writeTrashFile("target/com/B.java", "");
- writeTrashFile("target/org/A.java", "");
- writeTrashFile("target/org/B.java", "");
-
- git.add().addFilepattern("src").addFilepattern("readme").call();
- git.commit().setMessage("initial").call();
-
- diff = new IndexDiff(db, Constants.HEAD,
- new FileTreeIterator(db));
- diff.diff();
- assertEquals(new HashSet<String>(Arrays.asList("target")),
- diff.getUntrackedFolders());
-
- writeTrashFile("src/tst/A.java", "");
- writeTrashFile("src/tst/B.java", "");
-
- diff = new IndexDiff(db, Constants.HEAD, new FileTreeIterator(db));
- diff.diff();
- assertEquals(new HashSet<String>(Arrays.asList("target", "src/tst")),
- diff.getUntrackedFolders());
-
- git.rm().addFilepattern("src/com/B.java").addFilepattern("src/org")
- .call();
- git.commit().setMessage("second").call();
- writeTrashFile("src/org/C.java", "");
-
- diff = new IndexDiff(db, Constants.HEAD, new FileTreeIterator(db));
- diff.diff();
- assertEquals(
- new HashSet<String>(Arrays.asList("src/org", "src/tst",
- "target")),
- diff.getUntrackedFolders());
+ try (Git git = new Git(db)) {
+ IndexDiff diff = new IndexDiff(db, Constants.HEAD,
+ new FileTreeIterator(db));
+ diff.diff();
+ assertEquals(Collections.EMPTY_SET, diff.getUntrackedFolders());
+
+ writeTrashFile("readme", "");
+ writeTrashFile("src/com/A.java", "");
+ writeTrashFile("src/com/B.java", "");
+ writeTrashFile("src/org/A.java", "");
+ writeTrashFile("src/org/B.java", "");
+ writeTrashFile("target/com/A.java", "");
+ writeTrashFile("target/com/B.java", "");
+ writeTrashFile("target/org/A.java", "");
+ writeTrashFile("target/org/B.java", "");
+
+ git.add().addFilepattern("src").addFilepattern("readme").call();
+ git.commit().setMessage("initial").call();
+
+ diff = new IndexDiff(db, Constants.HEAD,
+ new FileTreeIterator(db));
+ diff.diff();
+ assertEquals(new HashSet<String>(Arrays.asList("target")),
+ diff.getUntrackedFolders());
+
+ writeTrashFile("src/tst/A.java", "");
+ writeTrashFile("src/tst/B.java", "");
+
+ diff = new IndexDiff(db, Constants.HEAD, new FileTreeIterator(db));
+ diff.diff();
+ assertEquals(new HashSet<String>(Arrays.asList("target", "src/tst")),
+ diff.getUntrackedFolders());
+
+ git.rm().addFilepattern("src/com/B.java").addFilepattern("src/org")
+ .call();
+ git.commit().setMessage("second").call();
+ writeTrashFile("src/org/C.java", "");
+
+ diff = new IndexDiff(db, Constants.HEAD, new FileTreeIterator(db));
+ diff.diff();
+ assertEquals(
+ new HashSet<String>(Arrays.asList("src/org", "src/tst",
+ "target")),
+ diff.getUntrackedFolders());
+ }
}
/**
@@ -471,85 +475,86 @@ public class IndexDiffTest extends RepositoryTestCase {
*/
@Test
public void testUntrackedNotIgnoredFolders() throws Exception {
- Git git = new Git(db);
-
- IndexDiff diff = new IndexDiff(db, Constants.HEAD,
- new FileTreeIterator(db));
- diff.diff();
- assertEquals(Collections.EMPTY_SET, diff.getUntrackedFolders());
-
- writeTrashFile("readme", "");
- writeTrashFile("sr/com/X.java", "");
- writeTrashFile("src/com/A.java", "");
- writeTrashFile("src/org/B.java", "");
- writeTrashFile("srcs/org/Y.java", "");
- writeTrashFile("target/com/A.java", "");
- writeTrashFile("target/org/B.java", "");
- writeTrashFile(".gitignore", "/target\n/sr");
-
- git.add().addFilepattern("readme").addFilepattern(".gitignore")
- .addFilepattern("srcs/").call();
- git.commit().setMessage("initial").call();
-
- diff = new IndexDiff(db, Constants.HEAD, new FileTreeIterator(db));
- diff.diff();
- assertEquals(new HashSet<String>(Arrays.asList("src")),
- diff.getUntrackedFolders());
-
- git.add().addFilepattern("src").call();
- writeTrashFile("sr/com/X1.java", "");
- writeTrashFile("src/tst/A.java", "");
- writeTrashFile("src/tst/B.java", "");
- writeTrashFile("srcs/com/Y1.java", "");
- deleteTrashFile(".gitignore");
-
- diff = new IndexDiff(db, Constants.HEAD, new FileTreeIterator(db));
- diff.diff();
- assertEquals(
- new HashSet<String>(Arrays.asList("srcs/com", "sr", "src/tst",
- "target")),
- diff.getUntrackedFolders());
+ try (Git git = new Git(db)) {
+ IndexDiff diff = new IndexDiff(db, Constants.HEAD,
+ new FileTreeIterator(db));
+ diff.diff();
+ assertEquals(Collections.EMPTY_SET, diff.getUntrackedFolders());
+
+ writeTrashFile("readme", "");
+ writeTrashFile("sr/com/X.java", "");
+ writeTrashFile("src/com/A.java", "");
+ writeTrashFile("src/org/B.java", "");
+ writeTrashFile("srcs/org/Y.java", "");
+ writeTrashFile("target/com/A.java", "");
+ writeTrashFile("target/org/B.java", "");
+ writeTrashFile(".gitignore", "/target\n/sr");
+
+ git.add().addFilepattern("readme").addFilepattern(".gitignore")
+ .addFilepattern("srcs/").call();
+ git.commit().setMessage("initial").call();
+
+ diff = new IndexDiff(db, Constants.HEAD, new FileTreeIterator(db));
+ diff.diff();
+ assertEquals(new HashSet<String>(Arrays.asList("src")),
+ diff.getUntrackedFolders());
+
+ git.add().addFilepattern("src").call();
+ writeTrashFile("sr/com/X1.java", "");
+ writeTrashFile("src/tst/A.java", "");
+ writeTrashFile("src/tst/B.java", "");
+ writeTrashFile("srcs/com/Y1.java", "");
+ deleteTrashFile(".gitignore");
+
+ diff = new IndexDiff(db, Constants.HEAD, new FileTreeIterator(db));
+ diff.diff();
+ assertEquals(
+ new HashSet<String>(Arrays.asList("srcs/com", "sr", "src/tst",
+ "target")),
+ diff.getUntrackedFolders());
+ }
}
@Test
public void testAssumeUnchanged() throws Exception {
- Git git = new Git(db);
- String path = "file";
- writeTrashFile(path, "content");
- git.add().addFilepattern(path).call();
- String path2 = "file2";
- writeTrashFile(path2, "content");
- String path3 = "file3";
- writeTrashFile(path3, "some content");
- git.add().addFilepattern(path2).addFilepattern(path3).call();
- git.commit().setMessage("commit").call();
- assumeUnchanged(path2);
- assumeUnchanged(path3);
- writeTrashFile(path, "more content");
- deleteTrashFile(path3);
-
- FileTreeIterator iterator = new FileTreeIterator(db);
- IndexDiff diff = new IndexDiff(db, Constants.HEAD, iterator);
- diff.diff();
- assertEquals(2, diff.getAssumeUnchanged().size());
- assertEquals(1, diff.getModified().size());
- assertEquals(0, diff.getChanged().size());
- assertTrue(diff.getAssumeUnchanged().contains("file2"));
- assertTrue(diff.getAssumeUnchanged().contains("file3"));
- assertTrue(diff.getModified().contains("file"));
-
- git.add().addFilepattern(".").call();
-
- iterator = new FileTreeIterator(db);
- diff = new IndexDiff(db, Constants.HEAD, iterator);
- diff.diff();
- assertEquals(2, diff.getAssumeUnchanged().size());
- assertEquals(0, diff.getModified().size());
- assertEquals(1, diff.getChanged().size());
- assertTrue(diff.getAssumeUnchanged().contains("file2"));
- assertTrue(diff.getAssumeUnchanged().contains("file3"));
- assertTrue(diff.getChanged().contains("file"));
- assertEquals(Collections.EMPTY_SET, diff.getUntrackedFolders());
+ try (Git git = new Git(db)) {
+ String path = "file";
+ writeTrashFile(path, "content");
+ git.add().addFilepattern(path).call();
+ String path2 = "file2";
+ writeTrashFile(path2, "content");
+ String path3 = "file3";
+ writeTrashFile(path3, "some content");
+ git.add().addFilepattern(path2).addFilepattern(path3).call();
+ git.commit().setMessage("commit").call();
+ assumeUnchanged(path2);
+ assumeUnchanged(path3);
+ writeTrashFile(path, "more content");
+ deleteTrashFile(path3);
+
+ FileTreeIterator iterator = new FileTreeIterator(db);
+ IndexDiff diff = new IndexDiff(db, Constants.HEAD, iterator);
+ diff.diff();
+ assertEquals(2, diff.getAssumeUnchanged().size());
+ assertEquals(1, diff.getModified().size());
+ assertEquals(0, diff.getChanged().size());
+ assertTrue(diff.getAssumeUnchanged().contains("file2"));
+ assertTrue(diff.getAssumeUnchanged().contains("file3"));
+ assertTrue(diff.getModified().contains("file"));
+
+ git.add().addFilepattern(".").call();
+
+ iterator = new FileTreeIterator(db);
+ diff = new IndexDiff(db, Constants.HEAD, iterator);
+ diff.diff();
+ assertEquals(2, diff.getAssumeUnchanged().size());
+ assertEquals(0, diff.getModified().size());
+ assertEquals(1, diff.getChanged().size());
+ assertTrue(diff.getAssumeUnchanged().contains("file2"));
+ assertTrue(diff.getAssumeUnchanged().contains("file3"));
+ assertTrue(diff.getChanged().contains("file"));
+ assertEquals(Collections.EMPTY_SET, diff.getUntrackedFolders());
+ }
}
@Test
@@ -575,147 +580,148 @@ public class IndexDiffTest extends RepositoryTestCase {
@Test
public void testStageState_mergeAndReset_bug() throws Exception {
- Git git = new Git(db);
-
- writeTrashFile("a", "content");
- git.add().addFilepattern("a").call();
- RevCommit initialCommit = git.commit().setMessage("initial commit")
- .call();
-
- // create branch and add a new file
- final String branchName = Constants.R_HEADS + "branch";
- createBranch(initialCommit, branchName);
- checkoutBranch(branchName);
- writeTrashFile("b", "second file content - branch");
- git.add().addFilepattern("b").call();
- RevCommit branchCommit = git.commit().setMessage("branch commit")
- .call();
-
- // checkout master and add the same new file
- checkoutBranch(Constants.R_HEADS + Constants.MASTER);
- writeTrashFile("b", "second file content - master");
- git.add().addFilepattern("b").call();
- git.commit().setMessage("master commit").call();
-
- // try and merge
- MergeResult result = git.merge().include(branchCommit).call();
- assertEquals(MergeStatus.CONFLICTING, result.getMergeStatus());
-
- FileTreeIterator iterator = new FileTreeIterator(db);
- IndexDiff diff = new IndexDiff(db, Constants.HEAD, iterator);
- diff.diff();
-
- assertTrue(diff.getChanged().isEmpty());
- assertTrue(diff.getAdded().isEmpty());
- assertTrue(diff.getRemoved().isEmpty());
- assertTrue(diff.getMissing().isEmpty());
- assertTrue(diff.getModified().isEmpty());
- assertEquals(1, diff.getConflicting().size());
- assertTrue(diff.getConflicting().contains("b"));
- assertEquals(StageState.BOTH_ADDED, diff.getConflictingStageStates()
- .get("b"));
- assertTrue(diff.getUntrackedFolders().isEmpty());
-
- // reset file b to its master state without altering the index
- writeTrashFile("b", "second file content - master");
-
- // we should have the same result
- iterator = new FileTreeIterator(db);
- diff = new IndexDiff(db, Constants.HEAD, iterator);
- diff.diff();
-
- assertTrue(diff.getChanged().isEmpty());
- assertTrue(diff.getAdded().isEmpty());
- assertTrue(diff.getRemoved().isEmpty());
- assertTrue(diff.getMissing().isEmpty());
- assertTrue(diff.getModified().isEmpty());
- assertEquals(1, diff.getConflicting().size());
- assertTrue(diff.getConflicting().contains("b"));
- assertEquals(StageState.BOTH_ADDED, diff.getConflictingStageStates()
- .get("b"));
- assertTrue(diff.getUntrackedFolders().isEmpty());
+ try (Git git = new Git(db)) {
+ writeTrashFile("a", "content");
+ git.add().addFilepattern("a").call();
+ RevCommit initialCommit = git.commit().setMessage("initial commit")
+ .call();
+
+ // create branch and add a new file
+ final String branchName = Constants.R_HEADS + "branch";
+ createBranch(initialCommit, branchName);
+ checkoutBranch(branchName);
+ writeTrashFile("b", "second file content - branch");
+ git.add().addFilepattern("b").call();
+ RevCommit branchCommit = git.commit().setMessage("branch commit")
+ .call();
+
+ // checkout master and add the same new file
+ checkoutBranch(Constants.R_HEADS + Constants.MASTER);
+ writeTrashFile("b", "second file content - master");
+ git.add().addFilepattern("b").call();
+ git.commit().setMessage("master commit").call();
+
+ // try and merge
+ MergeResult result = git.merge().include(branchCommit).call();
+ assertEquals(MergeStatus.CONFLICTING, result.getMergeStatus());
+
+ FileTreeIterator iterator = new FileTreeIterator(db);
+ IndexDiff diff = new IndexDiff(db, Constants.HEAD, iterator);
+ diff.diff();
+
+ assertTrue(diff.getChanged().isEmpty());
+ assertTrue(diff.getAdded().isEmpty());
+ assertTrue(diff.getRemoved().isEmpty());
+ assertTrue(diff.getMissing().isEmpty());
+ assertTrue(diff.getModified().isEmpty());
+ assertEquals(1, diff.getConflicting().size());
+ assertTrue(diff.getConflicting().contains("b"));
+ assertEquals(StageState.BOTH_ADDED, diff.getConflictingStageStates()
+ .get("b"));
+ assertTrue(diff.getUntrackedFolders().isEmpty());
+
+ // reset file b to its master state without altering the index
+ writeTrashFile("b", "second file content - master");
+
+ // we should have the same result
+ iterator = new FileTreeIterator(db);
+ diff = new IndexDiff(db, Constants.HEAD, iterator);
+ diff.diff();
+
+ assertTrue(diff.getChanged().isEmpty());
+ assertTrue(diff.getAdded().isEmpty());
+ assertTrue(diff.getRemoved().isEmpty());
+ assertTrue(diff.getMissing().isEmpty());
+ assertTrue(diff.getModified().isEmpty());
+ assertEquals(1, diff.getConflicting().size());
+ assertTrue(diff.getConflicting().contains("b"));
+ assertEquals(StageState.BOTH_ADDED, diff.getConflictingStageStates()
+ .get("b"));
+ assertTrue(diff.getUntrackedFolders().isEmpty());
+ }
}
@Test
public void testStageState_simulated_bug() throws Exception {
- Git git = new Git(db);
-
- writeTrashFile("a", "content");
- git.add().addFilepattern("a").call();
- RevCommit initialCommit = git.commit().setMessage("initial commit")
- .call();
-
- // create branch and add a new file
- final String branchName = Constants.R_HEADS + "branch";
- createBranch(initialCommit, branchName);
- checkoutBranch(branchName);
- writeTrashFile("b", "second file content - branch");
- git.add().addFilepattern("b").call();
- git.commit().setMessage("branch commit")
- .call();
-
- // checkout master and add the same new file
- checkoutBranch(Constants.R_HEADS + Constants.MASTER);
- writeTrashFile("b", "second file content - master");
- git.add().addFilepattern("b").call();
- git.commit().setMessage("master commit").call();
-
- // Simulate a failed merge of branch into master
- DirCacheBuilder builder = db.lockDirCache().builder();
- DirCacheEntry entry = createEntry("a", FileMode.REGULAR_FILE, 0,
- "content");
- builder.add(entry);
- entry = createEntry("b", FileMode.REGULAR_FILE, 2,
- "second file content - master");
- builder.add(entry);
- entry = createEntry("b", FileMode.REGULAR_FILE, 3,
- "second file content - branch");
- builder.add(entry);
- builder.commit();
-
- FileTreeIterator iterator = new FileTreeIterator(db);
- IndexDiff diff = new IndexDiff(db, Constants.HEAD, iterator);
- diff.diff();
-
- assertTrue(diff.getChanged().isEmpty());
- assertTrue(diff.getAdded().isEmpty());
- assertTrue(diff.getRemoved().isEmpty());
- assertTrue(diff.getMissing().isEmpty());
- assertTrue(diff.getModified().isEmpty());
- assertEquals(1, diff.getConflicting().size());
- assertTrue(diff.getConflicting().contains("b"));
- assertEquals(StageState.BOTH_ADDED, diff.getConflictingStageStates()
- .get("b"));
- assertTrue(diff.getUntrackedFolders().isEmpty());
+ try (Git git = new Git(db)) {
+ writeTrashFile("a", "content");
+ git.add().addFilepattern("a").call();
+ RevCommit initialCommit = git.commit().setMessage("initial commit")
+ .call();
+
+ // create branch and add a new file
+ final String branchName = Constants.R_HEADS + "branch";
+ createBranch(initialCommit, branchName);
+ checkoutBranch(branchName);
+ writeTrashFile("b", "second file content - branch");
+ git.add().addFilepattern("b").call();
+ git.commit().setMessage("branch commit")
+ .call();
+
+ // checkout master and add the same new file
+ checkoutBranch(Constants.R_HEADS + Constants.MASTER);
+ writeTrashFile("b", "second file content - master");
+ git.add().addFilepattern("b").call();
+ git.commit().setMessage("master commit").call();
+
+ // Simulate a failed merge of branch into master
+ DirCacheBuilder builder = db.lockDirCache().builder();
+ DirCacheEntry entry = createEntry("a", FileMode.REGULAR_FILE, 0,
+ "content");
+ builder.add(entry);
+ entry = createEntry("b", FileMode.REGULAR_FILE, 2,
+ "second file content - master");
+ builder.add(entry);
+ entry = createEntry("b", FileMode.REGULAR_FILE, 3,
+ "second file content - branch");
+ builder.add(entry);
+ builder.commit();
+
+ FileTreeIterator iterator = new FileTreeIterator(db);
+ IndexDiff diff = new IndexDiff(db, Constants.HEAD, iterator);
+ diff.diff();
+
+ assertTrue(diff.getChanged().isEmpty());
+ assertTrue(diff.getAdded().isEmpty());
+ assertTrue(diff.getRemoved().isEmpty());
+ assertTrue(diff.getMissing().isEmpty());
+ assertTrue(diff.getModified().isEmpty());
+ assertEquals(1, diff.getConflicting().size());
+ assertTrue(diff.getConflicting().contains("b"));
+ assertEquals(StageState.BOTH_ADDED, diff.getConflictingStageStates()
+ .get("b"));
+ assertTrue(diff.getUntrackedFolders().isEmpty());
+ }
}
@Test
public void testAutoCRLFInput() throws Exception {
- Git git = new Git(db);
- FileBasedConfig config = db.getConfig();
-
- // Make sure core.autocrlf is false before adding
- config.setEnum(ConfigConstants.CONFIG_CORE_SECTION, null,
- ConfigConstants.CONFIG_KEY_AUTOCRLF, AutoCRLF.FALSE);
- config.save();
-
- // File is already in repository with CRLF
- writeTrashFile("crlf.txt", "this\r\ncontains\r\ncrlf\r\n");
- git.add().addFilepattern("crlf.txt").call();
- git.commit().setMessage("Add crlf.txt").call();
-
- // Now set core.autocrlf to input
- config.setEnum(ConfigConstants.CONFIG_CORE_SECTION, null,
- ConfigConstants.CONFIG_KEY_AUTOCRLF, AutoCRLF.INPUT);
- config.save();
-
- FileTreeIterator iterator = new FileTreeIterator(db);
- IndexDiff diff = new IndexDiff(db, Constants.HEAD, iterator);
- diff.diff();
-
- assertTrue(
- "Expected no modified files, but there were: "
- + diff.getModified(), diff.getModified().isEmpty());
+ try (Git git = new Git(db)) {
+ FileBasedConfig config = db.getConfig();
+
+ // Make sure core.autocrlf is false before adding
+ config.setEnum(ConfigConstants.CONFIG_CORE_SECTION, null,
+ ConfigConstants.CONFIG_KEY_AUTOCRLF, AutoCRLF.FALSE);
+ config.save();
+
+ // File is already in repository with CRLF
+ writeTrashFile("crlf.txt", "this\r\ncontains\r\ncrlf\r\n");
+ git.add().addFilepattern("crlf.txt").call();
+ git.commit().setMessage("Add crlf.txt").call();
+
+ // Now set core.autocrlf to input
+ config.setEnum(ConfigConstants.CONFIG_CORE_SECTION, null,
+ ConfigConstants.CONFIG_KEY_AUTOCRLF, AutoCRLF.INPUT);
+ config.save();
+
+ FileTreeIterator iterator = new FileTreeIterator(db);
+ IndexDiff diff = new IndexDiff(db, Constants.HEAD, iterator);
+ diff.diff();
+
+ assertTrue(
+ "Expected no modified files, but there were: "
+ + diff.getModified(), diff.getModified().isEmpty());
+ }
}
private void verifyStageState(StageState expected, int... stages)
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/IndexModificationTimesTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/IndexModificationTimesTest.java
index c6f02f4a49..b9bbbeb9e5 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/IndexModificationTimesTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/IndexModificationTimesTest.java
@@ -49,80 +49,81 @@ public class IndexModificationTimesTest extends RepositoryTestCase {
@Test
public void testLastModifiedTimes() throws Exception {
- Git git = new Git(db);
- String path = "file";
- writeTrashFile(path, "content");
- String path2 = "file2";
- writeTrashFile(path2, "content2");
+ try (Git git = new Git(db)) {
+ String path = "file";
+ writeTrashFile(path, "content");
+ String path2 = "file2";
+ writeTrashFile(path2, "content2");
- git.add().addFilepattern(path).call();
- git.add().addFilepattern(path2).call();
- git.commit().setMessage("commit").call();
+ git.add().addFilepattern(path).call();
+ git.add().addFilepattern(path2).call();
+ git.commit().setMessage("commit").call();
- DirCache dc = db.readDirCache();
- DirCacheEntry entry = dc.getEntry(path);
- DirCacheEntry entry2 = dc.getEntry(path);
+ DirCache dc = db.readDirCache();
+ DirCacheEntry entry = dc.getEntry(path);
+ DirCacheEntry entry2 = dc.getEntry(path);
- assertTrue("last modified shall not be zero!",
- entry.getLastModified() != 0);
+ assertTrue("last modified shall not be zero!",
+ entry.getLastModified() != 0);
- assertTrue("last modified shall not be zero!",
- entry2.getLastModified() != 0);
+ assertTrue("last modified shall not be zero!",
+ entry2.getLastModified() != 0);
- writeTrashFile(path, "new content");
- git.add().addFilepattern(path).call();
- git.commit().setMessage("commit2").call();
+ writeTrashFile(path, "new content");
+ git.add().addFilepattern(path).call();
+ git.commit().setMessage("commit2").call();
- dc = db.readDirCache();
- entry = dc.getEntry(path);
- entry2 = dc.getEntry(path);
+ dc = db.readDirCache();
+ entry = dc.getEntry(path);
+ entry2 = dc.getEntry(path);
- assertTrue("last modified shall not be zero!",
- entry.getLastModified() != 0);
+ assertTrue("last modified shall not be zero!",
+ entry.getLastModified() != 0);
- assertTrue("last modified shall not be zero!",
- entry2.getLastModified() != 0);
+ assertTrue("last modified shall not be zero!",
+ entry2.getLastModified() != 0);
+ }
}
@Test
public void testModify() throws Exception {
- Git git = new Git(db);
- String path = "file";
- writeTrashFile(path, "content");
+ try (Git git = new Git(db)) {
+ String path = "file";
+ writeTrashFile(path, "content");
- git.add().addFilepattern(path).call();
- git.commit().setMessage("commit").call();
+ git.add().addFilepattern(path).call();
+ git.commit().setMessage("commit").call();
- DirCache dc = db.readDirCache();
- DirCacheEntry entry = dc.getEntry(path);
+ DirCache dc = db.readDirCache();
+ DirCacheEntry entry = dc.getEntry(path);
- long masterLastMod = entry.getLastModified();
+ long masterLastMod = entry.getLastModified();
- git.checkout().setCreateBranch(true).setName("side").call();
+ git.checkout().setCreateBranch(true).setName("side").call();
- Thread.sleep(10);
- String path2 = "file2";
- writeTrashFile(path2, "side content");
- git.add().addFilepattern(path2).call();
- git.commit().setMessage("commit").call();
+ Thread.sleep(10);
+ String path2 = "file2";
+ writeTrashFile(path2, "side content");
+ git.add().addFilepattern(path2).call();
+ git.commit().setMessage("commit").call();
- dc = db.readDirCache();
- entry = dc.getEntry(path);
+ dc = db.readDirCache();
+ entry = dc.getEntry(path);
- long sideLastMode = entry.getLastModified();
+ long sideLastMode = entry.getLastModified();
- Thread.sleep(2000);
+ Thread.sleep(2000);
- writeTrashFile(path, "uncommitted content");
- git.checkout().setName("master").call();
+ writeTrashFile(path, "uncommitted content");
+ git.checkout().setName("master").call();
- dc = db.readDirCache();
- entry = dc.getEntry(path);
-
- assertTrue("shall have equal mod time!", masterLastMod == sideLastMode);
- assertTrue("shall not equal master timestamp!",
- entry.getLastModified() == masterLastMod);
+ dc = db.readDirCache();
+ entry = dc.getEntry(path);
+ assertTrue("shall have equal mod time!", masterLastMod == sideLastMode);
+ assertTrue("shall not equal master timestamp!",
+ entry.getLastModified() == masterLastMod);
+ }
}
}
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/MergeAlgorithmTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/MergeAlgorithmTest.java
index d4a3d62dad..284657c598 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/MergeAlgorithmTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/MergeAlgorithmTest.java
@@ -259,7 +259,7 @@ public class MergeAlgorithmTest {
}
private String merge(String commonBase, String ours, String theirs) throws IOException {
- MergeResult r = new MergeAlgorithm().merge(RawTextComparator.DEFAULT,
+ MergeResult<RawText> r = new MergeAlgorithm().merge(RawTextComparator.DEFAULT,
T(commonBase), T(ours), T(theirs));
ByteArrayOutputStream bo=new ByteArrayOutputStream(50);
fmt.formatMerge(bo, r, "B", "O", "T", Constants.CHARACTER_ENCODING);
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/ForPathTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/ForPathTest.java
index eaee8bb4b9..3d9af35a71 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/ForPathTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/ForPathTest.java
@@ -84,21 +84,22 @@ public class ForPathTest extends RepositoryTestCase {
ObjectId tree = tree0.writeTree(oi);
// Find the directories that were implicitly created above.
- TreeWalk tw = new TreeWalk(or);
- tw.addTree(tree);
ObjectId a = null;
ObjectId aSlashC = null;
- while (tw.next()) {
- if (tw.getPathString().equals("a")) {
- a = tw.getObjectId(0);
- tw.enterSubtree();
- while (tw.next()) {
- if (tw.getPathString().equals("a/c")) {
- aSlashC = tw.getObjectId(0);
- break;
+ try (TreeWalk tw = new TreeWalk(or)) {
+ tw.addTree(tree);
+ while (tw.next()) {
+ if (tw.getPathString().equals("a")) {
+ a = tw.getObjectId(0);
+ tw.enterSubtree();
+ while (tw.next()) {
+ if (tw.getPathString().equals("a/c")) {
+ aSlashC = tw.getObjectId(0);
+ break;
+ }
}
+ break;
}
- break;
}
}
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/filter/InterIndexDiffFilterTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/filter/InterIndexDiffFilterTest.java
index b3aa0ee686..9f0f067326 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/filter/InterIndexDiffFilterTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/filter/InterIndexDiffFilterTest.java
@@ -76,10 +76,11 @@ public class InterIndexDiffFilterTest extends LocalDiskRepositoryTestCase {
public void testEmpty() throws IOException {
DirCache dc1 = DirCache.newInCore();
DirCache dc2 = DirCache.newInCore();
- TreeWalk tw = new TreeWalk(db);
- tw.addTree(new DirCacheIterator(dc1));
- tw.addTree(new DirCacheIterator(dc2));
- assertFalse(tw.next());
+ try (TreeWalk tw = new TreeWalk(db)) {
+ tw.addTree(new DirCacheIterator(dc1));
+ tw.addTree(new DirCacheIterator(dc2));
+ assertFalse(tw.next());
+ }
}
static final class AddEdit extends PathEdit {
@@ -124,14 +125,15 @@ public class InterIndexDiffFilterTest extends LocalDiskRepositoryTestCase {
editor.add(new AddEdit("a/a", FileMode.REGULAR_FILE, id("a"), 1, false));
editor.finish();
- TreeWalk tw = new TreeWalk(db);
- tw.setRecursive(true);
- tw.addTree(new DirCacheIterator(dc1));
- tw.addTree(new DirCacheIterator(dc2));
- tw.setFilter(InterIndexDiffFilter.INSTANCE);
- assertTrue(tw.next());
- assertEquals("a/a", tw.getPathString());
- assertFalse(tw.next());
+ try (TreeWalk tw = new TreeWalk(db)) {
+ tw.setRecursive(true);
+ tw.addTree(new DirCacheIterator(dc1));
+ tw.addTree(new DirCacheIterator(dc2));
+ tw.setFilter(InterIndexDiffFilter.INSTANCE);
+ assertTrue(tw.next());
+ assertEquals("a/a", tw.getPathString());
+ assertFalse(tw.next());
+ }
}
@Test
@@ -145,13 +147,14 @@ public class InterIndexDiffFilterTest extends LocalDiskRepositoryTestCase {
ed2.add(new AddEdit("a/a", FileMode.REGULAR_FILE, id("a"), 1, false));
ed2.finish();
- TreeWalk tw = new TreeWalk(db);
- tw.setRecursive(true);
- tw.addTree(new DirCacheIterator(dc1));
- tw.addTree(new DirCacheIterator(dc2));
- tw.setFilter(InterIndexDiffFilter.INSTANCE);
+ try (TreeWalk tw = new TreeWalk(db)) {
+ tw.setRecursive(true);
+ tw.addTree(new DirCacheIterator(dc1));
+ tw.addTree(new DirCacheIterator(dc2));
+ tw.setFilter(InterIndexDiffFilter.INSTANCE);
- assertFalse(tw.next());
+ assertFalse(tw.next());
+ }
}
@Test
@@ -165,15 +168,16 @@ public class InterIndexDiffFilterTest extends LocalDiskRepositoryTestCase {
ed2.add(new AddEdit("a/a", FileMode.REGULAR_FILE, id("a"), 1, true));
ed2.finish();
- TreeWalk tw = new TreeWalk(db);
- tw.setRecursive(true);
- tw.addTree(new DirCacheIterator(dc1));
- tw.addTree(new DirCacheIterator(dc2));
- tw.setFilter(InterIndexDiffFilter.INSTANCE);
+ try (TreeWalk tw = new TreeWalk(db)) {
+ tw.setRecursive(true);
+ tw.addTree(new DirCacheIterator(dc1));
+ tw.addTree(new DirCacheIterator(dc2));
+ tw.setFilter(InterIndexDiffFilter.INSTANCE);
- assertTrue(tw.next());
- assertEquals("a/a", tw.getPathString());
- assertFalse(tw.next());
+ assertTrue(tw.next());
+ assertEquals("a/a", tw.getPathString());
+ assertFalse(tw.next());
+ }
}
@Test
@@ -188,12 +192,13 @@ public class InterIndexDiffFilterTest extends LocalDiskRepositoryTestCase {
ed2.add(new AddEdit("a/a", FileMode.REGULAR_FILE, id("b"), 1, true));
ed2.finish();
- TreeWalk tw = new TreeWalk(db);
- tw.setRecursive(true);
- tw.addTree(new DirCacheIterator(dc1));
- tw.addTree(new DirCacheIterator(dc2));
- tw.setFilter(InterIndexDiffFilter.INSTANCE);
+ try (TreeWalk tw = new TreeWalk(db)) {
+ tw.setRecursive(true);
+ tw.addTree(new DirCacheIterator(dc1));
+ tw.addTree(new DirCacheIterator(dc2));
+ tw.setFilter(InterIndexDiffFilter.INSTANCE);
- assertFalse(tw.next());
+ assertFalse(tw.next());
+ }
}
}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCache.java b/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCache.java
index ecdfe823a8..b9101c028c 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCache.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCache.java
@@ -344,9 +344,6 @@ public class DirCache {
/** Our active lock (if we hold it); null if we don't have it locked. */
private LockFile myLock;
- /** file system abstraction **/
- private final FS fs;
-
/** Keep track of whether the index has changed or not */
private FileSnapshot snapshot;
@@ -376,7 +373,6 @@ public class DirCache {
*/
public DirCache(final File indexLocation, final FS fs) {
liveFile = indexLocation;
- this.fs = fs;
clear();
}
@@ -611,7 +607,7 @@ public class DirCache {
public boolean lock() throws IOException {
if (liveFile == null)
throw new IOException(JGitText.get().dirCacheDoesNotHaveABackingFile);
- final LockFile tmp = new LockFile(liveFile, fs);
+ final LockFile tmp = new LockFile(liveFile);
if (tmp.lock()) {
tmp.setNeedStatInformation(true);
myLock = tmp;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/InMemoryRepository.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/InMemoryRepository.java
index 5e246b47b4..b312835bb3 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/InMemoryRepository.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/InMemoryRepository.java
@@ -274,7 +274,7 @@ public class InMemoryRepository extends DfsRepository {
if (performsAtomicTransactions()) {
try {
lock.writeLock().lock();
- batch(walk, getCommands());
+ batch(getCommands());
} finally {
lock.writeLock().unlock();
}
@@ -304,7 +304,7 @@ public class InMemoryRepository extends DfsRepository {
return new RefCache(ids.toRefList(), sym.toRefList());
}
- private void batch(RevWalk walk, List<ReceiveCommand> cmds) {
+ private void batch(List<ReceiveCommand> cmds) {
// Validate that the target exists in a new RevWalk, as the RevWalk
// from the RefUpdate might be reading back unflushed objects.
Map<ObjectId, ObjectId> peeled = new HashMap<>();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileRepository.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileRepository.java
index 62d2d6969f..b02efedea3 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileRepository.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileRepository.java
@@ -354,7 +354,7 @@ public class FileRepository extends Repository {
ConfigConstants.CONFIG_KEY_WORKTREE, getWorkTree()
.getAbsolutePath());
LockFile dotGitLockFile = new LockFile(new File(workTree,
- Constants.DOT_GIT), getFS());
+ Constants.DOT_GIT));
try {
if (dotGitLockFile.lock()) {
dotGitLockFile.write(Constants.encode(Constants.GITDIR
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackLock.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackLock.java
index b671b03412..a433dec545 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackLock.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackLock.java
@@ -53,7 +53,6 @@ import org.eclipse.jgit.util.FileUtils;
/** Keeps track of a {@link PackFile}'s associated <code>.keep</code> file. */
public class PackLock {
private final File keepFile;
- private final FS fs;
/**
* Create a new lock for a pack file.
@@ -67,7 +66,6 @@ public class PackLock {
final File p = packFile.getParentFile();
final String n = packFile.getName();
keepFile = new File(p, n.substring(0, n.length() - 5) + ".keep"); //$NON-NLS-1$
- this.fs = fs;
}
/**
@@ -84,7 +82,7 @@ public class PackLock {
return false;
if (!msg.endsWith("\n")) //$NON-NLS-1$
msg += "\n"; //$NON-NLS-1$
- final LockFile lf = new LockFile(keepFile, fs);
+ final LockFile lf = new LockFile(keepFile);
if (!lf.lock())
return false;
lf.write(Constants.encode(msg));
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectory.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectory.java
index 2c8e5f9d11..b8c2fb4a51 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectory.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectory.java
@@ -588,8 +588,7 @@ public class RefDirectory extends RefDatabase {
// we don't miss an edit made externally.
final PackedRefList packed = getPackedRefs();
if (packed.contains(name)) {
- LockFile lck = new LockFile(packedRefsFile,
- update.getRepository().getFS());
+ LockFile lck = new LockFile(packedRefsFile);
if (!lck.lock())
throw new LockFailedException(packedRefsFile);
try {
@@ -639,7 +638,7 @@ public class RefDirectory extends RefDatabase {
FS fs = parent.getFS();
// Lock the packed refs file and read the content
- LockFile lck = new LockFile(packedRefsFile, fs);
+ LockFile lck = new LockFile(packedRefsFile);
if (!lck.lock())
throw new IOException(MessageFormat.format(
JGitText.get().cannotLock, packedRefsFile));
@@ -670,8 +669,7 @@ public class RefDirectory extends RefDatabase {
File refFile = fileFor(refName);
if (!fs.exists(refFile))
continue;
- LockFile rLck = new LockFile(refFile,
- parent.getFS());
+ LockFile rLck = new LockFile(refFile);
if (!rLck.lock())
continue;
try {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectoryUpdate.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectoryUpdate.java
index 7858ee1405..0d16f79ea1 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectoryUpdate.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/RefDirectoryUpdate.java
@@ -79,7 +79,7 @@ class RefDirectoryUpdate extends RefUpdate {
if (deref)
dst = dst.getLeaf();
String name = dst.getName();
- lock = new LockFile(database.fileFor(name), getRepository().getFS());
+ lock = new LockFile(database.fileFor(name));
if (lock.lock()) {
dst = database.getRef(name);
setOldObjectId(dst != null ? dst.getObjectId() : null);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/merge/MergeFormatter.java b/org.eclipse.jgit/src/org/eclipse/jgit/merge/MergeFormatter.java
index 977f95341f..a9a8231eee 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/merge/MergeFormatter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/merge/MergeFormatter.java
@@ -102,7 +102,7 @@ public class MergeFormatter {
* metadata
* @throws IOException
*/
- public void formatMerge(OutputStream out, MergeResult res, String baseName,
+ public void formatMerge(OutputStream out, MergeResult<RawText> res, String baseName,
String oursName, String theirsName, String charsetName) throws IOException {
List<String> names = new ArrayList<String>(3);
names.add(baseName);
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/FileBasedConfig.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/FileBasedConfig.java
index 29c7f98411..702fd70765 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/FileBasedConfig.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/FileBasedConfig.java
@@ -74,8 +74,6 @@ import org.eclipse.jgit.util.RawParseUtils;
public class FileBasedConfig extends StoredConfig {
private final File configFile;
- private final FS fs;
-
private boolean utf8Bom;
private volatile FileSnapshot snapshot;
@@ -109,7 +107,6 @@ public class FileBasedConfig extends StoredConfig {
public FileBasedConfig(Config base, File cfgLocation, FS fs) {
super(base);
configFile = cfgLocation;
- this.fs = fs;
this.snapshot = FileSnapshot.DIRTY;
this.hash = ObjectId.zeroId();
}
@@ -203,7 +200,7 @@ public class FileBasedConfig extends StoredConfig {
out = Constants.encode(text);
}
- final LockFile lf = new LockFile(getFile(), fs);
+ final LockFile lf = new LockFile(getFile());
if (!lf.lock())
throw new LockFailedException(getFile());
try {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/FetchProcess.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/FetchProcess.java
index c4b3f83048..8cb36c7918 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/FetchProcess.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/FetchProcess.java
@@ -314,8 +314,7 @@ class FetchProcess {
File meta = transport.local.getDirectory();
if (meta == null)
return;
- final LockFile lock = new LockFile(new File(meta, "FETCH_HEAD"), //$NON-NLS-1$
- transport.local.getFS());
+ final LockFile lock = new LockFile(new File(meta, "FETCH_HEAD")); //$NON-NLS-1$
try {
if (lock.lock()) {
final Writer w = new OutputStreamWriter(lock.getOutputStream());