public IEnumerator shouldBeAbleToCreateNewBranchWhenInDetachedHeadAndThenCommit() { VersionableObjectFactory factory = new VersionableObjectFactory(); VersionController testController = factory.createVersionableBox(); VersionController otherTestController = factory.createVersionableBox(); GameObject testObject = testController.GetActiveVersion(); GameObject otherTestObject = otherTestController.GetActiveVersion(); testObject.transform.position = new Vector2(0.0f, 0.0f); otherTestObject.transform.position = new Vector2(3.0f, 0.0f); VersionManager.Instance().Add(testController); VersionManager.Instance().Add(otherTestController); ICommit firstCommit = VersionManager.Instance().Commit("Create two boxes"); Guid firstCommitId = firstCommit.GetId(); yield return(null); testObject.transform.position = new Vector2(1.0f, 0.0f); otherTestObject.transform.position = new Vector2(4.0f, 1.0f); VersionManager.Instance().Add(testController); VersionManager.Instance().Add(otherTestController); VersionManager.Instance().Commit("Move boxes"); yield return(null); VersionManager.Instance().Checkout("master", firstCommitId); IBranch newBranch = VersionManager.Instance().CreateBranch("refactor"); VersionManager.Instance().Checkout(newBranch); Assert.AreEqual(newBranch.GetTip().GetId(), VersionManager.Instance().GetActiveBranch().GetTip().GetId()); Assert.AreEqual(newBranch.GetTip().GetId(), VersionManager.Instance().GetActiveCommit().GetId()); testObject.transform.position = new Vector2(-1.0f, 0.0f); VersionManager.Instance().Add(testController); ICommit commit = VersionManager.Instance().Commit("Move a box to the left"); Assert.AreEqual(newBranch.GetTip().GetId(), commit.GetId()); Assert.True(commit.ObjectIsTrackedInThisCommit(testController)); Assert.True(commit.ObjectIsTrackedInThisCommit(otherTestController)); }
// Helper method for setting the state of the given tracked object to the corresponding // state in the given commit private void LoadStateOfCommitForTrackedObject(ICommit commit, VersionController trackedObject, int trackedObjectIndex) { if (commit.ObjectIsTrackedInThisCommit(trackedObject)) { trackedObject.ResetToVersion(commit.getObjectVersion(trackedObject)); } else { trackedObject.ResetToInitialState(); trackedObjects.RemoveAt(trackedObjectIndex); } }
protected override bool shouldFire() { if (targetObject == null && targetBranch == "") { return(true); } else { if (targetBranch == "" || versionManager.GetActiveBranch().GetName() == targetBranch) { ICommit commit = versionManager.GetHead(); if (targetObject == null || commit.ObjectIsTrackedInThisCommit(targetObject) && commit.ObjectWasChangedInThisCommit(targetObject)) { return(true); } } } return(false); }
public bool ObjectWasChangedInThisCommit(VersionController controller) { if (ObjectIsTrackedInThisCommit(controller)) { if (parent == null) { return(true); } else if (!parent.ObjectIsTrackedInThisCommit(controller)) { return(true); } else { return(!getObjectVersion(controller).Equals(parent.getObjectVersion(controller))); } } else { return(false); } }