2013-11-21 2 views
0

objective-git을 사용하여 Git 저장소를 만들려고합니다. 문서는 GT 클래스가 함께 저장소를 만드는 방법에 대해 다소 부족하여 일부러 붙어 있습니다.Objective-Git으로 저장소 만들기

이것은 내가 지금까지 작업 한 것입니다 :

GTRepository *newRepo = [GTRepository initializeEmptyRepositoryAtFileURL:repoURL error:&error] 

내가 그 디렉토리에 파일들을 복사합니다. Git 클라이언트에서 repo를 열고 작업 디렉토리에서 해당 파일을 볼 수 있습니다. 모든 것이 지금까지는 좋아 보인다. 그러나 이것이 내가 붙어있는 곳입니다. 다음 번에 실제로 지점을 만들고 그 파일을 커밋할까요?

EDIT : GTRepository에서 GTIndex를 얻었습니다. (그래도 인덱스의 fileURL 속성은 여전히 ​​nil이므로 해당 파일을 생성하는 방법을 모르겠습니다.) 내 파일을 반복하면서 내 색인에 GTIndexEntries를 생성하는 addFile:error:을 호출합니다. 그런 다음 writeTree:으로 전화하여 [repository createCommitWithTree:newTree message:@"Initial Commit" parents:nil updatingReferenceNamed:nil error:&error];에 전달하는 GTTree를 다시 가져옵니다. 이것은 유효한 GTCommit 객체와 NSError를 반환하지만, [저장소 headReferenceWithError : & 오류]; 이제 새로 생성 된 커밋에 대한 참조를 반환하지만 여전히 nil을 반환합니다. 이 커밋을 마무리하기 위해 누락 된 단계가 있습니까?

+1

인덱스를 만들거나 리포지토리의 기존 인덱스를'[repository indexWithError : NULL]'같은 것으로로드 하시겠습니까? –

+0

나는 인덱스 파일을 보지 못 했으므로 직접 작성해야한다고 생각했지만 indexWithError는 유효한 GTIndex를 반환합니다. 이제 GTTreeBuilder를 사용하는 대신 인덱스를 사용하여 addFile : 및 writeTree :를 사용하려고 시도합니다. –

답변

3

정적 메서드가 [GTReference referenceByCreatingReferenceNamed:name] 인 것처럼 보입니다. 당신이 그것을 어떻게 사용하는지 Here's an example.

+0

이 두 메소드는 결국 해당 이름으로 기존 참조를 검색하는 git_reference_lookup() 함수를 호출합니다. 나는 기존의 참조가 없다 –

+0

쥐. 음, 당신은 항상'git_reference_create'를 호출 할 수 있다고 생각합니다 : http://libgit2.github.com/libgit2/#HEAD/group/reference/git_reference_create –

+0

사실, 가능한 한 Objective-Git을 고수하고 싶습니다. –