2013-10-09 1 views
2

어떻게 libgit2sharp에서 고아 지점을 만드나요?libgit2sharp의 고아 지점

내가 찾은 모든 것은 커밋을 가리키는 분기를 만드는 메소드입니다.
나는 명령과 유사한 효과를 찾고 있어요 :

git checkout --orphan BRANCH_NAME 

답변

3

git checkout --orphan BRANCH_NAME 실제로 작업 디렉토리 나 인덱스를 변경하지 않고 태어나지 않은 지점 BRANCH_NAMEHEAD 이동합니다.

HEAD 참조 대상을 repo.Refs.UpdateTarget() 메서드로 업데이트하면 LibGit2Sharp와 비슷한 작업을 수행 할 수 있습니다.

다음 시험이

[Fact] 
public void CanCreateAnUnbornBranch() 
{ 
    string path = CloneStandardTestRepo(); 
    using (var repo = new Repository(path)) 
    { 
     // No branch named orphan 
     Assert.Null(repo.Branches["orphan"]); 

     // HEAD doesn't point to an unborn branch 
     Assert.False(repo.Info.IsHeadUnborn); 

     // Let's move the HEAD to this branch to be created 
     repo.Refs.UpdateTarget("HEAD", "refs/heads/orphan"); 
     Assert.True(repo.Info.IsHeadUnborn); 

     // The branch still doesn't exist 
     Assert.Null(repo.Branches["orphan"]); 

     // Create a commit against HEAD 
     var signature = new Signature("Me", "[email protected]", DateTimeOffset.Now); 
     Commit c = repo.Commit("New initial root commit", signature, signature); 

     // Ensure this commit has no parent 
     Assert.Equal(0, c.Parents.Count()); 

     // The branch now exists... 
     Branch orphan = repo.Branches["orphan"]; 
     Assert.NotNull(orphan); 

     // ...and points to that newly created commit 
     Assert.Equal(c, orphan.Tip); 
    } 
} 
보여줍니다