2017-09-25 9 views
1

이것은 현재 사용중인 코드입니다. 파일 내용을 삭제하고 새 내용으로 바꿉니다.octokit.net을 사용하여 Github의 기존 파일을 수정하는 방법은 무엇입니까?

var readfile = client.Repository.Content.GetAllContentsByRef(owner, repo, targetFile, branch).Result; 
var updatefile =client.Repository.Content.UpdateFile(owner,repo,targetFile, 
new UpdateFileRequest("API File update", "Added this new line new ", readfile.First().Sha, branch)); 

콘텐츠를 파일에 추가하려고합니다. 그것을 대체하지 마십시오. 내 코드에 결함이 있습니까?

답변

0

콘텐츠 API는 업데이트 할 때 파일의 내용을 덮어 쓰도록 설계되었으므로 파일의 내용을 읽고 새 줄을 추가해야합니다.

다음은 맞춤화 된 업데이트 된 예입니다. GitHub API는 기본적으로 Base64로 인코딩 된 콘텐츠를 제공합니다.

var currentFileText = ""; 

var contents = await client.Repository.Content.GetAllContentsByRef(owner, repo, targetFilePath, branch); 
var targetFile = contents[0]; 
if (targetFile.EncodedContent != null) 
{ 
    currentFileText = Encoding.UTF8.GetString(Convert.FromBase64String(targetFile.EncodedContent)); 
} 
else 
{ 
    currentFileText = targetFile.Content; 
} 

var newFileText = string.Format("{0}\n{1}", currentFileText, "Added this new line"); 
var updateRequest = new UpdateFileRequest("API File update", newFileText, targetFile.Sha, branch); 

var updatefile = await client.Repository.Content.UpdateFile(owner, repo, targetFilePath, updateRequest);