Ejemplo n.º 1
0
        /// <summary>
        /// Converts this object to a Commit object
        /// </summary>
        /// <param name="directory">The directory dependency for proxies</param>
        /// <param name="loader">The loader object which specifies which objects to load</param>
        /// <returns></returns>
        public Commit GetCommit(DirectoryStructure directory, CommitDependencyLoader loader)
        {
            Commit[] parents = new Commit[Parents.Length];
            for (int i = 0; i < parents.Length; i++)
            {
                string p = Parents[i];
                if (loader.LoadParents && loader.ShouldLoadParent(p))
                {
                    parents[i] = directory.GetCommit(p, loader.GetParent(p));
                }
                else
                {
                    parents[i] = new CommitProxy(p, directory);
                }
            }

            Changelog changelog = loader.LoadChangelog ?
                                  directory.GetChangelog(Changelog) :
                                  new ChangelogProxy(Changelog, directory);

            Version version = loader.LoadVersion ?
                              directory.GetVersion(Hash, loader.LoadVersionData) :
                              new VersionProxy(Version, directory);

            CommitMetadata metadata = Metadata != null?Metadata.GetMetadata()
                                          : throw new FormatException("Commit must contain metadata");

            return(new Commit(parents, changelog, version, metadata, Hash));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Loads a Commit from the file directory
        /// </summary>
        /// <param name="hash">The hash of the Commit to load</param>
        /// <param name="loader">The loading dependencies for the commit</param>
        /// <returns></returns>
        public Commit GetCommit(string hash, CommitDependencyLoader loader = null)
        {
            string filepath = Path.Combine(path, COMMIT_PATH, hash + COMMIT_EXT);

            return(CommitFileManager.LoadCommit(filepath, this, loader));
        }