|
|
|
@ -90,26 +90,27 @@ public class PushCommandTest extends RepositoryTestCase {
|
|
|
|
|
remoteConfig.update(config); |
|
|
|
|
config.save(); |
|
|
|
|
|
|
|
|
|
Git git1 = new Git(db); |
|
|
|
|
// create some refs via commits and tag
|
|
|
|
|
RevCommit commit = git1.commit().setMessage("initial commit").call(); |
|
|
|
|
Ref tagRef = git1.tag().setName("tag").call(); |
|
|
|
|
|
|
|
|
|
try { |
|
|
|
|
db2.resolve(commit.getId().getName() + "^{commit}"); |
|
|
|
|
fail("id shouldn't exist yet"); |
|
|
|
|
} catch (MissingObjectException e) { |
|
|
|
|
// we should get here
|
|
|
|
|
try (Git git1 = new Git(db)) { |
|
|
|
|
// create some refs via commits and tag
|
|
|
|
|
RevCommit commit = git1.commit().setMessage("initial commit").call(); |
|
|
|
|
Ref tagRef = git1.tag().setName("tag").call(); |
|
|
|
|
|
|
|
|
|
try { |
|
|
|
|
db2.resolve(commit.getId().getName() + "^{commit}"); |
|
|
|
|
fail("id shouldn't exist yet"); |
|
|
|
|
} catch (MissingObjectException e) { |
|
|
|
|
// we should get here
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
RefSpec spec = new RefSpec("refs/heads/master:refs/heads/x"); |
|
|
|
|
git1.push().setRemote("test").setRefSpecs(spec) |
|
|
|
|
.call(); |
|
|
|
|
|
|
|
|
|
assertEquals(commit.getId(), |
|
|
|
|
db2.resolve(commit.getId().getName() + "^{commit}")); |
|
|
|
|
assertEquals(tagRef.getObjectId(), |
|
|
|
|
db2.resolve(tagRef.getObjectId().getName())); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
RefSpec spec = new RefSpec("refs/heads/master:refs/heads/x"); |
|
|
|
|
git1.push().setRemote("test").setRefSpecs(spec) |
|
|
|
|
.call(); |
|
|
|
|
|
|
|
|
|
assertEquals(commit.getId(), |
|
|
|
|
db2.resolve(commit.getId().getName() + "^{commit}")); |
|
|
|
|
assertEquals(tagRef.getObjectId(), |
|
|
|
|
db2.resolve(tagRef.getObjectId().getName())); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@ -132,15 +133,16 @@ public class PushCommandTest extends RepositoryTestCase {
|
|
|
|
|
+ hookOutput.toPath() + "\"\ncat - >>\"" + hookOutput.toPath() |
|
|
|
|
+ "\"\nexit 0"); |
|
|
|
|
|
|
|
|
|
Git git1 = new Git(db); |
|
|
|
|
// create some refs via commits and tag
|
|
|
|
|
RevCommit commit = git1.commit().setMessage("initial commit").call(); |
|
|
|
|
try (Git git1 = new Git(db)) { |
|
|
|
|
// create some refs via commits and tag
|
|
|
|
|
RevCommit commit = git1.commit().setMessage("initial commit").call(); |
|
|
|
|
|
|
|
|
|
RefSpec spec = new RefSpec("refs/heads/master:refs/heads/x"); |
|
|
|
|
git1.push().setRemote("test").setRefSpecs(spec).call(); |
|
|
|
|
assertEquals("1:test, 2:" + uri + ", 3:\n" + "refs/heads/master " |
|
|
|
|
+ commit.getName() + " refs/heads/x " |
|
|
|
|
+ ObjectId.zeroId().name(), read(hookOutput)); |
|
|
|
|
RefSpec spec = new RefSpec("refs/heads/master:refs/heads/x"); |
|
|
|
|
git1.push().setRemote("test").setRefSpecs(spec).call(); |
|
|
|
|
assertEquals("1:test, 2:" + uri + ", 3:\n" + "refs/heads/master " |
|
|
|
|
+ commit.getName() + " refs/heads/x " |
|
|
|
|
+ ObjectId.zeroId().name(), read(hookOutput)); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private File writeHookFile(final String name, final String data) |
|
|
|
@ -160,45 +162,45 @@ public class PushCommandTest extends RepositoryTestCase {
|
|
|
|
|
String branch = "refs/heads/master"; |
|
|
|
|
String trackingBranch = "refs/remotes/" + remote + "/master"; |
|
|
|
|
|
|
|
|
|
Git git = new Git(db); |
|
|
|
|
try (Git git = new Git(db)) { |
|
|
|
|
RevCommit commit1 = git.commit().setMessage("Initial commit") |
|
|
|
|
.call(); |
|
|
|
|
|
|
|
|
|
RevCommit commit1 = git.commit().setMessage("Initial commit") |
|
|
|
|
.call(); |
|
|
|
|
RefUpdate branchRefUpdate = db.updateRef(branch); |
|
|
|
|
branchRefUpdate.setNewObjectId(commit1.getId()); |
|
|
|
|
branchRefUpdate.update(); |
|
|
|
|
|
|
|
|
|
RefUpdate branchRefUpdate = db.updateRef(branch); |
|
|
|
|
branchRefUpdate.setNewObjectId(commit1.getId()); |
|
|
|
|
branchRefUpdate.update(); |
|
|
|
|
RefUpdate trackingBranchRefUpdate = db.updateRef(trackingBranch); |
|
|
|
|
trackingBranchRefUpdate.setNewObjectId(commit1.getId()); |
|
|
|
|
trackingBranchRefUpdate.update(); |
|
|
|
|
|
|
|
|
|
RefUpdate trackingBranchRefUpdate = db.updateRef(trackingBranch); |
|
|
|
|
trackingBranchRefUpdate.setNewObjectId(commit1.getId()); |
|
|
|
|
trackingBranchRefUpdate.update(); |
|
|
|
|
|
|
|
|
|
final StoredConfig config = db.getConfig(); |
|
|
|
|
RemoteConfig remoteConfig = new RemoteConfig(config, remote); |
|
|
|
|
URIish uri = new URIish(db2.getDirectory().toURI().toURL()); |
|
|
|
|
remoteConfig.addURI(uri); |
|
|
|
|
remoteConfig.addFetchRefSpec(new RefSpec("+refs/heads/*:refs/remotes/" |
|
|
|
|
+ remote + "/*")); |
|
|
|
|
remoteConfig.update(config); |
|
|
|
|
config.save(); |
|
|
|
|
final StoredConfig config = db.getConfig(); |
|
|
|
|
RemoteConfig remoteConfig = new RemoteConfig(config, remote); |
|
|
|
|
URIish uri = new URIish(db2.getDirectory().toURI().toURL()); |
|
|
|
|
remoteConfig.addURI(uri); |
|
|
|
|
remoteConfig.addFetchRefSpec(new RefSpec("+refs/heads/*:refs/remotes/" |
|
|
|
|
+ remote + "/*")); |
|
|
|
|
remoteConfig.update(config); |
|
|
|
|
config.save(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RevCommit commit2 = git.commit().setMessage("Commit to push").call(); |
|
|
|
|
RevCommit commit2 = git.commit().setMessage("Commit to push").call(); |
|
|
|
|
|
|
|
|
|
RefSpec spec = new RefSpec(branch + ":" + branch); |
|
|
|
|
Iterable<PushResult> resultIterable = git.push().setRemote(remote) |
|
|
|
|
.setRefSpecs(spec).call(); |
|
|
|
|
RefSpec spec = new RefSpec(branch + ":" + branch); |
|
|
|
|
Iterable<PushResult> resultIterable = git.push().setRemote(remote) |
|
|
|
|
.setRefSpecs(spec).call(); |
|
|
|
|
|
|
|
|
|
PushResult result = resultIterable.iterator().next(); |
|
|
|
|
TrackingRefUpdate trackingRefUpdate = result |
|
|
|
|
.getTrackingRefUpdate(trackingBranch); |
|
|
|
|
PushResult result = resultIterable.iterator().next(); |
|
|
|
|
TrackingRefUpdate trackingRefUpdate = result |
|
|
|
|
.getTrackingRefUpdate(trackingBranch); |
|
|
|
|
|
|
|
|
|
assertNotNull(trackingRefUpdate); |
|
|
|
|
assertEquals(trackingBranch, trackingRefUpdate.getLocalName()); |
|
|
|
|
assertEquals(branch, trackingRefUpdate.getRemoteName()); |
|
|
|
|
assertEquals(commit2.getId(), trackingRefUpdate.getNewObjectId()); |
|
|
|
|
assertEquals(commit2.getId(), db.resolve(trackingBranch)); |
|
|
|
|
assertEquals(commit2.getId(), db2.resolve(branch)); |
|
|
|
|
assertNotNull(trackingRefUpdate); |
|
|
|
|
assertEquals(trackingBranch, trackingRefUpdate.getLocalName()); |
|
|
|
|
assertEquals(branch, trackingRefUpdate.getRemoteName()); |
|
|
|
|
assertEquals(commit2.getId(), trackingRefUpdate.getNewObjectId()); |
|
|
|
|
assertEquals(commit2.getId(), db.resolve(trackingBranch)); |
|
|
|
|
assertEquals(commit2.getId(), db2.resolve(branch)); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -208,40 +210,38 @@ public class PushCommandTest extends RepositoryTestCase {
|
|
|
|
|
*/ |
|
|
|
|
@Test |
|
|
|
|
public void testPushRefUpdate() throws Exception { |
|
|
|
|
Git git = new Git(db); |
|
|
|
|
Git git2 = new Git(createBareRepository()); |
|
|
|
|
|
|
|
|
|
final StoredConfig config = git.getRepository().getConfig(); |
|
|
|
|
RemoteConfig remoteConfig = new RemoteConfig(config, "test"); |
|
|
|
|
URIish uri = new URIish(git2.getRepository().getDirectory().toURI() |
|
|
|
|
.toURL()); |
|
|
|
|
remoteConfig.addURI(uri); |
|
|
|
|
remoteConfig.addPushRefSpec(new RefSpec("+refs/heads/*:refs/heads/*")); |
|
|
|
|
remoteConfig.update(config); |
|
|
|
|
config.save(); |
|
|
|
|
|
|
|
|
|
writeTrashFile("f", "content of f"); |
|
|
|
|
git.add().addFilepattern("f").call(); |
|
|
|
|
RevCommit commit = git.commit().setMessage("adding f").call(); |
|
|
|
|
|
|
|
|
|
assertEquals(null, git2.getRepository().resolve("refs/heads/master")); |
|
|
|
|
git.push().setRemote("test").call(); |
|
|
|
|
assertEquals(commit.getId(), |
|
|
|
|
git2.getRepository().resolve("refs/heads/master")); |
|
|
|
|
|
|
|
|
|
git.branchCreate().setName("refs/heads/test").call(); |
|
|
|
|
git.checkout().setName("refs/heads/test").call(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < 6; i++) { |
|
|
|
|
writeTrashFile("f" + i, "content of f" + i); |
|
|
|
|
git.add().addFilepattern("f" + i).call(); |
|
|
|
|
commit = git.commit().setMessage("adding f" + i).call(); |
|
|
|
|
try (Git git = new Git(db); |
|
|
|
|
Git git2 = new Git(createBareRepository())) { |
|
|
|
|
final StoredConfig config = git.getRepository().getConfig(); |
|
|
|
|
RemoteConfig remoteConfig = new RemoteConfig(config, "test"); |
|
|
|
|
URIish uri = new URIish(git2.getRepository().getDirectory().toURI() |
|
|
|
|
.toURL()); |
|
|
|
|
remoteConfig.addURI(uri); |
|
|
|
|
remoteConfig.addPushRefSpec(new RefSpec("+refs/heads/*:refs/heads/*")); |
|
|
|
|
remoteConfig.update(config); |
|
|
|
|
config.save(); |
|
|
|
|
|
|
|
|
|
writeTrashFile("f", "content of f"); |
|
|
|
|
git.add().addFilepattern("f").call(); |
|
|
|
|
RevCommit commit = git.commit().setMessage("adding f").call(); |
|
|
|
|
|
|
|
|
|
assertEquals(null, git2.getRepository().resolve("refs/heads/master")); |
|
|
|
|
git.push().setRemote("test").call(); |
|
|
|
|
git2.getRepository().getAllRefs(); |
|
|
|
|
assertEquals("failed to update on attempt " + i, commit.getId(), |
|
|
|
|
git2.getRepository().resolve("refs/heads/test")); |
|
|
|
|
|
|
|
|
|
assertEquals(commit.getId(), |
|
|
|
|
git2.getRepository().resolve("refs/heads/master")); |
|
|
|
|
|
|
|
|
|
git.branchCreate().setName("refs/heads/test").call(); |
|
|
|
|
git.checkout().setName("refs/heads/test").call(); |
|
|
|
|
|
|
|
|
|
for (int i = 0; i < 6; i++) { |
|
|
|
|
writeTrashFile("f" + i, "content of f" + i); |
|
|
|
|
git.add().addFilepattern("f" + i).call(); |
|
|
|
|
commit = git.commit().setMessage("adding f" + i).call(); |
|
|
|
|
git.push().setRemote("test").call(); |
|
|
|
|
git2.getRepository().getAllRefs(); |
|
|
|
|
assertEquals("failed to update on attempt " + i, commit.getId(), |
|
|
|
|
git2.getRepository().resolve("refs/heads/test")); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -252,28 +252,26 @@ public class PushCommandTest extends RepositoryTestCase {
|
|
|
|
|
*/ |
|
|
|
|
@Test |
|
|
|
|
public void testPushWithRefSpecFromConfig() throws Exception { |
|
|
|
|
Git git = new Git(db); |
|
|
|
|
Git git2 = new Git(createBareRepository()); |
|
|
|
|
|
|
|
|
|
final StoredConfig config = git.getRepository().getConfig(); |
|
|
|
|
RemoteConfig remoteConfig = new RemoteConfig(config, "test"); |
|
|
|
|
URIish uri = new URIish(git2.getRepository().getDirectory().toURI() |
|
|
|
|
.toURL()); |
|
|
|
|
remoteConfig.addURI(uri); |
|
|
|
|
remoteConfig.addPushRefSpec(new RefSpec("HEAD:refs/heads/newbranch")); |
|
|
|
|
remoteConfig.update(config); |
|
|
|
|
config.save(); |
|
|
|
|
|
|
|
|
|
writeTrashFile("f", "content of f"); |
|
|
|
|
git.add().addFilepattern("f").call(); |
|
|
|
|
RevCommit commit = git.commit().setMessage("adding f").call(); |
|
|
|
|
|
|
|
|
|
assertEquals(null, git2.getRepository().resolve("refs/heads/master")); |
|
|
|
|
git.push().setRemote("test").call(); |
|
|
|
|
assertEquals(commit.getId(), |
|
|
|
|
git2.getRepository().resolve("refs/heads/newbranch")); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try (Git git = new Git(db); |
|
|
|
|
Git git2 = new Git(createBareRepository())) { |
|
|
|
|
final StoredConfig config = git.getRepository().getConfig(); |
|
|
|
|
RemoteConfig remoteConfig = new RemoteConfig(config, "test"); |
|
|
|
|
URIish uri = new URIish(git2.getRepository().getDirectory().toURI() |
|
|
|
|
.toURL()); |
|
|
|
|
remoteConfig.addURI(uri); |
|
|
|
|
remoteConfig.addPushRefSpec(new RefSpec("HEAD:refs/heads/newbranch")); |
|
|
|
|
remoteConfig.update(config); |
|
|
|
|
config.save(); |
|
|
|
|
|
|
|
|
|
writeTrashFile("f", "content of f"); |
|
|
|
|
git.add().addFilepattern("f").call(); |
|
|
|
|
RevCommit commit = git.commit().setMessage("adding f").call(); |
|
|
|
|
|
|
|
|
|
assertEquals(null, git2.getRepository().resolve("refs/heads/master")); |
|
|
|
|
git.push().setRemote("test").call(); |
|
|
|
|
assertEquals(commit.getId(), |
|
|
|
|
git2.getRepository().resolve("refs/heads/newbranch")); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -283,38 +281,37 @@ public class PushCommandTest extends RepositoryTestCase {
|
|
|
|
|
*/ |
|
|
|
|
@Test |
|
|
|
|
public void testPushWithoutPushRefSpec() throws Exception { |
|
|
|
|
Git git = new Git(db); |
|
|
|
|
Git git2 = new Git(createBareRepository()); |
|
|
|
|
|
|
|
|
|
final StoredConfig config = git.getRepository().getConfig(); |
|
|
|
|
RemoteConfig remoteConfig = new RemoteConfig(config, "test"); |
|
|
|
|
URIish uri = new URIish(git2.getRepository().getDirectory().toURI() |
|
|
|
|
.toURL()); |
|
|
|
|
remoteConfig.addURI(uri); |
|
|
|
|
remoteConfig.addFetchRefSpec(new RefSpec( |
|
|
|
|
"+refs/heads/*:refs/remotes/origin/*")); |
|
|
|
|
remoteConfig.update(config); |
|
|
|
|
config.save(); |
|
|
|
|
|
|
|
|
|
writeTrashFile("f", "content of f"); |
|
|
|
|
git.add().addFilepattern("f").call(); |
|
|
|
|
RevCommit commit = git.commit().setMessage("adding f").call(); |
|
|
|
|
|
|
|
|
|
git.checkout().setName("not-pushed").setCreateBranch(true).call(); |
|
|
|
|
git.checkout().setName("branchtopush").setCreateBranch(true).call(); |
|
|
|
|
|
|
|
|
|
assertEquals(null, |
|
|
|
|
git2.getRepository().resolve("refs/heads/branchtopush")); |
|
|
|
|
assertEquals(null, git2.getRepository() |
|
|
|
|
.resolve("refs/heads/not-pushed")); |
|
|
|
|
assertEquals(null, git2.getRepository().resolve("refs/heads/master")); |
|
|
|
|
git.push().setRemote("test").call(); |
|
|
|
|
assertEquals(commit.getId(), |
|
|
|
|
git2.getRepository().resolve("refs/heads/branchtopush")); |
|
|
|
|
assertEquals(null, git2.getRepository() |
|
|
|
|
.resolve("refs/heads/not-pushed")); |
|
|
|
|
assertEquals(null, git2.getRepository().resolve("refs/heads/master")); |
|
|
|
|
|
|
|
|
|
try (Git git = new Git(db); |
|
|
|
|
Git git2 = new Git(createBareRepository())) { |
|
|
|
|
final StoredConfig config = git.getRepository().getConfig(); |
|
|
|
|
RemoteConfig remoteConfig = new RemoteConfig(config, "test"); |
|
|
|
|
URIish uri = new URIish(git2.getRepository().getDirectory().toURI() |
|
|
|
|
.toURL()); |
|
|
|
|
remoteConfig.addURI(uri); |
|
|
|
|
remoteConfig.addFetchRefSpec(new RefSpec( |
|
|
|
|
"+refs/heads/*:refs/remotes/origin/*")); |
|
|
|
|
remoteConfig.update(config); |
|
|
|
|
config.save(); |
|
|
|
|
|
|
|
|
|
writeTrashFile("f", "content of f"); |
|
|
|
|
git.add().addFilepattern("f").call(); |
|
|
|
|
RevCommit commit = git.commit().setMessage("adding f").call(); |
|
|
|
|
|
|
|
|
|
git.checkout().setName("not-pushed").setCreateBranch(true).call(); |
|
|
|
|
git.checkout().setName("branchtopush").setCreateBranch(true).call(); |
|
|
|
|
|
|
|
|
|
assertEquals(null, |
|
|
|
|
git2.getRepository().resolve("refs/heads/branchtopush")); |
|
|
|
|
assertEquals(null, git2.getRepository() |
|
|
|
|
.resolve("refs/heads/not-pushed")); |
|
|
|
|
assertEquals(null, git2.getRepository().resolve("refs/heads/master")); |
|
|
|
|
git.push().setRemote("test").call(); |
|
|
|
|
assertEquals(commit.getId(), |
|
|
|
|
git2.getRepository().resolve("refs/heads/branchtopush")); |
|
|
|
|
assertEquals(null, git2.getRepository() |
|
|
|
|
.resolve("refs/heads/not-pushed")); |
|
|
|
|
assertEquals(null, git2.getRepository().resolve("refs/heads/master")); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -335,51 +332,51 @@ public class PushCommandTest extends RepositoryTestCase {
|
|
|
|
|
remoteConfig.update(config); |
|
|
|
|
config.save(); |
|
|
|
|
|
|
|
|
|
Git git1 = new Git(db); |
|
|
|
|
Git git2 = new Git(db2); |
|
|
|
|
|
|
|
|
|
// push master (with a new commit) to the remote
|
|
|
|
|
git1.commit().setMessage("initial commit").call(); |
|
|
|
|
try (Git git1 = new Git(db); |
|
|
|
|
Git git2 = new Git(db2)) { |
|
|
|
|
// push master (with a new commit) to the remote
|
|
|
|
|
git1.commit().setMessage("initial commit").call(); |
|
|
|
|
|
|
|
|
|
RefSpec spec = new RefSpec("refs/heads/*:refs/heads/*"); |
|
|
|
|
git1.push().setRemote("test").setRefSpecs(spec).call(); |
|
|
|
|
|
|
|
|
|
// create an unrelated ref and a commit on our remote
|
|
|
|
|
git2.branchCreate().setName("refs/heads/other").call(); |
|
|
|
|
git2.checkout().setName("refs/heads/other").call(); |
|
|
|
|
|
|
|
|
|
writeTrashFile("a", "content of a"); |
|
|
|
|
git2.add().addFilepattern("a").call(); |
|
|
|
|
RevCommit commit2 = git2.commit().setMessage("adding a").call(); |
|
|
|
|
|
|
|
|
|
// run a gc to ensure we have a bitmap index
|
|
|
|
|
Properties res = git1.gc().setExpire(null).call(); |
|
|
|
|
assertEquals(7, res.size()); |
|
|
|
|
|
|
|
|
|
// create another commit so we have something else to push
|
|
|
|
|
writeTrashFile("b", "content of b"); |
|
|
|
|
git1.add().addFilepattern("b").call(); |
|
|
|
|
RevCommit commit3 = git1.commit().setMessage("adding b").call(); |
|
|
|
|
|
|
|
|
|
try { |
|
|
|
|
// Re-run the push. Failure may happen here.
|
|
|
|
|
RefSpec spec = new RefSpec("refs/heads/*:refs/heads/*"); |
|
|
|
|
git1.push().setRemote("test").setRefSpecs(spec).call(); |
|
|
|
|
} catch (TransportException e) { |
|
|
|
|
assertTrue("should be caused by a MissingObjectException", e |
|
|
|
|
.getCause().getCause() instanceof MissingObjectException); |
|
|
|
|
fail("caught MissingObjectException for a change we don't have"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Remote will have both a and b. Master will have only b
|
|
|
|
|
try { |
|
|
|
|
db.resolve(commit2.getId().getName() + "^{commit}"); |
|
|
|
|
fail("id shouldn't exist locally"); |
|
|
|
|
} catch (MissingObjectException e) { |
|
|
|
|
// we should get here
|
|
|
|
|
// create an unrelated ref and a commit on our remote
|
|
|
|
|
git2.branchCreate().setName("refs/heads/other").call(); |
|
|
|
|
git2.checkout().setName("refs/heads/other").call(); |
|
|
|
|
|
|
|
|
|
writeTrashFile("a", "content of a"); |
|
|
|
|
git2.add().addFilepattern("a").call(); |
|
|
|
|
RevCommit commit2 = git2.commit().setMessage("adding a").call(); |
|
|
|
|
|
|
|
|
|
// run a gc to ensure we have a bitmap index
|
|
|
|
|
Properties res = git1.gc().setExpire(null).call(); |
|
|
|
|
assertEquals(7, res.size()); |
|
|
|
|
|
|
|
|
|
// create another commit so we have something else to push
|
|
|
|
|
writeTrashFile("b", "content of b"); |
|
|
|
|
git1.add().addFilepattern("b").call(); |
|
|
|
|
RevCommit commit3 = git1.commit().setMessage("adding b").call(); |
|
|
|
|
|
|
|
|
|
try { |
|
|
|
|
// Re-run the push. Failure may happen here.
|
|
|
|
|
git1.push().setRemote("test").setRefSpecs(spec).call(); |
|
|
|
|
} catch (TransportException e) { |
|
|
|
|
assertTrue("should be caused by a MissingObjectException", e |
|
|
|
|
.getCause().getCause() instanceof MissingObjectException); |
|
|
|
|
fail("caught MissingObjectException for a change we don't have"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Remote will have both a and b. Master will have only b
|
|
|
|
|
try { |
|
|
|
|
db.resolve(commit2.getId().getName() + "^{commit}"); |
|
|
|
|
fail("id shouldn't exist locally"); |
|
|
|
|
} catch (MissingObjectException e) { |
|
|
|
|
// we should get here
|
|
|
|
|
} |
|
|
|
|
assertEquals(commit2.getId(), |
|
|
|
|
db2.resolve(commit2.getId().getName() + "^{commit}")); |
|
|
|
|
assertEquals(commit3.getId(), |
|
|
|
|
db2.resolve(commit3.getId().getName() + "^{commit}")); |
|
|
|
|
} |
|
|
|
|
assertEquals(commit2.getId(), |
|
|
|
|
db2.resolve(commit2.getId().getName() + "^{commit}")); |
|
|
|
|
assertEquals(commit3.getId(), |
|
|
|
|
db2.resolve(commit3.getId().getName() + "^{commit}")); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|