public IEnumerable<ICommit> GetHistory(Project project, string id) { var repo = GetRepository(project); var branch = repo.Branches[id]; yield return new GitCommit { Username = branch.CurrentCommit.Committer.Name, DateTime = branch.CurrentCommit.CommitDate.DateTime, Message = branch.CurrentCommit.Message, Id = branch.CurrentCommit.Hash, TreeId = branch.CurrentCommit.Tree.Hash, ParentIds = branch.CurrentCommit.HasParents ? branch.CurrentCommit.Parents.Select(p => p.Hash) : Enumerable.Empty<string>(), Changes = GetChanges(branch.CurrentCommit) }; foreach (var ancestor in branch.CurrentCommit.Ancestors) { yield return new GitCommit { Username = ancestor.Committer.Name, DateTime = ancestor.CommitDate.DateTime, Message = ancestor.Message, Id = ancestor.Hash, TreeId = ancestor.Tree.Hash, ParentIds = ancestor.HasParents ? ancestor.Parents.Select(p => p.ShortHash) : Enumerable.Empty<string>(), Changes = GetChanges(ancestor) }; } }
public IEnumerable<IBranch> GetBranches(Project project) { var repo = GetRepository(project); return repo.Branches.Select(b => new GitBranch { Name = b.Key, IsCurrent = b.Value.IsCurrent }); }
public void CreateRepository(Project project) { var cmd = new InitCommand { GitDirectory = Path.Combine(GitSettings.RepositoriesPath, project.Name), Quiet = false, Bare = true }; cmd.Execute(); }
public ICommit GetCommit(Project project, string commitId) { var repo = GetRepository(project); var commit = repo.Get<Commit>(commitId); if (commit == null) return null; return new GitCommit { Username = commit.Committer.Name, DateTime = commit.CommitDate.DateTime, Message = commit.Message, Id = commit.Hash, TreeId = commit.Tree.Hash, ParentIds = commit.HasParents ? commit.Parents.Select(p => p.Hash) : Enumerable.Empty<string>(), Changes = GetChanges(commit) }; }
public ISourceObject GetSourceObject(Project project, string treeId, string path) { var provider = _sourceControlProviders.Single(x => x.Metadata.Name == project.SourceControlProvider); return provider.Value.GetSourceObject(project, treeId, path); }
public ISourceControlProviderMetadata GetProviderMetadata(Project project) { return _sourceControlProviders.Single(x => x.Metadata.Name == project.SourceControlProvider).Metadata; }
public IEnumerable<ICommit> GetHistory(Project project, string id) { var provider = _sourceControlProviders.Single(x => x.Metadata.Name == project.SourceControlProvider); return provider.Value.GetHistory(project, id); }
public ICommit GetCommit(Project project, string commitId) { var provider = _sourceControlProviders.Single(x => x.Metadata.Name == project.SourceControlProvider); return provider.Value.GetCommit(project, commitId); }
public IEnumerable<IBranch> GetBranches(Project project) { var provider = _sourceControlProviders.Single(x => x.Metadata.Name == project.SourceControlProvider); return provider.Value.GetBranches(project); }
public ISourceObject GetSourceObject(Project project, string treeId, string path) { var repo = GetRepository(project); AbstractTreeNode node = null; if (repo.Branches.ContainsKey(treeId)) node = repo.Branches[treeId].CurrentCommit.Tree; else node = repo.Get<AbstractObject>(treeId) as AbstractTreeNode; if (node == null) throw new NotSupportedException(); if(!string.IsNullOrEmpty(path)) node = GetNode(node, path.Split('/')); return CreateGitSourceObject(treeId, node); }
private static Repository GetRepository(Project project) { return new Repository(Path.Combine(GitSettings.RepositoriesPath, project.Name + ".git")); }