public void testNewNamespaceConflictWithLoosePrefixNameExists() { string newRef = "refs/heads/z"; RefUpdate ru = updateRef(newRef); RevCommit newid = new RevCommit(ru.getNewObjectId()) { // empty }; ru.setNewObjectId(newid); RefUpdate.RefUpdateResult update = ru.update(); Assert.AreEqual(RefUpdate.RefUpdateResult.NEW, update); // end setup string newRef2 = "refs/heads/z/a"; RefUpdate ru2 = updateRef(newRef2); RevCommit newid2 = new RevCommit(ru2.getNewObjectId()) { // empty }; ru.setNewObjectId(newid2); RefUpdate.RefUpdateResult update2 = ru2.update(); Assert.AreEqual(RefUpdate.RefUpdateResult.LOCK_FAILURE, update2); Assert.AreEqual(1, db.ReflogReader("refs/heads/z").getReverseEntries().Count); Assert.AreEqual(0, db.ReflogReader("HEAD").getReverseEntries().Count); }
public virtual void testReadAllIncludingSymrefs() { ObjectId masterId = db.Resolve("refs/heads/master"); RefUpdate updateRef = db.UpdateRef("refs/remotes/origin/master"); updateRef.setNewObjectId(masterId); updateRef.setForceUpdate(true); updateRef.update(); writeSymref("refs/remotes/origin/HEAD", "refs/remotes/origin/master"); ObjectId r = db.Resolve("refs/remotes/origin/HEAD"); Assert.AreEqual(masterId, r); IDictionary <string, global::GitSharp.Core.Ref> allRefs = db.getAllRefs(); global::GitSharp.Core.Ref refHEAD = allRefs["refs/remotes/origin/HEAD"]; Assert.IsNotNull(refHEAD); Assert.AreEqual(masterId, refHEAD.ObjectId); Assert.IsFalse(refHEAD.IsPeeled); Assert.IsNull(refHEAD.PeeledObjectId); global::GitSharp.Core.Ref refmaster = allRefs["refs/remotes/origin/master"]; Assert.AreEqual(masterId, refmaster.ObjectId); Assert.IsFalse(refmaster.IsPeeled); Assert.IsNull(refmaster.PeeledObjectId); }
public void testNoCacheObjectIdSubclass() { string newRef = "refs/heads/abc"; RefUpdate ru = updateRef(newRef); RevCommit newid = new RevCommit(ru.getNewObjectId()) { // empty }; ru.setNewObjectId(newid); RefUpdate.RefUpdateResult update = ru.update(); Assert.AreEqual(RefUpdate.RefUpdateResult.NEW, update); Core.Ref r = db.getAllRefs()[newRef]; Assert.IsNotNull(r); Assert.AreEqual(newRef, r.Name); Assert.IsNotNull(r.ObjectId); Assert.AreNotSame(newid, r.ObjectId); Assert.AreSame(typeof(ObjectId), r.ObjectId.GetType()); Assert.AreEqual(newid.Copy(), r.ObjectId); IList <ReflogReader.Entry> reverseEntries1 = db.ReflogReader("refs/heads/abc").getReverseEntries(); ReflogReader.Entry entry1 = reverseEntries1[0]; Assert.AreEqual(1, reverseEntries1.Count); Assert.AreEqual(ObjectId.ZeroId, entry1.getOldId()); Assert.AreEqual(r.ObjectId, entry1.getNewId()); Assert.AreEqual(new PersonIdent(db).ToString(), entry1.getWho().ToString()); Assert.AreEqual("", entry1.getComment()); IList <ReflogReader.Entry> reverseEntries2 = db.ReflogReader("HEAD").getReverseEntries(); Assert.AreEqual(0, reverseEntries2.Count); }
private RefUpdate updateRef(string name) { RefUpdate @ref = db.UpdateRef(name); @ref.setNewObjectId(db.Resolve(Constants.HEAD)); return(@ref); }
public void testReadLooseRef() { RefUpdate updateRef = db.UpdateRef("ref/heads/new"); updateRef.setNewObjectId(db.Resolve("refs/heads/master")); RefUpdate.RefUpdateResult update = updateRef.update(); Assert.AreEqual(RefUpdate.RefUpdateResult.NEW, update); global::GitSharp.Core.Ref @ref = db.getRef("ref/heads/new"); Assert.AreEqual(Storage.Loose, @ref.StorageFormat); }
private void writeReflog(Repository db, ObjectId oldId, ObjectId newId, string msg, string refName) { RefDirectory refs = (RefDirectory)db.RefDatabase; RefUpdate update = refs.newUpdate(refName, true); update.setOldObjectId(oldId); update.setNewObjectId(newId); refs.log(update, msg, true); }
public void testReadSimplePackedRefSameRepo() { global::GitSharp.Core.Ref @ref = db.getRef("refs/heads/master"); ObjectId pid = db.Resolve("refs/heads/master^"); Assert.AreEqual(Storage.Packed, @ref.StorageFormat); RefUpdate updateRef = db.UpdateRef("refs/heads/master"); updateRef.setNewObjectId(pid); updateRef.setForceUpdate(true); RefUpdate.RefUpdateResult update = updateRef.update(); Assert.AreEqual(RefUpdate.RefUpdateResult.FORCED, update); @ref = db.getRef("refs/heads/master"); Assert.AreEqual(Storage.Loose, @ref.StorageFormat); }
public void testReadSymRefToLoosePacked() { ObjectId pid = db.Resolve("refs/heads/master^"); RefUpdate updateRef = db.UpdateRef("refs/heads/master"); updateRef.setNewObjectId(pid); updateRef.setForceUpdate(true); RefUpdate.RefUpdateResult update = updateRef.update(); Assert.AreEqual(RefUpdate.RefUpdateResult.FORCED, update); // internal writeSymref("HEAD", "refs/heads/master"); global::GitSharp.Core.Ref @ref = db.getRef("HEAD"); Assert.AreEqual(Storage.Loose, @ref.StorageFormat); @ref = @ref.getTarget(); Assert.AreEqual("refs/heads/master", @ref.Name); Assert.AreEqual(Storage.Loose, @ref.StorageFormat); }
private void Execute(ReceiveCommand cmd) { try { RefUpdate ru = db.UpdateRef(cmd.getRefName()); ru.setRefLogIdent(getRefLogIdent()); switch (cmd.getType()) { case ReceiveCommand.Type.DELETE: if (!ObjectId.ZeroId.Equals(cmd.getOldId())) { // We can only do a CAS style delete if the client // didn't bork its delete request by sending the // wrong zero id rather than the advertised one. // ru.setExpectedOldObjectId(cmd.getOldId()); } ru.setForceUpdate(true); Status(cmd, ru.delete(walk)); break; case ReceiveCommand.Type.CREATE: case ReceiveCommand.Type.UPDATE: case ReceiveCommand.Type.UPDATE_NONFASTFORWARD: ru.setForceUpdate(isAllowNonFastForwards()); ru.setExpectedOldObjectId(cmd.getOldId()); ru.setNewObjectId(cmd.getNewId()); ru.setRefLogMessage("push", true); Status(cmd, ru.update(walk)); break; } } catch (IOException err) { cmd.setResult(ReceiveCommand.Result.REJECTED_OTHER_REASON, "lock error: " + err.Message); } }