Example #1
0
    public IEnumerator TestMergeWorkerSmoke()
    {
        testObject1.transform.position = new Vector2(0.0f, 0.0f);
        testObject2.transform.position = new Vector2(3.0f, 3.0f);

        VersionManager.Instance().Add(testController1);
        VersionManager.Instance().Add(testController2);

        ICommit commit = VersionManager.Instance().Commit("Add two objects");

        yield return(null);

        IBranch testBranch = VersionManager.Instance().CreateBranch("testBranch");

        VersionManager.Instance().Checkout("testBranch");

        testObject1.transform.position = new Vector2(1.0f, 0.0f);
        VersionManager.Instance().Add(testController1);
        ICommit secondCommit = VersionManager.Instance().Commit("Move testObject1");

        VersionManager.Instance().Checkout("master");

        Assert.AreEqual("master", master.GetName());
        Assert.AreSame(commit, master.GetTip());
        Assert.AreEqual("testBranch", testBranch.GetName());
        Assert.AreSame(secondCommit, testBranch.GetTip());

        IMergeWorker mw = new MergeWorker(master, testBranch, null, null);

        Assert.AreEqual(Relationship.FastForward, mw.GetMergeType());
        Assert.AreEqual(MergeStatus.FastForward, mw.GetStatus(testController1));
        Assert.AreEqual(MergeStatus.FastForward, mw.GetStatus(testController2));
        Assert.AreEqual(true, mw.IsResolved());
    }
Example #2
0
    public Relationship Merge(IBranch featureBranch)
    {
        if (!EnabledVersionControls.Instance().CanMerge)
        {
            Debug.Log("Merging not enabled yet");
        }
        if (isDetached)
        {
            throw new Exception("Can't merge if detached");
        }

        if (this.mw != null)
        {
            throw new Exception("Already doing a merge, resolve this first");
        }

        IMergeWorker mw        = new MergeWorker(activeBranch, featureBranch, pickTrigger, mergeUI);
        Relationship mergeType = mw.GetMergeType();

        if (mw.GetMergeType() == Relationship.FastForward)
        {
            mw.End();
            activeBranch.UpdateTip(featureBranch.GetTip());
            activeCommit = activeBranch.GetTip();
            LoadStateOfCommit(activeCommit);

            if (mergeTrigger != null)
            {
                mergeTrigger.Trigger();
            }

            return(mergeType);
        }

        this.mw = mw;

        return(mergeType);
    }