public When_a_commit_is_already_projected()
            {
                Given(() =>
                {
                    ICommit projectedCommit   = new CommitBuilder().WithCheckpoint("123").Build();
                    ICommit unprojectedCommit = new CommitBuilder().WithCheckpoint("124").Build();

                    var eventStore = A.Fake <IPersistStreams>();
                    A.CallTo(() => eventStore.GetFrom(A <string> .Ignored)).Returns(new[] { projectedCommit, unprojectedCommit });
                    A.CallTo(() => eventStore.GetFrom("123")).Returns(new[] { unprojectedCommit });

                    var adapter = new NEventStoreAdapter(eventStore, 11, 1.Seconds(), 100, () => DateTime.UtcNow);
                    WithSubject(_ => adapter.Subscribe);
                });

                When(() =>
                {
                    Subject(123, new Subscriber
                    {
                        HandleTransactions = (transactions, info) =>
                        {
                            transactionHandledSource.SetResult(transactions.First());

                            return(Task.FromResult(0));
                        }
                    }, "someId");
                });
            }
Beispiel #2
0
    public IEnumerator TestSimple()
    {
        ICommit a = new CommitBuilder().SetMessage("Commit A").Build();
        ICommit b = new CommitBuilder().SetParent(a).SetMessage("Commit B").Build();

        yield return(null);

        Assert.AreEqual("Commit A", b.GetParent().GetMessage());
    }
Beispiel #3
0
    public IEnumerator TestBranchConstruction()
    {
        ICommit A          = new CommitBuilder().SetMessage("Test commit object construction").Build();
        IBranch testBranch = new Branch("feature/branches", A);

        yield return(null);

        Assert.AreSame(A, testBranch.GetTip());
        Assert.AreEqual("feature/branches", testBranch.GetName());
    }
Beispiel #4
0
    /// <summary>
    /// Creates a new commit from the current state of the staging area.
    /// Appends the commit to the current branch and clears the staging area.
    /// Clears the preview of the staging area.
    ///
    /// Additional parameter for forcing commits through the player's enabled version control mechanics
    /// such as for oneShot doors.
    /// </summary>
    public ICommit Commit(string message, bool forced)
    {
        if (!EnabledVersionControls.Instance().CanCommit&& !forced)
        {
            Debug.Log("Can't Commit; not enabled yet");
            return(null);
        }
        if (isDetached)
        {
            throw new InvalidOperationException("Cannot commit in detached HEAD state");
        }

        CommitBuilder builder = new CommitBuilder();

        builder.SetMessage(message);
        builder.SetParent(activeCommit);
        foreach (VersionController controller in trackedObjects)
        {
            IVersion controllerVersion;
            if (stagingArea.Contains(controller))
            {
                // increment commit count
                controllerVersion = controller.GenerateVersion();
            }
            else
            {
                controllerVersion = controller.GetVersion();
            }
            builder.AddObject(controller, controllerVersion);
        }
        ICommit commit = builder.Build();

        activeCommit = commit;
        foreach (VersionController stagedController in stagingArea)
        {
            stagedController.HideStagedState();
        }
        if (activeBranch != null)
        {
            activeBranch.UpdateTip(activeCommit);
        }
        stagingArea.Clear();

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

        UIController.Instance().UpdateOverlay();

        return(commit);
    }
Beispiel #5
0
        static void Main(string[] args)
        {
            do
            {
                Console.WriteLine("*** GitHub Manager ***");

                string user       = GetUserFromConsole();
                string repository = GetRepositoryFromConsole();

                var    api    = new CommitApi();
                string result = api.GetResponse(user, repository);

                try
                {
                    JArray resultArray = JArray.Parse(result);

                    foreach (JObject commit in resultArray)
                    {
                        IBuilder builder  = new CommitBuilder(commit);
                        Director director = new Director(builder);

                        var    commitJson        = builder.Build();
                        string commitConsoleLine = GetOneCommitLine(repository, commitJson);

                        Commit commitToDatabase = new Commit
                        {
                            User       = user,
                            Repository = repository,
                            Sha        = commitJson["sha"],
                            Message    = commitJson["message"],
                            Committer  = commitJson["committerName"]
                        };

                        try
                        {
                            CommitModel model = new CommitModel();
                            model.SaveToDatabase(commitToDatabase);
                        }
                        catch (Exception)
                        {
                            Console.WriteLine("Error 002: Database write error.");
                        }

                        Console.WriteLine(commitConsoleLine);
                    }
                }
                catch (Exception)
                {
                    Console.WriteLine("Error 001: Bad request. Try Again.");
                }
            }while (true);
        }
Beispiel #6
0
    protected override void Awake()
    {
        base.Awake();

        //Construct Initial Commit
        CommitBuilder cb = new CommitBuilder();

        cb.SetMessage("Initial Commit");
        ICommit initialCommit = cb.Build();

        activeCommit = initialCommit;
        activeBranch.UpdateTip(initialCommit);
    }
        public void FilesWithSameCommitId_MergedIntoSingleCommit()
        {
            var f1        = new FileInfo("file1.txt");
            var f2        = new FileInfo("file2.txt");
            var revisions = new[]
            {
                f1.CreateRevision("1.1", "commit1"),
                f2.CreateRevision("1.1", "commit1"),
            };

            var builder = new CommitBuilder(m_log, revisions);
            var commits = builder.GetCommits().ToList();

            Assert.IsTrue(commits.Single().Select(f => f.File.Name).SequenceEqual("file1.txt", "file2.txt"));
        }
        public void FileAddedOnTrunk_BranchAddedOnUnchanged()
        {
            var file      = new FileInfo("file.txt");
            var revisions = new[]
            {
                file.CreateRevision("1.1", "main", isDead: true).WithMessage("created"),
            };

            var builder = new CommitBuilder(m_log, revisions);
            var commits = builder.GetCommits().ToList();

            var fileRevision = commits.Single().Single();

            Assert.AreEqual(fileRevision.File.BranchAddedOn, "MAIN");
        }
Beispiel #9
0
            CommitBuilder(TestRepository testRepository, CommitBuilder prior)
            {
                _testRepository = testRepository;
                branch          = prior.branch;

                DirCacheBuilder b = tree.builder();

                for (int i = 0; i < prior.tree.getEntryCount(); i++)
                {
                    b.add(prior.tree.getEntry(i));
                }
                b.finish();

                parents.Add(prior.create());
            }
        public void FilesWithoutCommitId_DifferentMessage_NotMergedTogether()
        {
            var now       = DateTime.Now;
            var f1        = new FileInfo("file1.txt");
            var f2        = new FileInfo("file2.txt");
            var revisions = new[]
            {
                f1.CreateRevision("1.1", "", now).WithMessage("message #1"),
                f2.CreateRevision("1.1", "", now).WithMessage("message #2"),
            };

            var builder = new CommitBuilder(m_log, revisions);
            var commits = builder.GetCommits().ToList();

            Assert.AreEqual(commits.Count, 2);
        }
        public void FileAddedOnBranch()
        {
            var file      = new FileInfo("file.txt");
            var revisions = new[]
            {
                file.CreateRevision("1.1.2.1", "branch").WithMessage("created"),
                file.CreateRevision("1.1", "main", isDead: true).WithMessage("file file.txt was initially added on branch branch."),
            };

            var builder = new CommitBuilder(m_log, revisions);
            var commits = builder.GetCommits().ToList();

            var fileRevision = commits.Single().Single();

            Assert.IsTrue(fileRevision.Revision.ToString() == "1.1.2.1");
            Assert.AreEqual(fileRevision.File.BranchAddedOn, "branch");
        }
        public void FilesWithoutCommitId_SameMessage_MergedTogether()
        {
            var now       = DateTime.Now;
            var f1        = new FileInfo("file1.txt");
            var f2        = new FileInfo("file2.txt");
            var revisions = new[]
            {
                f1.CreateRevision("1.1", "", now - TimeSpan.FromSeconds(1)).WithMessage("message"),
                f2.CreateRevision("1.1", "", now).WithMessage("message"),
            };

            var builder = new CommitBuilder(m_log, revisions);
            var commits = builder.GetCommits().ToList();

            var commit = commits.Single();

            Assert.IsTrue(commit.Select(f => f.File.Name).SequenceEqual("file1.txt", "file2.txt"));
            Assert.AreEqual(commit.Message, "message");
        }
        public void FilesWithoutCommitId_SameMessage_TimeGap()
        {
            var now       = DateTime.Now;
            var f1        = new FileInfo("file1.txt");
            var f2        = new FileInfo("file2.txt");
            var f3        = new FileInfo("file3.txt");
            var revisions = new[]
            {
                f1.CreateRevision("1.1", "", now).WithMessage("message"),
                f2.CreateRevision("1.1", "", now).WithMessage("message"),
                f3.CreateRevision("1.1", "", now + TimeSpan.FromMinutes(5)).WithMessage("message"),
            };

            var builder = new CommitBuilder(m_log, revisions);
            var commits = builder.GetCommits().ToList();

            Assert.AreEqual(commits.Count, 2);
            Assert.IsTrue(commits[0].Select(f => f.File.Name).SequenceEqual("file1.txt", "file2.txt"));
            Assert.IsTrue(commits[1].Select(f => f.File.Name).Single() == "file3.txt");
        }
Beispiel #14
0
 /**
  * Forcefully update this branch to a particular commit.
  *
  * @param to
  *            the commit to update to.
  * @return {@code to}.
  * @throws Exception
  */
 public RevCommit update(CommitBuilder to)
 {
     return(update(to.create()));
 }
Beispiel #15
0
 /**
  * Update a reference to point to an object.
  *
  * @param ref
  *            the name of the reference to update to. If {@code ref} does
  *            not start with {@code refs/} and is not the magic names
  *            {@code HEAD} {@code FETCH_HEAD} or {@code MERGE_HEAD}, then
  *            {@code refs/heads/} will be prefixed in front of the given
  *            name, thereby assuming it is a branch.
  * @param to
  *            the target object.
  * @return the target object.
  * @throws Exception
  */
 public RevCommit update(String @ref, CommitBuilder to)
 {
     return(update(@ref, to.create()));
 }