3

libgit2 ライブラリを使用してブランチを作成するにはどうすればよいですか? API にはコミット ターゲットへの参照がありますが、このパラメーターには何を使用すればよいですか?

これは、テストのサンプル コードに基づいて、これまでに取得したコードですが、多くのハード コードされた参照を使用しているため、実際のシナリオで何を使用する必要があるかを発見するのは困難です。実例。

git_reference *branch = NULL, *head = NULL;

/* Create the branch */
git_branch_create( &branch, open_repo, "MyNewBranch", target, 0 );

/* Make HEAD point to this branch */
git_reference_symbolic_create( &head, open_repo, "HEAD", git_reference_name( branch ), 1 );
git_reference_free( head );
git_reference_free( branch );
4

1 に答える 1

4

この場合、「ターゲット」として何を渡す必要がありますか。

新しいブランチが指すようにする解決済みのコミット。

ヘッダーに書いてある通り

@param targetこのブランチが指すオブジェクト。このオブジェクトは、指定されたに属している必要repoがあり、git_commit または git_tag のいずれかにすることができます。git_tag が渡されるとき、ブランチのターゲットとして使用される git_commit に dereferencable である必要があります。

注:驚いたことに、ヘッダーはコードと同期していません。ヘッダーは、a を渡しても問題ないと読者に思わせますgit_object。ただし、aのみgit_commit受け付けます。

アップデート

そして、「解決されたコミット」を取得するにはどうすればよいですか。

  • コミットの oid がわかっている場合は、それをgit_commit_lookup()使用することをお勧めします。
  • git_objectたまたまコミット(git_object_type()return )である a をすでに保持している場合は、GIT_OBJ_COMMITそれをキャスト(git_commit *)my_objectして関数に渡すことができます。
于 2013-04-01T19:35:27.643 に答える