public async Task<string> CreateAsync(string name) { var newRepo = new NewRepository(name) { AutoInit = true }; var repository = await Client.Repository.Create(newRepo).ConfigureAwait(false); var newLabels = Configuration.repository.labels.Select(label => new NewLabel(label.name, label.color)).ToList(); foreach (var newLabel in newLabels) { await Client.Issue.Labels.Create(repository.Owner.Login, repository.Name, newLabel).ConfigureAwait(false); } foreach (var branch in Configuration.repository.branches) { var master = await Client.GitDatabase.Reference.Get(repository.Owner.Login, repository.Name, "heads/master") .ConfigureAwait(false); var reference = new NewReference($"refs/heads/{branch.Name}", master.Object.Sha); var createdReference = await Client.GitDatabase.Reference.Create(repository.Owner.Login, repository.Name, reference) .ConfigureAwait(false); if (branch.IsDefault) { var repositoryUpdate = new RepositoryUpdate(); repositoryUpdate.Name = repository.Name; repositoryUpdate.DefaultBranch = branch.Name; await Client.Repository.Edit(repository.Owner.Login, repository.Name, repositoryUpdate).ConfigureAwait(false); } } return repository.HtmlUrl; }
/// <summary> /// Creates a reference for a given repository /// </summary> /// <remarks> /// http://developer.github.com/v3/git/refs/#create-a-reference /// </remarks> /// <param name="owner">The owner of the repository</param> /// <param name="name">The name of the repository</param> /// <param name="reference">The reference to create</param> /// <returns></returns> public Task <Reference> Create(string owner, string name, NewReference reference) { Ensure.ArgumentNotNullOrEmptyString(owner, "owner"); Ensure.ArgumentNotNullOrEmptyString(name, "name"); Ensure.ArgumentNotNull(reference, "reference"); return(ApiConnection.Post <Reference>(ApiUrls.Reference(owner, name), reference)); }
/// <summary> /// Creates a reference for a given repository /// </summary> /// <remarks> /// http://developer.github.com/v3/git/refs/#create-a-reference /// </remarks> /// <param name="owner">The owner of the repository</param> /// <param name="name">The name of the repository</param> /// <param name="reference">The reference to create</param> /// <returns></returns> public Task<Reference> Create(string owner, string name, NewReference reference) { Ensure.ArgumentNotNullOrEmptyString(owner, "owner"); Ensure.ArgumentNotNullOrEmptyString(name, "name"); Ensure.ArgumentNotNull(reference, "reference"); return ApiConnection.Post<Reference>(ApiUrls.Reference(owner, name), reference); }
/// <summary> /// Creates a reference for a given repository /// </summary> /// <remarks> /// http://developer.github.com/v3/git/refs/#create-a-reference /// </remarks> /// <param name="repositoryId">The Id of the repository</param> /// <param name="reference">The reference to create</param> /// <returns></returns> public Task <Reference> Create(long repositoryId, NewReference reference) { Ensure.ArgumentNotNull(reference, "reference"); return(ApiConnection.Post <Reference>(ApiUrls.Reference(repositoryId), reference)); }
/// <summary> /// Creates a reference for a given repository /// </summary> /// <remarks> /// http://developer.github.com/v3/git/refs/#create-a-reference /// </remarks> /// <param name="repositoryId">The ID of the repository</param> /// <param name="reference">The reference to create</param> /// <returns></returns> public Task<Reference> Create(int repositoryId, NewReference reference) { Ensure.ArgumentNotNull(reference, "reference"); return ApiConnection.Post<Reference>(ApiUrls.Reference(repositoryId), reference); }
/// <summary> /// Creates the base state for testing (creates a repo, a commit in master, a branch, a commit in the branch and a pull request) /// </summary> /// <returns></returns> async Task<PullRequestData> CreatePullRequest(RepositoryContext context) { var repoName = context.RepositoryName; // Creating a commit in master var createdCommitInMaster = await CreateCommit(repoName, "Hello World!", "README.md", "heads/master", "A master commit message"); // Creating a branch var newBranch = new NewReference(branchRef, createdCommitInMaster.Sha); await _github.Git.Reference.Create(Helper.UserName, repoName, newBranch); // Creating a commit in the branch var createdCommitInBranch = await CreateCommit(repoName, "Hello from the fork!", path, branchHead, "A branch commit message"); // Creating a pull request var pullRequest = new NewPullRequest("Nice title for the pull request", branchName, "master"); var createdPullRequest = await _github.PullRequest.Create(Helper.UserName, repoName, pullRequest); var data = new PullRequestData { Sha = createdCommitInBranch.Sha, Number = createdPullRequest.Number, }; return data; }
public async Task CanCreateAReference() { var blob = new NewBlob { Content = "Hello World!", Encoding = EncodingType.Utf8 }; var blobResult = await _client.GitDatabase.Blob.Create(_owner, _repository.Name, blob); var newTree = new NewTree(); newTree.Tree.Add(new NewTreeItem { Mode = FileMode.File, Type = TreeType.Blob, Path = "README.md", Sha = blobResult.Sha }); var treeResult = await _client.GitDatabase.Tree.Create(_owner, _repository.Name, newTree); var newCommit = new NewCommit("This is a new commit", treeResult.Sha); var commitResult = await _client.GitDatabase.Commit.Create(_owner, _repository.Name, newCommit); var newReference = new NewReference("heads/develop", commitResult.Sha); var result = await _fixture.Create(_owner, _repository.Name, newReference); Assert.Equal(commitResult.Sha, result.Object.Sha); }
public async Task CanUpdateAReference() { var firstBlob = new NewBlob { Content = "Hello World!", Encoding = EncodingType.Utf8 }; var firstBlobResult = await _client.GitDatabase.Blob.Create(_owner, _repository.Name, firstBlob); var secondBlob = new NewBlob { Content = "This is a test!", Encoding = EncodingType.Utf8 }; var secondBlobResult = await _client.GitDatabase.Blob.Create(_owner, _repository.Name, secondBlob); var firstTree = new NewTree(); firstTree.Tree.Add(new NewTreeItem { Mode = FileMode.File, Type = TreeType.Blob, Path = "README.md", Sha = firstBlobResult.Sha }); var firstTreeResult = await _client.GitDatabase.Tree.Create(_owner, _repository.Name, firstTree); var firstCommit = new NewCommit("This is a new commit", firstTreeResult.Sha); var firstCommitResult = await _client.GitDatabase.Commit.Create(_owner, _repository.Name, firstCommit); var newReference = new NewReference("heads/develop", firstCommitResult.Sha); await _fixture.Create(_owner, _repository.Name, newReference); var secondTree = new NewTree(); secondTree.Tree.Add(new NewTreeItem { Mode = FileMode.File, Type = TreeType.Blob, Path = "README.md", Sha = secondBlobResult.Sha }); var secondTreeResult = await _client.GitDatabase.Tree.Create(_owner, _repository.Name, secondTree); var secondCommit = new NewCommit("This is a new commit", secondTreeResult.Sha, firstCommitResult.Sha); var secondCommitResult = await _client.GitDatabase.Commit.Create(_owner, _repository.Name, secondCommit); var referenceUpdate = new ReferenceUpdate(secondCommitResult.Sha); var result = await _fixture.Update(_owner, _repository.Name, "heads/develop", referenceUpdate); Assert.Equal(secondCommitResult.Sha, result.Object.Sha); }
public async Task CanDeleteAReference() { var blob = new NewBlob { Content = "Hello World!", Encoding = EncodingType.Utf8 }; var blobResult = await _github.Git.Blob.Create(_context.RepositoryOwner, _context.RepositoryName, blob); var newTree = new NewTree(); newTree.Tree.Add(new NewTreeItem { Mode = FileMode.File, Type = TreeType.Blob, Path = "README.md", Sha = blobResult.Sha }); var treeResult = await _github.Git.Tree.Create(_context.RepositoryOwner, _context.RepositoryName, newTree); var newCommit = new NewCommit("This is a new commit", treeResult.Sha); var commitResult = await _github.Git.Commit.Create(_context.RepositoryOwner, _context.RepositoryName, newCommit); var newReference = new NewReference("heads/develop", commitResult.Sha); await _fixture.Create(_context.RepositoryOwner, _context.RepositoryName, newReference); await _fixture.Delete(_context.RepositoryOwner, _context.RepositoryName, "heads/develop"); var all = await _fixture.GetAll(_context.RepositoryOwner, _context.RepositoryName); Assert.Empty(all.Where(r => r.Ref == "heads/develop")); }
public async Task CanUpdateAReference() { // TODO: create a blob // TODO: create a tree // TODO: create a commit // TODO: use the SHA to create a reference var newReference = new NewReference("heads/develop", "sha"); await _fixture.Create("owner", "repo", newReference); var referenceUpdate = new ReferenceUpdate("sha"); var result = await _fixture.Update("owner", "repo", "heads/develop", referenceUpdate); Assert.NotNull(result); }
public void EnforcesRefsPrefix() { var create = new NewReference("heads/develop", "sha"); Assert.Equal(create.Ref, "refs/heads/develop"); }