LibGit2

LibGit2モジュールは、libgit2へのバインディングを提供する、ポータブルCライブラリであり、Gitバージョン管理システムのコア機能を実装しています。これらのバインディングは現在、Juliaのパッケージマネージャを支えるために使用されています。このモジュールは最終的に別のパッケージに移動されることが期待されています。

Functionality

このドキュメントの一部は、libgit2 APIに関する事前の知識を前提としています。ここで参照されているいくつかのオブジェクトやメソッドに関する詳細については、上流の libgit2 API reference を参照してください。

LibGit2.BufferType
LibGit2.Buffer

libgit2からデータをエクスポートするためのデータバッファ。git_buf構造体に一致します。

LibGit2からデータを取得する際の典型的な使用法は次のようになります:

buf_ref = Ref(Buffer())
@check ccall(..., (Ptr{Buffer},), buf_ref)
# buf_refに対する操作
free(buf_ref)

特に、Refオブジェクトに対してその後にLibGit2.freeを呼び出す必要があることに注意してください。

source
LibGit2.CheckoutOptionsType
LibGit2.CheckoutOptions

git_checkout_options 構造体に対応しています。

フィールドは次のことを表します:

  • version: 使用中の構造体のバージョン。将来的に変更される場合に備えています。現時点では常に 1 です。
  • checkout_strategy: コンフリクトの処理方法や、強制的にチェックアウト/欠落ファイルの再作成を行うかどうかを決定します。
  • disable_filters: 非ゼロの場合、CLRFのようなフィルタを適用しません(UNIXとDOSの間でファイルの改行を変換するため)。
  • dir_mode: チェックアウトに関与するディレクトリの読み取り/書き込み/アクセスモード。デフォルトは 0755 です。
  • file_mode: チェックアウトに関与するファイルの読み取り/書き込み/アクセスモード。デフォルトは 0755 または 0644 で、blob によって異なります。
  • file_open_flags: チェックアウト中にファイルを開くために使用されるビットフラグ。
  • notify_flags: ユーザーが通知されるべきコンフリクトの種類に関するフラグ。
  • notify_cb: チェックアウトコンフリクトが発生した場合にユーザーに通知するためのオプションのコールバック関数。この関数が非ゼロの値を返すと、チェックアウトはキャンセルされます。
  • notify_payload: 通知コールバック関数のペイロード。
  • progress_cb: チェックアウトの進行状況を表示するためのオプションのコールバック関数。
  • progress_payload: 進行状況コールバックのペイロード。
  • paths: 空でない場合、チェックアウト中に検索するパスを説明します。空の場合、リポジトリ内のすべてのファイルに対してチェックアウトが行われます。
  • baseline: workdir の期待される内容で、GitTree へのポインタにキャプチャされます。デフォルトは HEAD のツリーの状態です。
  • baseline_index: workdir の期待される内容で、GitIndex へのポインタにキャプチャされます。デフォルトは HEAD のインデックスの状態です。
  • target_directory: 空でない場合、このディレクトリにチェックアウトします。workdir の代わりに使用されます。
  • ancestor_label: コンフリクトが発生した場合の共通の祖先側の名前。
  • our_label: コンフリクトが発生した場合の「私たち」側の名前。
  • their_label: コンフリクトが発生した場合の「彼ら」側の名前。
  • perfdata_cb: パフォーマンスデータを表示するためのオプションのコールバック関数。
  • perfdata_payload: パフォーマンスコールバックのペイロード。
source
LibGit2.CloneOptionsType
LibGit2.CloneOptions

git_clone_options 構造体に対応しています。

フィールドは次のことを表します:

  • version: 使用中の構造体のバージョン。将来的に変更される場合に備えています。現時点では常に 1 です。
  • checkout_opts: クローンの一部としてリモートのチェックアウトを行うためのオプション。
  • fetch_opts: クローンの一部としてリモートの事前チェックアウトフェッチを行うためのオプション。
  • bare: 0 の場合、リモートリポジトリ全体をクローンします。非ゼロの場合、ベアクローンを実行し、リポジトリ内にソースファイルのローカルコピーはなく、gitdirworkdir が同じになります。
  • localclone: ローカルオブジェクトデータベースをクローンするか、フェッチを行うかのフラグ。デフォルトは git に決定させます。ローカルクローンには git 対応のトランスポートを使用せず、file:// で始まる URL には使用します。
  • checkout_branch: チェックアウトするブランチの名前。空の文字列の場合、リモートのデフォルトブランチがチェックアウトされます。
  • repository_cb: クローンが作成される 新しい リポジトリを作成するために使用されるオプションのコールバック。
  • repository_cb_payload: リポジトリコールバックのペイロード。
  • remote_cb: クローンを作成する前に GitRemote を作成するために使用されるオプションのコールバック。
  • remote_cb_payload: リモートコールバックのペイロード。
source
LibGit2.DescribeOptionsType
LibGit2.DescribeOptions

git_describe_options 構造体に対応しています。

フィールドは次のように表されます:

  • version: 使用中の構造体のバージョン。将来的に変更される場合に備えています。現時点では常に 1 です。
  • max_candidates_tags: コミットを説明するために refs/tags にある最近のタグをこの数だけ考慮します。デフォルトは 10 です(つまり、10 個の最も最近のタグがコミットを説明するかどうかを調べます)。
  • describe_strategy: refs/tags のすべてのエントリを考慮するか(git-describe --tags に相当)、または refs/ のすべてのエントリを考慮するか(git-describe --all に相当)を指定します。デフォルトは注釈付きタグのみを表示します。Consts.DESCRIBE_TAGS が渡されると、注釈の有無にかかわらずすべてのタグが考慮されます。Consts.DESCRIBE_ALL が渡されると、refs/ 内の任意の参照が考慮されます。
  • pattern: pattern に一致するタグのみを考慮します。グロブ展開をサポートしています。
  • only_follow_first_parent: 一致する参照から説明されたオブジェクトまでの距離を見つける際に、最初の親からの距離のみを考慮します。
  • show_commit_oid_as_fallback: コミットを説明する一致する参照が見つからない場合、エラーをスローする代わりにコミットの GitHash を表示します(デフォルトの動作)。
source
LibGit2.DescribeFormatOptionsType
LibGit2.DescribeFormatOptions

git_describe_format_options 構造体に対応しています。

フィールドは次のことを表します:

  • version: 使用中の構造体のバージョン。将来的に変更される場合に備えています。現在は常に 1 です。
  • abbreviated_size: 使用する省略された GitHash のサイズの下限で、デフォルトは 7 です。
  • always_use_long_format: 短い形式が使用できる場合でも、文字列に長い形式を使用するために 1 に設定します。
  • dirty_suffix: 設定されている場合、workdir が汚れているときに説明文字列の末尾に追加されます。
source
LibGit2.DiffDeltaType
LibGit2.DiffDelta

エントリへの変更の説明。git_diff_delta 構造体に一致します。

フィールドは次のことを表します:

  • status: Consts.DELTA_STATUS のいずれかで、ファイルが追加/変更/削除されたかどうかを示します。
  • flags: デルタおよび各側のオブジェクトのフラグ。ファイルをバイナリ/テキストとして扱うか、差分の各側に存在するか、オブジェクトIDが正しいことが知られているかどうかを決定します。
  • similarity: ファイルが名前変更またはコピーされたかどうかを示すために使用されます。
  • nfiles: デルタ内のファイルの数(たとえば、デルタがサブモジュールのコミットIDで実行された場合、複数のファイルが含まれることがあります)。
  • old_file: 変更前のファイルに関する情報を含む DiffFile
  • new_file: 変更後のファイルに関する情報を含む DiffFile
source
LibGit2.DiffFileType
LibGit2.DiffFile

デルタの片側の説明。git_diff_file 構造体に一致します。

フィールドは次のことを表します:

  • id: 差分内のアイテムの GitHash。この差分のこの側でアイテムが空である場合(たとえば、ファイルの削除の差分の場合)、これは GitHash(0) になります。
  • path: リポジトリの作業ディレクトリに対するアイテムの NULL 終端パス。
  • size: アイテムのサイズ(バイト単位)。
  • flags: git_diff_flag_t フラグの組み合わせ。この整数の i 番目のビットが i 番目のフラグを設定します。
  • mode: アイテムの stat モード。
  • id_abbrev: 0.25.0 以上の LibGit2 バージョンにのみ存在します。string を使用して変換したときの id フィールドの長さ。通常は OID_HEXSZ (40) に等しいです。
source
LibGit2.DiffOptionsStructType
LibGit2.DiffOptionsStruct

git_diff_options 構造体に対応しています。

フィールドは次のように表します:

  • version: 使用中の構造体のバージョン。将来的に変更される場合に備えています。現在は常に 1 です。
  • flags: どのファイルが diff に表示されるかを制御するフラグ。デフォルトは DIFF_NORMAL です。
  • ignore_submodules: サブモジュール内のファイルを考慮するかどうか。デフォルトは SUBMODULE_IGNORE_UNSPECIFIED で、これはサブモジュールの設定が diff に表示されるかどうかを制御します。
  • pathspec: diff に含めるファイルのパス。デフォルトはリポジトリ内のすべてのファイルを使用します。
  • notify_cb: ファイルのデルタが追加される際に、diff の変更をユーザーに通知するオプションのコールバック。
  • progress_cb: diff の進行状況を表示するオプションのコールバック。libgit2 のバージョンが少なくとも 0.24.0 以上の場合にのみ関連します。
  • payload: notify_cbprogress_cb に渡すペイロード。
  • context_lines: ハンクの端を定義するために使用される 変更されていない 行の数。これは、コンテキストを提供するためにハンクの前後に表示される行の数でもあります。デフォルトは 3 です。
  • interhunk_lines: 2 つの別々のハンクの間に許可される 変更されていない 行の最大数。デフォルトは 0 です。
  • id_abbrev: 出力する省略された GitHash の長さを設定します。デフォルトは 7 です。
  • max_size: blob の最大ファイルサイズ。このサイズを超えると、バイナリ blob として扱われます。デフォルトは 512 MB です。
  • old_prefix: diff の片側に古いファイルを配置するための仮想ファイルディレクトリ。デフォルトは "a" です。
  • new_prefix: diff の片側に新しいファイルを配置するための仮想ファイルディレクトリ。デフォルトは "b" です。
source
LibGit2.FetchHeadType
LibGit2.FetchHead

フェッチ中のHEADに関する情報を含み、フェッチ元のブランチの名前とURL、HEADのoid、およびフェッチされたHEADがローカルにマージされているかどうかを示します。

フィールドは次のことを表します:

  • name: フェッチヘッドのローカルリファレンスデータベース内の名前、例えば、 "refs/heads/master"
  • url: フェッチヘッドのURL。
  • oid: フェッチヘッドの先端のGitHash
  • ismerge: リモートの変更がローカルコピーにマージされているかどうかを示すブールフラグ。trueの場合、ローカルコピーはリモートフェッチヘッドと最新の状態です。
source
LibGit2.FetchOptionsType
LibGit2.FetchOptions

git_fetch_options 構造体に対応しています。

フィールドは次のことを表します:

  • version: 使用中の構造体のバージョン。将来的に変更される場合に備えています。現時点では常に 1 です。
  • callbacks: フェッチ中に使用するリモートコールバック。
  • prune: フェッチ後にプルーニングを行うかどうか。デフォルトは GitConfig からの設定を使用します。
  • update_fetchhead: フェッチ後に FetchHead を更新するかどうか。デフォルトは更新を行うことで、これは通常の git の動作です。
  • download_tags: リモートに存在するタグをダウンロードするかどうか。デフォルトは、サーバーからダウンロードされるオブジェクトのタグをリクエストすることです。
  • proxy_opts: プロキシを通じてリモートに接続するためのオプション。ProxyOptions を参照してください。libgit2 のバージョンが 0.25.0 以上の場合のみ存在します。
  • custom_headers: フェッチに必要な追加ヘッダー。libgit2 のバージョンが 0.24.0 以上の場合のみ存在します。
source
LibGit2.GitAnnotatedType
GitAnnotated(repo::GitRepo, commit_id::GitHash)
GitAnnotated(repo::GitRepo, ref::GitReference)
GitAnnotated(repo::GitRepo, fh::FetchHead)
GitAnnotated(repo::GitRepo, committish::AbstractString)

注釈付きのgitコミットは、どのように検索され、なぜそのように検索されたのかに関する情報を持っているため、リベースやマージ操作がコミットのコンテキストに関するより多くの情報を持つことができます。たとえば、競合しているマージのソース/ターゲットブランチに関する情報を含む競合ファイルがあります。注釈付きコミットは、たとえばFetchHeadが渡されたときのリモートブランチの先端や、GitReferenceを使用して説明されたブランチの先端を参照することができます。

source
LibGit2.GitBlameType
GitBlame(repo::GitRepo, path::AbstractString; options::BlameOptions=BlameOptions())

pathにあるファイルのためのGitBlameオブジェクトを構築し、repoの履歴から得られた変更情報を使用します。GitBlameオブジェクトは、誰がファイルのどの部分をいつ、どのように変更したかを記録します。optionsは、ファイルの内容をどのように分離し、どのコミットを調査するかを制御します - 詳細についてはBlameOptionsを参照してください。

source
LibGit2.GitBlobType
GitBlob(repo::GitRepo, hash::AbstractGitHash)
GitBlob(repo::GitRepo, spec::AbstractString)

hash/specで指定されたrepoからGitBlobオブジェクトを返します。

  • hashは完全な(GitHash)または部分的な(GitShortHash)ハッシュです。
  • specはテキスト仕様です:完全なリストについてはgitドキュメントを参照してください。
source
LibGit2.GitCommitType
GitCommit(repo::GitRepo, hash::AbstractGitHash)
GitCommit(repo::GitRepo, spec::AbstractString)

hash/specで指定されたrepoからGitCommitオブジェクトを返します。

  • hashはフル(GitHash)または部分(GitShortHash)のハッシュです。
  • specはテキスト仕様です:完全なリストについてはgitドキュメントを参照してください。
source
LibGit2.GitConfigType
GitConfig(path::AbstractString, level::Consts.GIT_CONFIG=Consts.CONFIG_LEVEL_APP, force::Bool=false)

pathで指定されたファイルから設定情報を読み込むことによって新しいGitConfigを作成します。levelrepo、およびforceオプションに関する詳細はaddfileを参照してください。

source
GitConfig(repo::GitRepo)

gitリポジトリrepoの保存された設定を取得します。repoに特定の設定ファイルが設定されていない場合、デフォルトのgit設定が使用されます。

source
GitConfig(level::Consts.GIT_CONFIG=Consts.CONFIG_LEVEL_DEFAULT)

グローバルおよびシステム設定ファイルを優先順位のある設定に読み込むことで、デフォルトのgit設定を取得します。これは、特定のgitリポジトリの外部でデフォルトの設定オプションにアクセスするために使用できます。

source
LibGit2.GitHashType
GitHash

gitオブジェクト識別子で、sha-1ハッシュに基づいています。これは、リポジトリ内のGitObjectを識別するために使用される20バイトの文字列(40の16進数桁)です。

source
LibGit2.GitObjectType
GitObject(repo::GitRepo, hash::AbstractGitHash)
GitObject(repo::GitRepo, spec::AbstractString)

指定されたオブジェクト(GitCommit, GitBlob, GitTree または GitTag)を、hash/specで指定されたrepoから返します。

  • hashはフル(GitHash)または部分(GitShortHash)のハッシュです。
  • specはテキスト仕様です:完全なリストについてはgitドキュメントを参照してください。
source
LibGit2.GitRemoteType
GitRemote(repo::GitRepo, rmt_name::AbstractString, rmt_url::AbstractString) -> GitRemote

リモートGitリポジトリをその名前とURLを使用して検索します。デフォルトのフェッチrefspecを使用します。

repo = LibGit2.init(repo_path)
remote = LibGit2.GitRemote(repo, "upstream", repo_url)
source
GitRemote(repo::GitRepo, rmt_name::AbstractString, rmt_url::AbstractString, fetch_spec::AbstractString) -> GitRemote

リモートのgitリポジトリを、リポジトリの名前とURL、およびリモートからの取得方法の仕様(例:どのリモートブランチを取得するか)を使用して検索します。

repo = LibGit2.init(repo_path)
refspec = "+refs/heads/mybranch:refs/remotes/origin/mybranch"
remote = LibGit2.GitRemote(repo, "upstream", repo_url, refspec)
source
LibGit2.GitRemoteAnonFunction
GitRemoteAnon(repo::GitRepo, url::AbstractString) -> GitRemote

名前ではなく、URLのみを使用してリモートgitリポジトリを検索します。

repo = LibGit2.init(repo_path)
remote = LibGit2.GitRemoteAnon(repo, repo_url)
source
LibGit2.GitRepoType
LibGit2.GitRepo(path::AbstractString)

pathにあるgitリポジトリを開きます。

source
LibGit2.GitRepoExtFunction
LibGit2.GitRepoExt(path::AbstractString, flags::Cuint = Cuint(Consts.REPOSITORY_OPEN_DEFAULT))

path にある git リポジトリを拡張コントロールで開きます(たとえば、現在のユーザーが path を読み取るために特別なアクセスグループのメンバーである必要がある場合)。

source
LibGit2.GitRevWalkerType
GitRevWalker(repo::GitRepo)

GitRevWalkerは、gitリポジトリrepoリビジョン(すなわちコミット)を歩くものです。これはリポジトリ内のコミットのコレクションであり、反復処理やLibGit2.mapおよびLibGit2.countへの呼び出しをサポートします(たとえば、LibGit2.countは、リポジトリ内のコミットのうち、特定の著者によって行われたコミットの割合を決定するために使用できます)。

cnt = LibGit2.with(LibGit2.GitRevWalker(repo)) do walker
    LibGit2.count((oid,repo)->(oid == commit_oid1), walker, oid=commit_oid1, by=LibGit2.Consts.SORT_TIME)
end

ここで、LibGit2.countは、特定のGitHashを持つコミットの数を歩きながら見つけます。GitHashはコミットに固有であるため、cnt1になります。

source
LibGit2.GitShortHashType
GitShortHash(hash::GitHash, len::Integer)

短縮されたgitオブジェクト識別子で、ユニークなgitオブジェクトを識別するために使用できます。これは、hashの最初のlenの16進数の桁で構成されており(残りの桁は無視されます)。

source
LibGit2.GitStatusType
LibGit2.GitStatus(repo::GitRepo; status_opts=StatusOptions())

gitリポジトリrepo内の各ファイルのステータスに関する情報を収集します(例えば、ファイルが変更されたか、ステージされたかなど)。status_optsを使用して、未追跡ファイルを確認するかどうかや、サブモジュールを含めるかどうかなど、さまざまなオプションを設定できます。詳細についてはStatusOptionsを参照してください。

source
LibGit2.GitTagType
GitTag(repo::GitRepo, hash::AbstractGitHash)
GitTag(repo::GitRepo, spec::AbstractString)

hash/specで指定されたrepoからGitTagオブジェクトを返します。

  • hashはフル(GitHash)または部分(GitShortHash)のハッシュです。
  • specはテキスト仕様です:完全なリストについてはgitドキュメントを参照してください。
source
LibGit2.GitTreeType
GitTree(repo::GitRepo, hash::AbstractGitHash)
GitTree(repo::GitRepo, spec::AbstractString)

hash/specで指定されたrepoからGitTreeオブジェクトを返します。

  • hashは完全な(GitHash)または部分的な(GitShortHash)ハッシュです。
  • specはテキスト仕様です:完全なリストについてはgitドキュメントを参照してください。
source
LibGit2.BlameOptionsType
LibGit2.BlameOptions

git_blame_options 構造体に対応しています。

フィールドは次のことを表します:

  • version: 使用中の構造体のバージョン。将来的に変更される場合に備えています。現時点では常に 1 です。
  • flags: Consts.BLAME_NORMAL または Consts.BLAME_FIRST_PARENT のいずれか(他のブレイムフラグは libgit2 によってまだ実装されていません)。
  • min_match_characters: コミットに関連付けられるためにコミット内で変更される必要がある 英数字 の最小文字数。デフォルトは 20 です。Consts.BLAME_*_COPIES フラグのいずれかが使用されている場合にのみ有効で、libgit2 ではまだ実装されていません。
  • newest_commit: 変更を確認するための最新のコミットの GitHash
  • oldest_commit: 変更を確認するための最古のコミットの GitHash
  • min_line: ブレイミングを開始するファイルの最初の行。デフォルトは 1 です。
  • max_line: ブレイムを行うファイルの最後の行。デフォルトは 0 で、ファイルの最後の行を意味します。
source
LibGit2.MergeOptionsType
LibGit2.MergeOptions

git_merge_options 構造体に対応しています。

フィールドは次のことを表します:

  • version: 使用中の構造体のバージョン。将来的に変更される場合に備えています。現時点では常に 1 です。

  • flags: マージ動作を説明するフラグのための enumgit_merge_flag_t で定義されています。対応するJuliaのenumは GIT_MERGE で、値は次の通りです:

    • MERGE_FIND_RENAMES: 共通の祖先と「ours」または「theirs」側の間でファイルがリネームされたかどうかを検出します。ファイルがリネームされた場合のマージを許可します。
    • MERGE_FAIL_ON_CONFLICT: コンフリクトが見つかった場合、解決を試みるのではなく、すぐに終了します。
    • MERGE_SKIP_REUC: マージの結果として得られるインデックスにREUC拡張を記述しません。
    • MERGE_NO_RECURSIVE: マージされるコミットが複数のマージベースを持つ場合、再帰的にベースをマージしようとするのではなく、最初のものを使用します。
  • rename_threshold: 2つのファイルが他方のリネームと見なされるためにどれだけ似ている必要があるか。これは整数で、類似性のパーセンテージを設定します。デフォルトは50です。

  • target_limit: リネームを探すために比較する最大ファイル数。デフォルトは200です。

  • metric: リネーム検出のために2つのファイル間の類似性を決定するために使用するオプションのカスタム関数。

  • recursion_limit: 新しい仮想マージベースを構築するために行う共通の祖先のマージの上限。デフォルトは制限なしです。このフィールドはlibgit2のバージョンが0.24.0より新しい場合のみ存在します。

  • default_driver: 両側が変更された場合に使用するマージドライバー。このフィールドはlibgit2のバージョンが0.25.0より新しい場合のみ存在します。

  • file_favor: text ドライバーのための競合するファイル内容の処理方法。

    • MERGE_FILE_FAVOR_NORMAL: マージの両側がセクションに変更を持つ場合、git checkout がマージファイルを作成するために使用するインデックスに競合のメモを作成します。これはデフォルトです。
    • MERGE_FILE_FAVOR_OURS: マージの両側がセクションに変更を持つ場合、インデックスの「ours」側のバージョンを使用します。
    • MERGE_FILE_FAVOR_THEIRS: マージの両側がセクションに変更を持つ場合、インデックスの「theirs」側のバージョンを使用します。
    • MERGE_FILE_FAVOR_UNION: マージの両側がセクションに変更を持つ場合、インデックスに入れるファイルに両側の各ユニークな行を含めます。
  • file_flags: ファイルをマージするためのガイドライン。

source
LibGit2.ProxyOptionsType
LibGit2.ProxyOptions

プロキシを通じて接続するためのオプション。

git_proxy_options 構造体に対応しています。

フィールドは次のように表します:

  • version: 使用中の構造体のバージョン。将来的に変更される場合に備えています。現時点では常に 1 です。

  • proxytype: 使用するプロキシのタイプを示す enumgit_proxy_t で定義されています。対応するJuliaのenumは GIT_PROXY で、値は次の通りです:

    • PROXY_NONE: プロキシを通じて接続を試みない。
    • PROXY_AUTO: gitの設定からプロキシの構成を自動的に判断しようとする。
    • PROXY_SPECIFIED: この構造体の url フィールドに指定されたURLを使用して接続する。

    デフォルトはプロキシタイプを自動検出することです。

  • url: プロキシのURL。

  • credential_cb: リモートが接続するために認証を必要とする場合に呼び出されるコールバック関数へのポインタ。

  • certificate_cb: 証明書の検証が失敗した場合に呼び出されるコールバック関数へのポインタ。これにより、ユーザーは接続を続けるかどうかを決定できます。関数が 1 を返すと接続が許可されます。 0 を返すと接続は許可されません。負の値を使用してエラーを返すことができます。

  • payload: 2つのコールバック関数に提供されるペイロード。

julia> fo = LibGit2.FetchOptions(
           proxy_opts = LibGit2.ProxyOptions(url = Cstring("https://my_proxy_url.com")))

julia> fetch(remote, "master", options=fo)
source
LibGit2.PushOptionsType
LibGit2.PushOptions

git_push_options 構造体に対応しています。

フィールドは次のことを表します:

  • version: 使用中の構造体のバージョン。将来的に変更される場合に備えています。現時点では常に 1 です。
  • parallelism: パックファイルを作成する必要がある場合、この変数はパックビルダーによって生成されるワーカースレッドの数を設定します。 0 の場合、パックビルダーは使用するスレッドの数を自動的に設定します。デフォルトは 1 です。
  • callbacks: プッシュのために使用するコールバック(例:リモートとの認証用)。
  • proxy_opts: LibGit2 のバージョンが 0.25.0 以上の場合にのみ関連します。リモートと通信するためにプロキシを使用するためのオプションを設定します。詳細については ProxyOptions を参照してください。
  • custom_headers: LibGit2 のバージョンが 0.24.0 以上の場合にのみ関連します。プッシュ操作に必要な追加ヘッダー。
source
LibGit2.RebaseOperationType
LibGit2.RebaseOperation

リベース中に実行される単一の命令/操作を説明します。 git_rebase_operation 構造体に一致します。

フィールドは次のことを表します:

  • optype: 現在実行中のリベース操作のタイプ。オプションは次のとおりです:

    • REBASE_OPERATION_PICK: 問題のコミットをチェリーピックします。
    • REBASE_OPERATION_REWORD: 問題のコミットをチェリーピックしますが、そのメッセージをプロンプトを使用して書き換えます。
    • REBASE_OPERATION_EDIT: 問題のコミットをチェリーピックしますが、ユーザーがコミットの内容とそのメッセージを編集できるようにします。
    • REBASE_OPERATION_SQUASH: 問題のコミットを前のコミットにスクワッシュします。2つのコミットのコミットメッセージはマージされます。
    • REBASE_OPERATION_FIXUP: 問題のコミットを前のコミットにスクワッシュします。前のコミットのコミットメッセージのみが使用されます。
    • REBASE_OPERATION_EXEC: コミットをチェリーピックしません。コマンドを実行し、コマンドが正常に終了した場合は続行します。
  • id: このリベースステップで作業中のコミットの GitHash

  • exec: REBASE_OPERATION_EXEC が使用される場合、このステップで実行するコマンド(たとえば、各コミットの後にテストスイートを実行すること)。

source
LibGit2.RebaseOptionsType
LibGit2.RebaseOptions

git_rebase_options 構造体に対応しています。

フィールドは次のことを表します:

  • version: 使用中の構造体のバージョン。将来的に変更される場合に備えています。現時点では常に 1 です。
  • quiet: リベースを手伝っている他の git クライアントに、リベースを「静かに」行うべきであることを通知します。相互運用性のために使用されます。デフォルトは 1 です。
  • inmemory: メモリ内リベースを開始します。リベースに取り組んでいる呼び出し元は、そのステップを通過し、変更をコミットできますが、HEAD を巻き戻したり、リポジトリを更新したりすることはできません。workdir は変更されません。libgit2 のバージョンが 0.24.0 以上の場合のみ存在します。
  • rewrite_notes_ref: リベースが完了したときにコミットノートを書き換えるために使用するノートの参照の名前。
  • merge_opts: 各リベースステップでツリーがどのようにマージされるかを制御するマージオプション。libgit2 のバージョンが 0.24.0 以上の場合のみ存在します。
  • checkout_opts: リベースを初期化する際、リベースを通過する際、及びリベースを中止する際にファイルを書き込むためのチェックアウトオプション。詳細については CheckoutOptions を参照してください。
source
LibGit2.SignatureStructType
LibGit2.SignatureStruct

アクション署名(例:コミッター、タグ付け者など)。git_signature 構造体に一致します。

フィールドは次のことを表します:

  • name: コミッターまたはコミットの著者のフルネーム。
  • email: コミッター/著者に連絡できるメールアドレス。
  • when: コミットがリポジトリに作成/コミットされた時を示す TimeStruct
source
LibGit2.StatusEntryType
LibGit2.StatusEntry

HEADに存在するファイルとインデックスの間の違い、およびインデックスと作業ディレクトリの間の違いを提供します。git_status_entry構造体に一致します。

フィールドは次のことを表します:

  • status: ファイルのステータスフラグを含み、現在の状態であるか、インデックスまたは作業ツリーで何らかの変更があったかを示します。
  • head_to_index: HEADに存在するファイルとインデックスの間の違いをカプセル化するDiffDeltaへのポインタ。
  • index_to_workdir: インデックスに存在するファイルとworkdirの間の違いをカプセル化するDiffDeltaへのポインタ。
source
LibGit2.StatusOptionsType
LibGit2.StatusOptions

git_status_foreach_ext() がコールバックを発行する方法を制御するオプション。 git_status_opt_t 構造体に一致します。

フィールドは次のことを表します:

  • version: 使用中の構造体のバージョン。今のところ常に 1 です。
  • show: 調べるファイルとその順序を指定するフラグ。デフォルトは Consts.STATUS_SHOW_INDEX_AND_WORKDIR です。
  • flags: ステータス呼び出しで使用されるコールバックを制御するためのフラグ。
  • pathspec: パスマッチングに使用するパスの配列。パスマッチングの動作は showflags の値によって異なります。
  • baseline: 作業ディレクトリとインデックスと比較するために使用されるツリー。デフォルトは HEAD です。
source
LibGit2.StrArrayStructType
LibGit2.StrArrayStruct

LibGit2の文字列配列の表現。git_strarray構造体に一致します。

LibGit2からデータを取得する際の典型的な使用法は次のようになります:

sa_ref = Ref(StrArrayStruct())
@check ccall(..., (Ptr{StrArrayStruct},), sa_ref)
res = convert(Vector{String}, sa_ref[])
free(sa_ref)

特に、Refオブジェクトに対してその後にLibGit2.freeを呼び出す必要があることに注意してください。

逆に、文字列のベクターをLibGit2に渡す場合、暗黙の変換に依存するのが一般的に最も簡単です:

strs = String[...]
@check ccall(..., (Ptr{StrArrayStruct},), strs)

データはJuliaによって割り当てられるため、freeを呼び出す必要はないことに注意してください。

source
LibGit2.addfileFunction
addfile(cfg::GitConfig, path::AbstractString,
        level::Consts.GIT_CONFIG=Consts.CONFIG_LEVEL_APP,
        repo::Union{GitRepo, Nothing} = nothing,
        force::Bool=false)

pathにある既存のgit設定ファイルを現在のGitConfig cfgに追加します。ファイルが存在しない場合は、作成されます。

  • levelはgit設定の優先度レベルを設定し、Consts.GIT_CONFIGによって決定されます。
  • repoは条件付きインクルードの解析を許可するオプションのリポジトリです。
  • forcefalseで、指定された優先度レベルの設定がすでに存在する場合、

addfileはエラーになります。forcetrueの場合、既存の設定はpathのファイルにあるものに置き換えられます。

source
LibGit2.add!Function
add!(repo::GitRepo, files::AbstractString...; flags::Cuint = Consts.INDEX_ADD_DEFAULT)
add!(idx::GitIndex, files::AbstractString...; flags::Cuint = Consts.INDEX_ADD_DEFAULT)

filesで指定されたパスのすべてのファイルをインデックスidx(またはrepoのインデックス)に追加します。ファイルがすでに存在する場合、インデックスエントリは更新されます。ファイルがまだ存在しない場合、新たにインデックスに追加されます。filesにはグロブパターンが含まれている可能性があり、これが展開され、一致するファイルが追加されます(INDEX_ADD_DISABLE_PATHSPEC_MATCHが設定されていない限り、以下を参照)。ファイルが無視されている場合(.gitignoreまたは設定内)、それは追加されませんただし、すでにインデックスで追跡されている場合は更新されます。キーワード引数flagsは、無視されたファイルに関する動作を制御するビットフラグのセットです:

  • Consts.INDEX_ADD_DEFAULT - 上記のデフォルト。
  • Consts.INDEX_ADD_FORCE - 既存の無視ルールを無視し、すでに無視されている場合でもファイルをインデックスに強制的に追加します。
  • Consts.INDEX_ADD_CHECK_PATHSPEC - INDEX_ADD_FORCEと同時に使用することはできません。ディスク上に存在するfiles内の各ファイルが無視リストに含まれていないことを確認します。ファイルの1つが無視されている場合、関数はEINVALIDSPECを返します。
  • Consts.INDEX_ADD_DISABLE_PATHSPEC_MATCH - グロブマッチングをオフにし、filesで指定されたパスと正確に一致するファイルのみをインデックスに追加します。
source
LibGit2.add_fetch!Function
add_fetch!(repo::GitRepo, rmt::GitRemote, fetch_spec::String)

指定された rmt のために fetch refspec を追加します。この refspec には、どのブランチをフェッチするかに関する情報が含まれます。

julia> LibGit2.add_fetch!(repo, remote, "upstream");

julia> LibGit2.fetch_refspecs(remote)
String["+refs/heads/*:refs/remotes/upstream/*"]
source
LibGit2.add_push!Function
add_push!(repo::GitRepo, rmt::GitRemote, push_spec::String)

指定された rmt のために push refspec を追加します。この refspec には、どのブランチをプッシュするかに関する情報が含まれます。

julia> LibGit2.add_push!(repo, remote, "refs/heads/master");

julia> remote = LibGit2.get(LibGit2.GitRemote, repo, branch);

julia> LibGit2.push_refspecs(remote)
String["refs/heads/master"]
Note

プッシュ refspecs を更新した後、変更を有効にし、push の呼び出しが機能するためには、対象の GitRemoteclose して再度開く必要があるかもしれません。

source
LibGit2.addblob!Function
LibGit2.addblob!(repo::GitRepo, path::AbstractString)

pathで指定されたファイルを読み込み、repoのオブジェクトデータベースにロースブロブとして追加します。結果のブロブのGitHashを返します。

hash_str = string(commit_oid)
blob_file = joinpath(repo_path, ".git", "objects", hash_str[1:2], hash_str[3:end])
id = LibGit2.addblob!(repo, blob_file)
source
LibGit2.authorFunction
author(c::GitCommit)

コミット c の著者の Signature を返します。著者は関連するファイルに変更を加えた人物です。詳細は committer を参照してください。

source
LibGit2.authorsFunction
authors(repo::GitRepo) -> Vector{Signature}

repo リポジトリへのコミットのすべての著者を返します。

repo = LibGit2.GitRepo(repo_path)
repo_file = open(joinpath(repo_path, test_file), "a")

println(repo_file, commit_msg)
flush(repo_file)
LibGit2.add!(repo, test_file)
sig = LibGit2.Signature("TEST", "TEST@TEST.COM", round(time(), 0), 0)
commit_oid1 = LibGit2.commit(repo, "commit1"; author=sig, committer=sig)
println(repo_file, randstring(10))
flush(repo_file)
LibGit2.add!(repo, test_file)
commit_oid2 = LibGit2.commit(repo, "commit2"; author=sig, committer=sig)

# [sig, sig] のベクターになります
auths = LibGit2.authors(repo)
source
LibGit2.branchFunction
branch(repo::GitRepo)

git branchと同等です。現在のHEADから新しいブランチを作成します。

source
LibGit2.branch!Function
branch!(repo::GitRepo, branch_name::AbstractString, commit::AbstractString=""; kwargs...)

repo リポジトリで新しい git ブランチをチェックアウトします。commit は新しいブランチの開始点となる文字列形式の GitHash です。commit が空文字列の場合、現在の HEAD が使用されます。

キーワード引数は次の通りです:

  • track::AbstractString="": この新しいブランチが追跡すべきリモートブランチの名前。空の場合(デフォルト)、リモートブランチは追跡されません。
  • force::Bool=false: true の場合、ブランチの作成が強制されます。
  • set_head::Bool=true: true の場合、ブランチの作成が完了した後、ブランチのヘッドが repo の HEAD に設定されます。

git checkout [-b|-B] <branch_name> [<commit>] [--track <track>] と同等です。

repo = LibGit2.GitRepo(repo_path)
LibGit2.branch!(repo, "new_branch", set_head=false)
source
LibGit2.checkout!Function
checkout!(repo::GitRepo, commit::AbstractString=""; force::Bool=true)

git checkout [-f] --detach <commit> に相当します。repo 内の git コミット commit(文字列形式の GitHash)をチェックアウトします。forcetrue の場合、チェックアウトを強制し、現在の変更を破棄します。これは現在の HEAD をデタッチすることに注意してください。

repo = LibGit2.GitRepo(repo_path)
open(joinpath(LibGit2.path(repo), "file1"), "w") do f
    write(f, "111
")
end
LibGit2.add!(repo, "file1")
commit_oid = LibGit2.commit(repo, "add file1")
open(joinpath(LibGit2.path(repo), "file1"), "w") do f
    write(f, "112
")
end
# force=true がないと失敗します
# ファイルに変更があるため
LibGit2.checkout!(repo, string(commit_oid), force=true)
source
LibGit2.cloneFunction
clone(repo_url::AbstractString, repo_path::AbstractString, clone_opts::CloneOptions)

リモートリポジトリ repo_url(リモートURLまたはローカルファイルシステム上のパスのいずれか)を repo_path(ローカルファイルシステム上のパスでなければなりません)にクローンします。ベアクローンを行うかどうかなど、クローンのオプションは CloneOptions で設定されます。

repo_url = "https://github.com/JuliaLang/Example.jl"
repo = LibGit2.clone(repo_url, "/home/me/projects/Example")
source
clone(repo_url::AbstractString, repo_path::AbstractString; kwargs...)

repo_urlにあるリモートリポジトリを、ローカルファイルシステムの場所repo_pathにクローンします。

キーワード引数は次の通りです:

  • branch::AbstractString="": リモートのどのブランチをクローンするか、デフォルトのリポジトリブランチ(通常はmaster)でない場合。
  • isbare::Bool=false: trueの場合、リモートをベアリポジトリとしてクローンし、repo_path自体がrepo_path/.gitではなくgitディレクトリになります。これにより、作業ツリーをチェックアウトすることはできません。git CLI引数--bareの役割を果たします。
  • remote_cb::Ptr{Cvoid}=C_NULL: クローンする前にリモートを作成するために使用されるコールバック。C_NULL(デフォルト)の場合、リモートを作成しようとはせず、すでに存在していると見なされます。
  • credentials::Creds=nothing: プライベートリポジトリに対して認証する際に、資格情報や設定を提供します。
  • callbacks::Callbacks=Callbacks(): ユーザー提供のコールバックとペイロード。

git clone [-b <branch>] [--bare] <repo_url> <repo_path>に相当します。

repo_url = "https://github.com/JuliaLang/Example.jl"
repo1 = LibGit2.clone(repo_url, "test_path")
repo2 = LibGit2.clone(repo_url, "test_path", isbare=true)
julia_url = "https://github.com/JuliaLang/julia"
julia_repo = LibGit2.clone(julia_url, "julia_path", branch="release-0.6")
source
LibGit2.commitFunction
commit(repo::GitRepo, msg::AbstractString; kwargs...) -> GitHash

git_commit_create のラッパー。リポジトリ repo にコミットを作成します。msg はコミットメッセージです。新しいコミットのOIDを返します。

キーワード引数は次の通りです:

  • refname::AbstractString=Consts.HEAD_FILE:NULLでない場合、新しいコミットを指すように更新するリファレンスの名前。例えば、"HEAD" は現在のブランチのHEADを更新します。リファレンスがまだ存在しない場合は、作成されます。
  • author::Signature = Signature(repo) は、コミットの著者に関する情報を含む Signature です。
  • committer::Signature = Signature(repo) は、リポジトリにコミットを行った人物に関する情報を含む Signature です。必ずしも author と同じではなく、例えば author がパッチを committer にメールで送信し、committer がそれをコミットした場合などです。
  • tree_id::GitHash = GitHash() は、コミットを作成するために使用するgitツリーで、その系譜と他の履歴との関係を示します。treerepo に属している必要があります。
  • parent_ids::Vector{GitHash}=GitHash[] は、新しいコミットの親コミットとして使用する GitHash のコミットのリストで、空であっても構いません。コミットは、例えばマージコミットの場合、複数の親を持つことがあります。
source
LibGit2.commit(rb::GitRebase, sig::GitSignature)

現在のパッチをリベース rb にコミットし、sig をコミッターとして使用します。コミットがすでに適用されている場合は静かにします。

source
LibGit2.committerFunction
committer(c::GitCommit)

コミット c のコミッターの Signature を返します。コミッターは、author によって元々作成された変更をコミットした人ですが、必ずしも author と同じである必要はありません。たとえば、author がパッチを committer にメールで送信し、committer がそれをコミットした場合などです。

source
LibGit2.countFunction
LibGit2.count(f::Function, walker::GitRevWalker; oid::GitHash=GitHash(), by::Cint=Consts.SORT_NONE, rev::Bool=false)

GitRevWalker walkerを使用して、リポジトリの履歴内のすべてのコミットを「歩く」ことで、fが適用されたときにtrueを返すコミットの数を見つけます。キーワード引数は次のとおりです。 * oid: 歩行を開始するコミットのGitHash。デフォルトはpush_head!を使用し、したがってHEADコミットとそのすべての祖先を使用します。 * by: ソート方法。デフォルトはソートしないことです。他のオプションは、トポロジーによるソート(LibGit2.Consts.SORT_TOPOLOGICAL)、時間順にソート(LibGit2.Consts.SORT_TIME、最も古いものが最初)または時間逆順にソート(LibGit2.Consts.SORT_REVERSE、最も最近のものが最初)です。 * rev: ソートされた順序を逆にするかどうか(たとえば、トポロジカルソートが使用されている場合)。

cnt = LibGit2.with(LibGit2.GitRevWalker(repo)) do walker
    LibGit2.count((oid, repo)->(oid == commit_oid1), walker, oid=commit_oid1, by=LibGit2.Consts.SORT_TIME)
end

LibGit2.countは、特定のGitHash commit_oid1を持つコミットに沿った歩行の中で、歩行をそのコミットから開始し、そこから時間の前方に移動するコミットの数を見つけます。GitHashはコミットに固有であるため、cnt1になります。

source
LibGit2.counthunksFunction
counthunks(blame::GitBlame)

ファイルに対する異なる「ハンク」の数を返します。ハンクは複数の行を含む場合があります。ハンクは通常、ソースファイルに追加された関数や、その後最適化された関数の内部ループなど、一緒に追加/変更/削除されたファイルの一部です。

source
LibGit2.create_branchFunction
LibGit2.create_branch(repo::GitRepo, bname::AbstractString, commit_obj::GitCommit; force::Bool=false)

リポジトリ repo に新しいブランチ bname を作成し、コミット commit_obj を指します(これは repo の一部である必要があります)。forcetrue の場合、既存のブランチ bname が存在する場合は上書きします。forcefalse で、すでに bname という名前のブランチが存在する場合、この関数はエラーをスローします。

source
LibGit2.credentials_callbackFunction
credential_callback(...) -> Cint

接続プロトコルに関して異なる資格情報取得機能を提供するLibGit2資格情報コールバック関数です。payload_ptrは、状態と設定を追跡するLibGit2.CredentialPayloadオブジェクトを含む必要があります。

allowed_typesには、どの認証方法を試みるべきかを指定するLibGit2.Consts.GIT_CREDTYPE値のビットマスクが含まれています。

資格情報の認証は、以下の順序で行われます(サポートされている場合):

  • SSHエージェント
  • SSH秘密鍵/公開鍵ペア
  • ユーザー名/パスワードのプレーンテキスト

ユーザーが資格情報のプロンプトを提示された場合、^D(controlキーとdキーを同時に押す)を入力することでプロンプトを中止できます。

注意: libgit2の認証手続きの特性により、認証が失敗した場合、この関数は認証が成功したかどうかの指示なしに再度呼び出されます。同じ誤った資格情報を繰り返し使用する無限ループを避けるために、ペイロードを使用して状態を追跡します。

詳細については、LibGit2のサーバーに対する認証に関するガイドを参照してください。

source
LibGit2.diff_filesFunction
diff_files(repo::GitRepo, branch1::AbstractString, branch2::AbstractString; kwarg...) -> Vector{AbstractString}

repoのgitリポジトリにおいて、branch1branch2の間で変更されたファイルを表示します。

キーワード引数は次の通りです:

  • filter::Set{Consts.DELTA_STATUS}=Set([Consts.DELTA_ADDED, Consts.DELTA_MODIFIED, Consts.DELTA_DELETED]))で、diffのオプションを設定します。デフォルトは追加、変更、削除されたファイルを表示します。

変更されたファイルの名前のみを返し、内容は返しません。

LibGit2.branch!(repo, "branch/a")
LibGit2.branch!(repo, "branch/b")
# リポジトリにファイルを追加
open(joinpath(LibGit2.path(repo),"file"),"w") do f
    write(f, "hello repo
")
end
LibGit2.add!(repo, "file")
LibGit2.commit(repo, "add file")
# returns ["file"]
filt = Set([LibGit2.Consts.DELTA_ADDED])
files = LibGit2.diff_files(repo, "branch/a", "branch/b", filter=filt)
# returns [] 既存のファイルは変更されていないため
filt = Set([LibGit2.Consts.DELTA_MODIFIED])
files = LibGit2.diff_files(repo, "branch/a", "branch/b", filter=filt)

git diff --name-only --diff-filter=<filter> <branch1> <branch2>と同等です。

source
LibGit2.entrytypeFunction
entrytype(te::GitTreeEntry)

teが参照するオブジェクトの型を返します。結果は、objtypeが返す型のいずれかになります。例えば、GitTreeGitBlobです。

source
LibGit2.fetchFunction
fetch(rmt::GitRemote, refspecs; options::FetchOptions=FetchOptions(), msg="")

指定された rmt リモート git リポジトリから取得し、refspecs を使用して取得するリモートブランチを決定します。キーワード引数は次のとおりです。

  • options: 取得のオプションを決定します。たとえば、その後にプルーニングを行うかどうかです。詳細については FetchOptions を参照してください。
  • msg: reflogs に挿入するメッセージです。
source
fetch(repo::GitRepo; kwargs...)

リポジトリ repo のアップストリームから更新を取得します。

キーワード引数は次の通りです:

  • remote::AbstractString="origin": repo から取得するリモートの名前。これが空の場合、URLを使用して匿名リモートを構築します。
  • remoteurl::AbstractString="": remote のURL。指定されていない場合、remote の名前に基づいて仮定されます。
  • refspecs=AbstractString[]: フェッチのプロパティを決定します。
  • credentials=nothing: プライベート remote に対して認証する際に、資格情報や設定を提供します。
  • callbacks=Callbacks(): ユーザー提供のコールバックとペイロード。

git fetch [<remoteurl>|<repo>] [<refspecs>] と同等です。

source
LibGit2.fetchheadsFunction
fetchheads(repo::GitRepo) -> Vector{FetchHead}

repoのすべてのフェッチヘッドのリストを返します。各フェッチヘッドはFetchHeadとして表され、その名前、URL、およびマージステータスが含まれます。

julia> fetch_heads = LibGit2.fetchheads(repo);

julia> fetch_heads[1].name
"refs/heads/master"

julia> fetch_heads[1].ismerge
true

julia> fetch_heads[2].name
"refs/heads/test_branch"

julia> fetch_heads[2].ismerge
false
source
LibGit2.fetch_refspecsFunction
fetch_refspecs(rmt::GitRemote) -> Vector{String}

指定された rmtfetch refspecs を取得します。これらの refspecs には、どのブランチをフェッチするかに関する情報が含まれています。

julia> remote = LibGit2.get(LibGit2.GitRemote, repo, "upstream");

julia> LibGit2.add_fetch!(repo, remote, "upstream");

julia> LibGit2.fetch_refspecs(remote)
String["+refs/heads/*:refs/remotes/upstream/*"]
source
LibGit2.merge_baseFunction
merge_base(repo::GitRepo, one::AbstractString, two::AbstractString) -> GitHash

コミット onetwo の間のマージベース(共通の祖先)を見つけます。onetwo はどちらも文字列形式である可能性があります。マージベースの GitHash を返します。

source
LibGit2.merge!Method
merge!(repo::GitRepo; kwargs...) -> Bool

リポジトリ repo で git マージを実行し、分岐した履歴を持つコミットを現在のブランチにマージします。マージが成功した場合は true を、そうでない場合は false を返します。

キーワード引数は次の通りです:

  • committish::AbstractString="": committish に指定されたコミットをマージします。
  • branch::AbstractString="": ブランチ branch と、そのブランチが現在のブランチから分岐して以来のすべてのコミットをマージします。
  • fastforward::Bool=false: fastforwardtrue の場合、マージがファストフォワードである場合のみマージを行います(現在のブランチのヘッドがマージされるコミットの先祖である場合)。そうでない場合はマージを拒否し、false を返します。これは git CLI オプション --ff-only に相当します。
  • merge_opts::MergeOptions=MergeOptions(): merge_opts は、競合が発生した場合のマージ戦略など、マージのオプションを指定します。
  • checkout_opts::CheckoutOptions=CheckoutOptions(): checkout_opts は、チェックアウトステップのオプションを指定します。

git merge [--ff-only] [<committish> | <branch>] に相当します。

Note

branch を指定する場合、これは参照形式で行う必要があります。文字列は GitReference に変換されるためです。たとえば、ブランチ branch_a をマージしたい場合は、merge!(repo, branch="refs/heads/branch_a") と呼び出します。

source
LibGit2.merge!Method
merge!(repo::GitRepo, anns::Vector{GitAnnotated}; kwargs...) -> Bool

注釈付きコミット(GitAnnotated オブジェクトとしてキャプチャされた) anns からリポジトリ repo の HEAD に変更をマージします。キーワード引数は次の通りです:

  • merge_opts::MergeOptions = MergeOptions(): マージを実行する方法に関するオプションで、ファストフォワードが許可されるかどうかを含みます。詳細については MergeOptions を参照してください。
  • checkout_opts::CheckoutOptions = CheckoutOptions(): チェックアウトを実行する方法に関するオプションです。詳細については CheckoutOptions を参照してください。

anns はリモートまたはローカルのブランチヘッドを指すことがあります。マージが成功した場合は true を返し、そうでない場合(例えば、ブランチに共通の祖先がないためにマージが不可能な場合)は false を返します。

upst_ann = LibGit2.GitAnnotated(repo, "branch/a")

# ブランチをマージする
LibGit2.merge!(repo, [upst_ann])
source
LibGit2.merge!Method
merge!(repo::GitRepo, anns::Vector{GitAnnotated}, fastforward::Bool; kwargs...) -> Bool

注釈付きコミット(GitAnnotated オブジェクトとしてキャプチャされた) anns からリポジトリ repo の HEAD に変更をマージします。 fastforwardtrue の場合、のみファストフォワードマージが許可されます。この場合、競合が発生した場合、マージは失敗します。それ以外の場合、fastforwardfalse の場合、マージはユーザーが解決する必要のある競合ファイルを生成する可能性があります。

キーワード引数は次のとおりです:

  • merge_opts::MergeOptions = MergeOptions(): マージを実行する方法に関するオプション、ファストフォワードが許可されているかどうかを含みます。詳細については MergeOptions を参照してください。
  • checkout_opts::CheckoutOptions = CheckoutOptions(): チェックアウトを実行する方法に関するオプション。詳細については CheckoutOptions を参照してください。

anns はリモートまたはローカルのブランチヘッドを参照することがあります。マージが成功した場合は true を返し、そうでない場合は false を返します(たとえば、ブランチに共通の祖先がないためにマージが不可能な場合など)。

upst_ann_1 = LibGit2.GitAnnotated(repo, "branch/a")

# ブランチをマージし、ファストフォワード
LibGit2.merge!(repo, [upst_ann_1], true)

# マージ競合!
upst_ann_2 = LibGit2.GitAnnotated(repo, "branch/b")
# ブランチをマージし、ファストフォワードを試みる
LibGit2.merge!(repo, [upst_ann_2], true) # false を返します
LibGit2.merge!(repo, [upst_ann_2], false) # true を返します
source
LibGit2.ffmerge!Function
ffmerge!(repo::GitRepo, ann::GitAnnotated)

現在のHEADにファストフォワードマージの変更を適用します。これは、annが指すコミットが現在のHEADから派生している場合にのみ可能です(例えば、リモートブランチからの変更をプルしている場合、ローカルブランチの先端よりも単に進んでいる場合)。

source
LibGit2.fullnameFunction
LibGit2.fullname(ref::GitReference)

シンボリックリファレンス ref が指すリファレンスの名前を返します。ref がシンボリックリファレンスでない場合は、空の文字列を返します。

source
LibGit2.featuresFunction
features()

現在のバージョンのlibgit2がサポートしているgit機能のリストを返します。例えば、スレッド処理やHTTPSまたはSSHの使用などです。

source
LibGit2.filenameFunction
filename(te::GitTreeEntry)

te が参照するディスク上のオブジェクトのファイル名を返します。

source
LibGit2.filemodeFunction
filemode(te::GitTreeEntry) -> Cint

te が参照するディスク上のオブジェクトのUNIXファイルモードを整数として返します。

source
LibGit2.gitdirFunction
LibGit2.gitdir(repo::GitRepo)

repoの「git」ファイルの場所を返します:

  • 通常のリポジトリの場合、これは.gitフォルダーの場所です。
  • ベアリポジトリの場合、これはリポジトリ自体の場所です。

workdirpathも参照してください。

source
LibGit2.git_urlFunction
LibGit2.git_url(; kwargs...) -> String

提供されたURLコンポーネントに基づいて文字列を作成します。schemeキーワードが提供されていない場合、生成されるURLは代替のscpライク構文を使用します。

キーワード

  • scheme::AbstractString="": 使用するプロトコルを識別するURLスキーム。HTTPの場合は「http」、SSHの場合は「ssh」など。schemeが提供されていない場合、出力形式は「ssh」になりますが、scpライク構文を使用します。
  • username::AbstractString="": 提供された場合に出力に使用するユーザー名。
  • password::AbstractString="": 提供された場合に出力に使用するパスワード。
  • host::AbstractString="": 出力に使用するホスト名。ホスト名は指定する必要があります。
  • port::Union{AbstractString,Integer}="": 提供された場合に出力に使用するポート番号。scpライク構文を使用する場合は指定できません。
  • path::AbstractString="": 提供された場合に出力に使用するパス。
Warning

URLにパスワードを使用することは避けてください。資格情報オブジェクトとは異なり、Juliaは使用後に機密データを安全にゼロクリアまたは破棄することができず、パスワードはメモリに残る可能性があります。未初期化のメモリによって露出される可能性があります。

julia> LibGit2.git_url(username="git", host="github.com", path="JuliaLang/julia.git")
"git@github.com:JuliaLang/julia.git"

julia> LibGit2.git_url(scheme="https", host="github.com", path="/JuliaLang/julia.git")
"https://github.com/JuliaLang/julia.git"

julia> LibGit2.git_url(scheme="ssh", username="git", host="github.com", port=2222, path="JuliaLang/julia.git")
"ssh://git@github.com:2222/JuliaLang/julia.git"
source
LibGit2.@githash_strMacro
@githash_str -> AbstractGitHash

与えられた文字列からgitハッシュオブジェクトを構築し、文字列が40の16進数桁未満であればGitShortHashを返し、それ以外の場合はGitHashを返します。

julia> LibGit2.githash"d114feb74ce633"
GitShortHash("d114feb74ce633")

julia> LibGit2.githash"d114feb74ce63307afe878a5228ad014e0289a85"
GitHash("d114feb74ce63307afe878a5228ad014e0289a85")
source
LibGit2.headFunction
LibGit2.head(repo::GitRepo) -> GitReference

repoの現在のHEADに対するGitReferenceを返します。

source
head(pkg::AbstractString) -> String

pkg リポジトリの現在の HEAD GitHash を文字列として返します。

source
LibGit2.head!Function
LibGit2.head!(repo::GitRepo, ref::GitReference) -> GitReference

repoのHEADをrefが指すオブジェクトに設定します。

source
LibGit2.head_oidFunction
LibGit2.head_oid(repo::GitRepo) -> GitHash

gitリポジトリrepoの現在のHEADのオブジェクトIDを取得します。

source
LibGit2.headnameFunction
LibGit2.headname(repo::GitRepo)

gitリポジトリrepoの現在のHEADの名前を取得します。もしrepoが現在デタッチされている場合は、デタッチされているHEADの名前を返します。

source
LibGit2.initFunction
LibGit2.init(path::AbstractString, bare::Bool=false) -> GitRepo

pathに新しいgitリポジトリをオープンします。barefalseの場合、作業ツリーはpath/.gitに作成されます。baretrueの場合、作業ディレクトリは作成されません。

source
LibGit2.is_ancestor_ofFunction
is_ancestor_of(a::AbstractString, b::AbstractString, repo::GitRepo) -> Bool

abの先祖である場合、trueを返します。aは文字列形式のGitHashであり、bも文字列形式のGitHashです。

julia> repo = GitRepo(repo_path);

julia> LibGit2.add!(repo, test_file1);

julia> commit_oid1 = LibGit2.commit(repo, "commit1");

julia> LibGit2.add!(repo, test_file2);

julia> commit_oid2 = LibGit2.commit(repo, "commit2");

julia> LibGit2.is_ancestor_of(string(commit_oid1), string(commit_oid2), repo)
true
source
LibGit2.isbinaryFunction
isbinary(blob::GitBlob) -> Bool

ファイルがバイナリかどうかを推測するためのヒューリスティックを使用します:NULLバイトを検索し、最初の8000バイトの中で印刷可能文字と非印刷可能文字の合理的な比率を探します。

source
LibGit2.iscommitFunction
iscommit(id::AbstractString, repo::GitRepo) -> Bool

コミット id(文字列形式の [GitHash](@ref))がリポジトリに存在するかどうかを確認します。

julia> repo = GitRepo(repo_path);

julia> LibGit2.add!(repo, test_file);

julia> commit_oid = LibGit2.commit(repo, "add test_file");

julia> LibGit2.iscommit(string(commit_oid), repo)
true
source
LibGit2.isdiffFunction
LibGit2.isdiff(repo::GitRepo, treeish::AbstractString, pathspecs::AbstractString=""; cached::Bool=false)

treeishで指定されたツリーと作業ツリー内の追跡ファイル(cached=falseの場合)またはインデックス(cached=trueの場合)との間に違いがあるかどうかをチェックします。pathspecsは、diffのオプションの仕様です。

repo = LibGit2.GitRepo(repo_path)
LibGit2.isdiff(repo, "HEAD") # falseであるべき
open(joinpath(repo_path, new_file), "a") do f
    println(f, "ここに私のクールな新しいファイルがあります")
end
LibGit2.isdiff(repo, "HEAD") # 今はtrue

git diff-index <treeish> [-- <pathspecs>]に相当します。

source
LibGit2.isdirtyFunction
LibGit2.isdirty(repo::GitRepo, pathspecs::AbstractString=""; cached::Bool=false) -> Bool

作業ツリー内の追跡ファイルに変更があったかどうかを確認します(cached=falseの場合)またはインデックス内(cached=trueの場合)。pathspecsはdiffのオプションの仕様です。

repo = LibGit2.GitRepo(repo_path)
LibGit2.isdirty(repo) # falseであるべき
open(joinpath(repo_path, new_file), "a") do f
    println(f, "ここに私のクールな新しいファイルがあります")
end
LibGit2.isdirty(repo) # 今はtrue
LibGit2.isdirty(repo, new_file) # 今はtrue

git diff-index HEAD [-- <pathspecs>]と同等です。

source
LibGit2.isorphanFunction
LibGit2.isorphan(repo::GitRepo)

現在のブランチが「孤立」ブランチであるかどうかを確認します。つまり、コミットがありません。このブランチへの最初のコミットには親がありません。

source
LibGit2.issetFunction
isset(val::Integer, flag::Integer)

valのビットがflagでインデックス指定されたものがセットされているか(1)またはセットされていないか(0)をテストします。

source
LibGit2.iszeroFunction
iszero(id::GitHash) -> Bool

与えられた GitHash のすべての16進数の桁がゼロであるかどうかを判断します。

source
LibGit2.lookup_branchFunction
lookup_branch(repo::GitRepo, branch_name::AbstractString, remote::Bool=false) -> Union{GitReference, Nothing}

branch_nameで指定されたブランチがリポジトリrepoに存在するかどうかを判断します。remotetrueの場合、repoはリモートgitリポジトリであると見なされます。それ以外の場合は、ローカルファイルシステムの一部です。

存在する場合は要求されたブランチへのGitReferenceを返し、存在しない場合はnothingを返します。

source
LibGit2.mapFunction
LibGit2.map(f::Function, walker::GitRevWalker; oid::GitHash=GitHash(), range::AbstractString="", by::Cint=Consts.SORT_NONE, rev::Bool=false)

GitRevWalker walkerを使用して、リポジトリの履歴内のすべてのコミットを「歩く」際に、各コミットにfを適用します。キーワード引数は次の通りです。 * oid: 歩行を開始するコミットのGitHash。デフォルトはpush_head!を使用し、したがってHEADコミットとそのすべての祖先を使用します。 * range: GitHashの範囲で、形式はoid1..oid2です。fはその2つの間のすべてのコミットに適用されます。 * by: ソート方法。デフォルトはソートしないことです。他のオプションは、トポロジーでソートすること(LibGit2.Consts.SORT_TOPOLOGICAL)、時間順にソートすること(LibGit2.Consts.SORT_TIME、最も古いものが最初)または時間逆順にソートすること(LibGit2.Consts.SORT_REVERSE、最も最近のものが最初)です。 * rev: ソートされた順序を逆にするかどうか(たとえば、トポロジカルソートが使用される場合)。

oids = LibGit2.with(LibGit2.GitRevWalker(repo)) do walker
    LibGit2.map((oid, repo)->string(oid), walker, by=LibGit2.Consts.SORT_TIME)
end

ここで、LibGit2.mapGitRevWalkerを使用して各コミットを訪れ、そのGitHashを見つけます。

source
LibGit2.mirror_callbackFunction

ミラーコールバック関数

関数は、リモートリファレンスのために +refs/*:refs/* リファレンス仕様と mirror フラグを設定します。

source
LibGit2.messageFunction
message(c::GitCommit, raw::Bool=false)

コミット c で行われた変更を説明するコミットメッセージを返します。rawfalse の場合、わずかに「クリーンアップ」されたメッセージを返します(先頭の改行が削除されます)。rawtrue の場合、メッセージはそのような改行が削除されません。

source
LibGit2.merge_analysisFunction
merge_analysis(repo::GitRepo, anns::Vector{GitAnnotated}) -> analysis, preference

注釈付きブランチの先端 anns が指すブランチで分析を実行し、それらがどのような状況でマージできるかを判断します。たとえば、anns[1] が単に ann[2] の祖先である場合、merge_analysis はファストフォワードマージが可能であると報告します。

2つの出力、analysispreference を返します。analysis にはいくつかの可能な値があります: * MERGE_ANALYSIS_NONE: anns の要素をマージすることはできません。 * MERGE_ANALYSIS_NORMAL: HEAD とユーザーがマージしたいコミットがすべて共通の祖先から分岐している通常のマージ。この場合、変更を解決する必要があり、競合が発生する可能性があります。 * MERGE_ANALYSIS_UP_TO_DATE: ユーザーがマージしたいすべての入力コミットは HEAD から到達可能であるため、マージを実行する必要はありません。 * MERGE_ANALYSIS_FASTFORWARD: 入力コミットは HEAD の子孫であるため、マージを実行する必要はありません - 代わりに、ユーザーは単に入力コミットをチェックアウトできます。 * MERGE_ANALYSIS_UNBORN: リポジトリの HEAD が存在しないコミットを指しています。マージは不可能ですが、入力コミットをチェックアウトすることは可能かもしれません。 preference にはいくつかの可能な値があります: * MERGE_PREFERENCE_NONE: ユーザーに好みはありません。 * MERGE_PREFERENCE_NO_FASTFORWARD: ファストフォワードマージを許可しません。 * MERGE_PREFERENCE_FASTFORWARD_ONLY: ファストフォワードマージのみを許可し、他のタイプ(競合を引き起こす可能性がある)を許可しません。 preference はリポジトリまたはグローバルな git 設定を通じて制御できます。

source
LibGit2.nameFunction
LibGit2.name(ref::GitReference)

refのフルネームを返します。

source
name(rmt::GitRemote)

リモートリポジトリの名前を取得します。例えば、"origin"のようになります。リモートが匿名の場合(GitRemoteAnonを参照)、名前は空の文字列""になります。

julia> repo_url = "https://github.com/JuliaLang/Example.jl";

julia> repo = LibGit2.clone(cache_repo, "test_directory");

julia> remote = LibGit2.GitRemote(repo, "origin", repo_url);

julia> name(remote)
"origin"
source
LibGit2.name(tag::GitTag)

tagの名前(例: "v0.5")。

source
LibGit2.need_updateFunction
need_update(repo::GitRepo)

git update-index と同等です。repo が更新を必要とする場合は true を返します。

source
LibGit2.objtypeFunction
objtype(obj_type::Consts.OBJECT)

列挙値に対応する型を返します。

source
LibGit2.pathFunction
LibGit2.path(repo::GitRepo)

リポジトリ repo の基本ファイルパスを返します。

  • 通常のリポジトリの場合、これは通常「.git」ディレクトリの親ディレクトリになります(注:これは作業ディレクトリとは異なる場合があります。詳細については workdir を参照してください)。
  • ベアリポジトリの場合、これは「git」ファイルの場所です。

他にも gitdirworkdir を参照してください。

source
LibGit2.peelFunction
peel([T,] ref::GitReference)

refを再帰的に剥がして、型Tのオブジェクトを取得します。Tが提供されていない場合、refGitTag以外のオブジェクトが取得されるまで剥がされます。

  • GitTagは、それが参照するオブジェクトに剥がされます。
  • GitCommitGitTreeに剥がされます。
Note

注釈付きタグのみがGitTagオブジェクトに剥がすことができます。軽量タグ(デフォルト)は、GitCommitオブジェクトを直接指すrefs/tags/の下の参照です。

source
peel([T,] obj::GitObject)

objを再帰的に剥がして、型Tのオブジェクトを取得します。Tが提供されていない場合、objは型が変わるまで剥がされます。

  • GitTagは、それが参照するオブジェクトに剥がされます。
  • GitCommitGitTreeに剥がされます。
source
LibGit2.posixpathFunction
LibGit2.posixpath(path)

パス文字列 path をPOSIXセパレーターを使用するように標準化します。

source
LibGit2.pushFunction
push(rmt::GitRemote, refspecs; force::Bool=false, options::PushOptions=PushOptions())

指定された rmt リモート git リポジトリにプッシュし、refspecs を使用してプッシュするリモートブランチを決定します。キーワード引数は次のとおりです。

  • force: true の場合、競合を無視して強制プッシュが行われます。
  • options: プッシュのオプションを決定します。たとえば、どのプロキシヘッダーを使用するかなどです。詳細については PushOptions を参照してください。
Note

プッシュの refspecs に関する情報を追加する方法は他にも2つあります。リポジトリの GitConfig でオプションを設定する(push.default をキーとして)か、add_push! を呼び出すことです。それ以外の場合、push の呼び出しで明示的にプッシュ refspec を指定する必要があります。例えば、次のようにします: LibGit2.push(repo, refspecs=["refs/heads/master"])

source
push(repo::GitRepo; kwargs...)

repoのアップストリームに更新をプッシュします。

キーワード引数は次の通りです:

  • remote::AbstractString="origin": プッシュするアップストリームリモートの名前。
  • remoteurl::AbstractString="": remoteのURL。
  • refspecs=AbstractString[]: プッシュのプロパティを決定します。
  • force::Bool=false: プッシュが強制プッシュになるかどうかを決定し、リモートブランチを上書きします。
  • credentials=nothing: プライベートremoteに対して認証する際の資格情報および/または設定を提供します。
  • callbacks=Callbacks(): ユーザー提供のコールバックとペイロード。

git push [<remoteurl>|<repo>] [<refspecs>]と同等です。

source
LibGit2.push!Method
LibGit2.push!(w::GitRevWalker, cid::GitHash)

GitRevWalker walkerをコミットcidで開始します。この関数は、特定の年以降のすべてのコミットに関数を適用するために使用でき、その年の最初のコミットをcidとして渡し、結果として得られたwLibGit2.mapに渡すことができます。

source
LibGit2.push_head!Function
LibGit2.push_head!(w::GitRevWalker)

HEAD コミットとその祖先を GitRevWalker w にプッシュします。これにより、HEAD とそのすべての祖先コミットがウォーク中に遭遇することが保証されます。

source
LibGit2.push_refspecsFunction
push_refspecs(rmt::GitRemote) -> Vector{String}

指定された rmtpush refspecs を取得します。これらの refspecs には、どのブランチをプッシュするかに関する情報が含まれています。

julia> remote = LibGit2.get(LibGit2.GitRemote, repo, "upstream");

julia> LibGit2.add_push!(repo, remote, "refs/heads/master");

julia> close(remote);

julia> remote = LibGit2.get(LibGit2.GitRemote, repo, "upstream");

julia> LibGit2.push_refspecs(remote)
String["refs/heads/master"]
source
LibGit2.rawFunction
raw(id::GitHash) -> Vector{UInt8}

GitHash の生のバイトを長さ20のベクターとして取得します。

source
LibGit2.read_tree!Function
LibGit2.read_tree!(idx::GitIndex, tree::GitTree)
LibGit2.read_tree!(idx::GitIndex, treehash::AbstractGitHash)

ツリー tree(または treehash が指すツリー)をインデックス idx に読み込みます。現在のインデックスの内容は置き換えられます。

source
LibGit2.rebase!Function
LibGit2.rebase!(repo::GitRepo, upstream::AbstractString="", newbase::AbstractString="")

現在のブランチの自動マージリベースを試みます。upstreamが提供されている場合はそれを使用し、そうでなければアップストリームトラッキングブランチから行います。newbaseはリベースするブランチです。デフォルトではこれはupstreamです。

自動的に解決できない競合が発生した場合、リベースは中止され、リポジトリと作業ツリーは元の状態のままとなり、関数はGitErrorをスローします。これはおおよそ次のコマンドラインステートメントに相当します:

git rebase --merge [<upstream>]
if [ -d ".git/rebase-merge" ]; then
    git rebase --abort
fi
source
LibGit2.ref_listFunction
LibGit2.ref_list(repo::GitRepo) -> Vector{String}

repo リポジトリ内のすべての参照名のリストを取得します。

source
LibGit2.reftypeFunction
LibGit2.reftype(ref::GitReference) -> Cint

refのタイプに対応するCintを返します:

  • 参照が無効な場合は0
  • 参照がオブジェクトIDの場合は1
  • 参照がシンボリックの場合は2
source
LibGit2.remotesFunction
LibGit2.remotes(repo::GitRepo)

repoのリモートの名前のベクトルを返します。

source
LibGit2.remove!Function
remove!(repo::GitRepo, files::AbstractString...)
remove!(idx::GitIndex, files::AbstractString...)

files で指定されたパスのすべてのファイルを、インデックス idx (または repo のインデックス) から削除します。

source
LibGit2.resetFunction
reset(val::Integer, flag::Integer)

valのビットをflagでインデックス指定してリセットし、0に戻します。

source
LibGit2.reset!Function
reset!(payload, [config]) -> CredentialPayload

payloadの状態を初期値にリセットし、資格情報コールバック内で再利用できるようにします。configが提供されている場合、設定も更新されます。

source

ターゲットコミットツリーからのpathspecsによって決定されたエントリのいくつかをインデックスに更新します。

source

指定されたコミットOIDに現在のHEADを設定し、オプションでインデックスと作業ツリーを一致させるようにリセットします。

source

git reset [<committish>] [–] <pathspecs>...

source
reset!(repo::GitRepo, id::GitHash, mode::Cint=Consts.RESET_MIXED)

リポジトリ repoid の状態にリセットし、mode で設定された3つのモードのいずれかを使用します:

  1. Consts.RESET_SOFT - HEADを id に移動します。
  2. Consts.RESET_MIXED - デフォルト、HEADを id に移動し、インデックスを id にリセットします。
  3. Consts.RESET_HARD - HEADを id に移動し、インデックスを id にリセットし、すべての作業中の変更を破棄します。

# 変更を取得
LibGit2.fetch(repo)
isfile(joinpath(repo_path, our_file)) # false になります

# 変更をファストフォワードマージ
LibGit2.merge!(repo, fastforward=true)

# ローカルにファイルがなかったため、リモートに
# ファイルがある場合、ブランチをリセットする必要があります
head_oid = LibGit2.head_oid(repo)
new_head = LibGit2.reset!(repo, head_oid, LibGit2.Consts.RESET_HARD)

この例では、フェッチ元のリモートにはインデックスに our_file というファイルが存在するため、リセットする必要があります。

git reset [--soft | --mixed | --hard] <id> と同等です。

repo = LibGit2.GitRepo(repo_path)
head_oid = LibGit2.head_oid(repo)
open(joinpath(repo_path, "file1"), "w") do f
    write(f, "111
")
end
LibGit2.add!(repo, "file1")
mode = LibGit2.Consts.RESET_HARD
# file1への変更を破棄し
# ステージから外します
new_head = LibGit2.reset!(repo, head_oid, mode)
source
LibGit2.restoreFunction
restore(s::State, repo::GitRepo)

リポジトリ repo を以前の State s に戻します。例えば、マージ試行の前のブランチの HEAD です。ssnapshot 関数を使用して生成できます。

source
LibGit2.revcountFunction
LibGit2.revcount(repo::GitRepo, commit1::AbstractString, commit2::AbstractString)

commit1commit2 の間のリビジョンの数をリストします(コミットの OID を文字列形式で)。commit1commit2 は異なるブランチにある可能性があるため、revcount は「左-右」リビジョンリスト(およびカウント)を実行し、左と右のコミットの数をそれぞれ表す Int のタプルを返します。左(または右)コミットは、コミットがツリーの対称差のどちら側から到達可能であるかを指します。

git rev-list --left-right --count <commit1> <commit2> と同等です。

repo = LibGit2.GitRepo(repo_path)
repo_file = open(joinpath(repo_path, test_file), "a")
println(repo_file, "hello world")
flush(repo_file)
LibGit2.add!(repo, test_file)
commit_oid1 = LibGit2.commit(repo, "commit 1")
println(repo_file, "hello world again")
flush(repo_file)
LibGit2.add!(repo, test_file)
commit_oid2 = LibGit2.commit(repo, "commit 2")
LibGit2.revcount(repo, string(commit_oid1), string(commit_oid2))

これは (-1, 0) を返します。

source
LibGit2.set_remote_urlFunction
set_remote_url(repo::GitRepo, remote_name, url)
set_remote_url(repo::String, remote_name, url)

remote_nameのフェッチおよびプッシュurlGitRepoまたはpathにあるgitリポジトリのために設定します。通常、gitリポジトリはリモート名として"origin"を使用します。

repo_path = joinpath(tempdir(), "Example")
repo = LibGit2.init(repo_path)
LibGit2.set_remote_url(repo, "upstream", "https://github.com/JuliaLang/Example.jl")
LibGit2.set_remote_url(repo_path, "upstream2", "https://github.com/JuliaLang/Example2.jl")
source
LibGit2.shortnameFunction
LibGit2.shortname(ref::GitReference)

refの短縮版の名前を返します。これは「人間が読みやすい」形式です。

julia> repo = GitRepo(path_to_repo);

julia> branch_ref = LibGit2.head(repo);

julia> LibGit2.name(branch_ref)
"refs/heads/master"

julia> LibGit2.shortname(branch_ref)
"master"
source
LibGit2.snapshotFunction
snapshot(repo::GitRepo) -> State

リポジトリ repo の現在の状態のスナップショットを取得し、現在の HEAD、インデックス、および未コミットの作業を保存します。出力 State は、後で restore を呼び出す際に、リポジトリをスナップショットされた状態に戻すために使用できます。

source
LibGit2.split_cfg_entryFunction
LibGit2.split_cfg_entry(ce::LibGit2.ConfigEntry) -> Tuple{String,String,String,String}

ConfigEntryを以下の部分に分割します: セクション、サブセクション、名前、値。

次のgit設定ファイルがあるとします:

[credential "https://example.com"]
    username = me

ConfigEntryは次のようになります:

julia> entry
ConfigEntry("credential.https://example.com.username", "me")

julia> LibGit2.split_cfg_entry(entry)
("credential", "https://example.com", "username", "me")

詳細については、git config syntax documentationを参照してください。

source
LibGit2.statusFunction
LibGit2.status(repo::GitRepo, path::String) -> Union{Cuint, Cvoid}

repo内のpathにあるファイルのステータスを調べます。たとえば、pathにあるファイルが変更されており、ステージングおよびコミットが必要かどうかを確認するために使用できます。

source
LibGit2.stageFunction
stage(ie::IndexEntry) -> Cint

ieのステージ番号を取得します。ステージ番号0は作業ツリーの現在の状態を表しますが、マージコンフリクトの場合には他の番号が使用されることがあります。その場合、IndexEntryのさまざまなステージ番号は、ファイルの現在の状態がどの側のコンフリクトに属するかを示します。ステージ0は試みたマージの前の状態、ステージ1はローカルで行われた変更、ステージ2以上は他のブランチからの変更に使用されます(たとえば、マルチブランチの「オクトパス」マージの場合、ステージ234が使用されることがあります)。

source
LibGit2.tag_createFunction
LibGit2.tag_create(repo::GitRepo, tag::AbstractString, commit; kwargs...)

リポジトリ repo に新しい git タグ tag(例: "v0.5")を、コミット commit に作成します。

キーワード引数は次の通りです:

  • msg::AbstractString="": タグのメッセージ。
  • force::Bool=false: true の場合、既存の参照が上書きされます。
  • sig::Signature=Signature(repo): タグ付け者の署名。
source
LibGit2.tag_deleteFunction
LibGit2.tag_delete(repo::GitRepo, tag::AbstractString)

リポジトリ repo から git タグ tag を削除します。

source
LibGit2.tag_listFunction
LibGit2.tag_list(repo::GitRepo) -> Vector{String}

リポジトリ repo にあるすべてのタグのリストを取得します。

source
LibGit2.targetFunction
LibGit2.target(tag::GitTag)

tagのターゲットオブジェクトのGitHash

source
LibGit2.toggleFunction
toggle(val::Integer, flag::Integer)

valflagでインデックスされたビットを反転させます。つまり、ビットが0の場合はトグル後に1になり、逆もまた然りです。

source
LibGit2.transactFunction
transact(f::Function, repo::GitRepo)

関数 f を git リポジトリ repo に適用し、f を適用する前に snapshot を取得します。f 内でエラーが発生した場合、reporestore を使用してスナップショット状態に戻されます。発生したエラーは再スローされますが、repo の状態は破損しません。

source
LibGit2.treewalkFunction
treewalk(f, tree::GitTree, post::Bool=false)

tree とそのサブツリー内のエントリを、ポストオーダーまたはプリオーダーでトラバースします。プリオーダーは、ルートから始まり、次に最も左のサブツリーをトラバースし(そのサブツリーの最も左のサブツリーを再帰的に下っていき)、サブツリーを右に移動します。ポストオーダーは、最も左のサブツリーの底から始まり、それを上にトラバースし、次に右のサブツリーをトラバースします(再び底から始まり)、最後にツリーのルートを訪れます。

関数パラメータ f は以下のシグネチャを持つ必要があります:

(String, GitTreeEntry) -> Cint

f から返される負の値はツリーウォークを停止します。正の値は、postfalse の場合、そのエントリがスキップされることを意味します。

source
LibGit2.upstreamFunction
upstream(ref::GitReference) -> Union{GitReference, Nothing}

refを含むブランチが指定されたアップストリームブランチを持っているかどうかを判断します。

アップストリームブランチが存在する場合はGitReferenceを返し、要求されたブランチにアップストリームの対応がない場合はnothingを返します。

source
LibGit2.update!Function
update!(repo::GitRepo, files::AbstractString...)
update!(idx::GitIndex, files::AbstractString...)

filesで指定されたパスのすべてのファイルを、インデックスidx(またはrepoのインデックス)で更新します。インデックス内の各ファイルの状態をディスク上の現在の状態と一致させ、ディスク上で削除されている場合はそれを削除し、オブジェクトデータベース内のエントリを更新します。

source
LibGit2.urlFunction
url(rmt::GitRemote)

リモートgitリポジトリのフェッチURLを取得します。

julia> repo_url = "https://github.com/JuliaLang/Example.jl";

julia> repo = LibGit2.init(mktempdir());

julia> remote = LibGit2.GitRemote(repo, "origin", repo_url);

julia> LibGit2.url(remote)
"https://github.com/JuliaLang/Example.jl"
source
LibGit2.withFunction
with(f::Function, obj)

リソース管理ヘルパー関数。fobjに適用し、fが正常に戻るかエラーをスローした後にobjcloseを呼び出すことを確認します。割り当てられたgitリソースがもはや必要なくなったときにすぐに終了されることを保証します。

source
LibGit2.with_warnFunction
with_warn(f::Function, ::Type{T}, args...)

リソース管理ヘルパー関数。argsから型Tのインスタンスを最初に構築し、fargsに適用します。fが正常に戻るかエラーをスローした後に、結果のオブジェクトに対してcloseを呼び出すことを確実にします。割り当てられたgitリソースがもはや必要でなくなったときにすぐに終了されることを保証します。fによってエラーがスローされた場合、エラーを含む警告が表示されます。

source
LibGit2.workdirFunction
LibGit2.workdir(repo::GitRepo)

repoの作業ディレクトリの場所を返します。これはベアリポジトリに対してはエラーをスローします。

Note

これは通常、gitdir(repo)の親ディレクトリになりますが、いくつかのケースでは異なる場合があります:例えば、core.worktree設定変数またはGIT_WORK_TREE環境変数のいずれかが設定されている場合です。

関連情報としては、gitdirpathがあります。

source
LibGit2.GitObjectMethod
(::Type{T})(te::GitTreeEntry) where T<:GitObject

teが指すgitオブジェクトを取得し、それを実際の型(entrytypeが示す型)として返します。例えば、GitBlobGitTagなどです。

tree = LibGit2.GitTree(repo, "HEAD^{tree}")
tree_entry = tree[1]
blob = LibGit2.GitBlob(tree_entry)
source
LibGit2.isfilledFunction
isfilled(cred::AbstractCredential) -> Bool

認証に使用するために資格情報が準備されていることを確認します。

source
LibGit2.CredentialPayloadType
LibGit2.CredentialPayload

同じURLに対する資格情報コールバックへの複数回の呼び出しの間に状態を保持します。異なるURLで使用される場合は、CredentialPayloadインスタンスはreset!されることが期待されます。

source
LibGit2.approveFunction
approve(payload::CredentialPayload; shred::Bool=true) -> Nothing

将来の認証で再利用するためにpayload資格情報を保存します。認証が成功したときのみ呼び出すべきです。

shredキーワードは、ペイロード資格情報フィールド内の機密情報を破棄するかどうかを制御します。テスト中はfalseに設定するべきです。

source
LibGit2.rejectFunction
reject(payload::CredentialPayload; shred::Bool=true) -> Nothing

将来の認証で再利用されることを防ぐために、payload 認証情報を破棄します。認証が失敗したときのみ呼び出すべきです。

shred キーワードは、ペイロード認証情報フィールド内の機密情報を破壊するかどうかを制御します。テスト中のみ false に設定するべきです。

source
LibGit2.Consts.GIT_CONFIGType

設定ファイルの優先度レベル。

これらの優先度レベルは、gitで設定エントリを検索する際の自然なエスカレーションロジック(高いものから低いものへ)に対応しています。

  • CONFIG_LEVEL_DEFAULT - 利用可能な場合は、グローバル、XDG、およびシステム設定ファイルを開きます。
  • CONFIG_LEVEL_PROGRAMDATA - ポータブルgitとの互換性のため、Windowsのシステム全体
  • CONFIG_LEVEL_SYSTEM - システム全体の設定ファイル;Linuxシステムの/etc/gitconfig
  • CONFIG_LEVEL_XDG - XDG互換の設定ファイル;通常は~/.config/git/config
  • CONFIG_LEVEL_GLOBAL - ユーザー固有の設定ファイル(グローバル設定ファイルとも呼ばれる);通常は~/.gitconfig
  • CONFIG_LEVEL_LOCAL - リポジトリ固有の設定ファイル;非ベアリポジトリの$WORK_DIR/.git/config
  • CONFIG_LEVEL_APP - アプリケーション固有の設定ファイル;アプリケーションによって自由に定義される
  • CONFIG_HIGHEST_LEVEL - 利用可能な設定ファイルの中で最も高いレベルを表します(つまり、実際に読み込まれる最も特定的な設定ファイル)
source