public MetaInfo(int build) { this.BuildNumber = build; this.CodeRepo = new MetaGitInfo(); this.SubRepos = new List<MetaGitInfo>(); }
public void CreateMetaInfo() { BuildMeta = new MetaInfo(0); // find the build number based on main git repo and all its sub modules int buildnumber = 0; string GitFolder = CombinePaths(DLCDir, GIT_FOLDER_NAME); if (DirectoryExists(GitFolder)) { using (var repo = new LibGit2Sharp.Repository(GitFolder)) { MetaGitInfo gitinfo = new MetaGitInfo(); gitinfo.Name = "."; gitinfo.CommitCount = repo.Commits.Count(); gitinfo.SHA = repo.Commits.First().Id.ToString(); gitinfo.SHAShort = repo.Commits.First().Id.ToString(7); buildnumber += gitinfo.CommitCount; BuildMeta.CodeRepo = gitinfo; foreach (var submodule in repo.Submodules) { string SubFolder = CombinePaths(DLCDir, submodule.Path); if (DirectoryExists(SubFolder)) { using (var subrepo = new LibGit2Sharp.Repository(SubFolder)) { MetaGitInfo subgitinfo = new MetaGitInfo(); subgitinfo.Name = submodule.Name; subgitinfo.CommitCount = subrepo.Commits.Count(); subgitinfo.SHA = submodule.HeadCommitId.ToString(); subgitinfo.SHAShort = submodule.HeadCommitId.ToString(7); buildnumber += subgitinfo.CommitCount; BuildMeta.SubRepos.Add(subgitinfo); } } } } } BuildMeta.BuildNumber = buildnumber; }