LibGit2
LibGit2モジュールは、libgit2へのバインディングを提供する、ポータブルCライブラリであり、Gitバージョン管理システムのコア機能を実装しています。これらのバインディングは現在、Juliaのパッケージマネージャを支えるために使用されています。このモジュールは最終的に別のパッケージに移動されることが期待されています。
Functionality
このドキュメントの一部は、libgit2 APIに関する事前の知識を前提としています。ここで参照されているいくつかのオブジェクトやメソッドに関する詳細については、上流の libgit2 API reference を参照してください。
LibGit2.Buffer — TypeLibGit2.Bufferlibgit2からデータをエクスポートするためのデータバッファ。git_buf構造体に一致します。
LibGit2からデータを取得する際の典型的な使用法は次のようになります。
buf_ref = Ref(Buffer())
@check ccall(..., (Ptr{Buffer},), buf_ref)
# buf_refに対する操作
free(buf_ref)特に、Refオブジェクトに対してその後にLibGit2.freeを呼び出す必要があることに注意してください。
LibGit2.CheckoutOptions — TypeLibGit2.CheckoutOptionsgit_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: パフォーマンスコールバックのペイロード。
LibGit2.CloneOptions — TypeLibGit2.CloneOptionsgit_clone_options 構造体に対応しています。
フィールドは次のことを表します:
version: 使用中の構造体のバージョン。将来的に変更される場合に備えています。現時点では常に1です。checkout_opts: クローンの一部としてリモートのチェックアウトを行うためのオプション。fetch_opts: クローンの一部としてリモートの事前チェックアウトフェッチを行うためのオプション。bare:0の場合、リモートリポジトリ全体をクローンします。非ゼロの場合、ベアクローンを実行し、リポジトリ内にソースファイルのローカルコピーがなく、gitdirとworkdirが同じになります。localclone: ローカルオブジェクトデータベースをクローンするか、フェッチを行うかのフラグ。デフォルトは git に決定させます。ローカルクローンには git 対応のトランスポートを使用せず、file://で始まる URL には使用します。checkout_branch: チェックアウトするブランチの名前。空の文字列の場合、リモートのデフォルトブランチがチェックアウトされます。repository_cb: クローンが作成される 新しい リポジトリを作成するために使用されるオプションのコールバック。repository_cb_payload: リポジトリコールバックのペイロード。remote_cb: クローンを作成する前にGitRemoteを作成するために使用されるオプションのコールバック。remote_cb_payload: リモートコールバックのペイロード。
LibGit2.DescribeOptions — TypeLibGit2.DescribeOptionsgit_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を表示します(デフォルトの動作)。
LibGit2.DescribeFormatOptions — TypeLibGit2.DescribeFormatOptionsgit_describe_format_options 構造体に対応しています。
フィールドは次のことを表します:
version: 使用中の構造体のバージョン。将来的に変更される場合に備えています。現在は常に1です。abbreviated_size: 使用する省略されたGitHashのサイズの下限で、デフォルトは7です。always_use_long_format: 短い形式が使用できる場合でも、文字列に長い形式を使用するために1に設定します。dirty_suffix: 設定されている場合、workdirが汚れているときに説明文字列の末尾に追加されます。
LibGit2.DiffDelta — TypeLibGit2.DiffDeltaエントリへの変更の説明。git_diff_delta 構造体に一致します。
フィールドは次のことを示します:
status:Consts.DELTA_STATUSのいずれかで、ファイルが追加/変更/削除されたかどうかを示します。flags: デルタおよび各側のオブジェクトのフラグ。ファイルをバイナリ/テキストとして扱うか、差分の各側に存在するか、オブジェクトIDが正しいことが知られているかどうかを決定します。similarity: ファイルが名前変更またはコピーされたかどうかを示すために使用されます。nfiles: デルタ内のファイルの数(たとえば、デルタがサブモジュールのコミットIDで実行された場合、複数のファイルが含まれることがあります)。old_file: 変更前のファイルに関する情報を含むDiffFile。new_file: 変更後のファイルに関する情報を含むDiffFile。
LibGit2.DiffFile — TypeLibGit2.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) に等しいです。
LibGit2.DiffOptionsStruct — TypeLibGit2.DiffOptionsStructgit_diff_options 構造体に対応しています。
フィールドは次のように表します:
version: 使用中の構造体のバージョン。将来的に変更される場合に備えています。現在は常に1です。flags: 差分に表示されるファイルを制御するフラグ。デフォルトはDIFF_NORMALです。ignore_submodules: サブモジュール内のファイルを考慮するかどうか。デフォルトはSUBMODULE_IGNORE_UNSPECIFIEDで、これはサブモジュールの設定が差分に表示されるかどうかを制御します。pathspec: 差分に含めるファイルのパス。デフォルトはリポジトリ内のすべてのファイルを使用します。notify_cb: 差分にファイルデルタが追加される際にユーザーに変更を通知するオプションのコールバック。progress_cb: 差分の進行状況を表示するオプションのコールバック。libgit2のバージョンが少なくとも0.24.0以上でのみ関連します。payload:notify_cbとprogress_cbに渡すペイロード。context_lines: ハンクの端を定義するために使用される変更されていない行の数。これは、コンテキストを提供するためにハンクの前後に表示される行の数でもあります。デフォルトは3です。interhunk_lines: 2つの別々のハンクの間に許可される変更されていない行の最大数。デフォルトは0です。id_abbrev: 出力する省略されたGitHashの長さを設定します。デフォルトは7です。max_size: blobの最大ファイルサイズ。このサイズを超えると、バイナリblobとして扱われます。デフォルトは512 MBです。old_prefix: 差分の一方に古いファイルを配置するための仮想ファイルディレクトリ。デフォルトは"a"です。new_prefix: 差分の一方に新しいファイルを配置するための仮想ファイルディレクトリ。デフォルトは"b"です。
LibGit2.FetchHead — TypeLibGit2.FetchHeadフェッチ中のHEADに関する情報を含み、フェッチ元のブランチの名前とURL、HEADのoid、およびフェッチされたHEADがローカルにマージされているかどうかを示します。
フィールドは次のことを表します:
name: フェッチヘッドのローカル参照データベース内の名前、例えば、"refs/heads/master"。url: フェッチヘッドのURL。oid: フェッチヘッドの先端のGitHash。ismerge: リモートの変更がローカルコピーにマージされているかどうかを示すブールフラグ。trueの場合、ローカルコピーはリモートフェッチヘッドと最新の状態です。
LibGit2.FetchOptions — TypeLibGit2.FetchOptionsgit_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 以上の場合のみ存在します。
LibGit2.GitAnnotated — TypeGitAnnotated(repo::GitRepo, commit_id::GitHash)
GitAnnotated(repo::GitRepo, ref::GitReference)
GitAnnotated(repo::GitRepo, fh::FetchHead)
GitAnnotated(repo::GitRepo, committish::AbstractString)注釈付きのgitコミットは、どのように検索され、なぜそのように検索されたのかに関する情報を持っているため、リベースやマージ操作はコミットのコンテキストに関するより多くの情報を持つことができます。たとえば、コンフリクトファイルには、マージで衝突しているソース/ターゲットブランチに関する情報が含まれています。注釈付きコミットは、たとえばFetchHeadが渡されたときのリモートブランチの先端や、GitReferenceを使用して記述されたブランチの先頭を参照することができます。
LibGit2.GitBlame — TypeGitBlame(repo::GitRepo, path::AbstractString; options::BlameOptions=BlameOptions())pathにあるファイルのためのGitBlameオブジェクトを構築し、repoの履歴から得られた変更情報を使用します。GitBlameオブジェクトは、誰がファイルのどの部分をいつ、どのように変更したかを記録します。optionsは、ファイルの内容をどのように分離し、どのコミットを調査するかを制御します - 詳細についてはBlameOptionsを参照してください。
LibGit2.GitBlob — TypeGitBlob(repo::GitRepo, hash::AbstractGitHash)
GitBlob(repo::GitRepo, spec::AbstractString)hash/specで指定されたrepoからGitBlobオブジェクトを返します。
hashは完全な(GitHash)または部分的な(GitShortHash)ハッシュです。specはテキスト仕様です:完全なリストについてはthe git docsを参照してください。
LibGit2.GitCommit — TypeGitCommit(repo::GitRepo, hash::AbstractGitHash)
GitCommit(repo::GitRepo, spec::AbstractString)hash/specで指定されたrepoからGitCommitオブジェクトを返します。
hashは完全な(GitHash)または部分的な(GitShortHash)ハッシュです。specはテキスト仕様です:完全なリストについてはthe git docsを参照してください。
LibGit2.GitConfig — TypeGitConfig(path::AbstractString, level::Consts.GIT_CONFIG=Consts.CONFIG_LEVEL_APP, force::Bool=false)pathにあるファイルから設定情報を読み込むことで新しいGitConfigを作成します。level、repo、およびforceオプションの詳細についてはaddfileを参照してください。
GitConfig(repo::GitRepo)gitリポジトリrepoの保存された設定を取得します。repoに特定の設定ファイルが設定されていない場合、デフォルトのgit設定が使用されます。
GitConfig(level::Consts.GIT_CONFIG=Consts.CONFIG_LEVEL_DEFAULT)グローバルおよびシステム設定ファイルを優先順位の付いた設定に読み込むことで、デフォルトのgit設定を取得します。これは、特定のgitリポジトリの外部でデフォルトの設定オプションにアクセスするために使用できます。
LibGit2.GitHash — TypeGitHashSHA-1ハッシュに基づくgitオブジェクト識別子です。これは、リポジトリ内のGitObjectを識別するために使用される20バイトの文字列(40の16進数桁)です。
LibGit2.GitObject — TypeGitObject(repo::GitRepo, hash::AbstractGitHash)
GitObject(repo::GitRepo, spec::AbstractString)指定されたオブジェクト(GitCommit, GitBlob, GitTree または GitTag)を、hash/spec で指定された repo から返します。
hashは完全な (GitHash) または部分的な (GitShortHash) ハッシュです。specはテキスト仕様です:完全なリストについては the git docs を参照してください。
LibGit2.GitRemote — TypeGitRemote(repo::GitRepo, rmt_name::AbstractString, rmt_url::AbstractString) -> GitRemoteリモートgitリポジトリをその名前とURLを使用して検索します。デフォルトのフェッチrefspecを使用します。
例
repo = LibGit2.init(repo_path)
remote = LibGit2.GitRemote(repo, "upstream", repo_url)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)LibGit2.GitRemoteAnon — FunctionGitRemoteAnon(repo::GitRepo, url::AbstractString) -> GitRemote名前ではなく、URLのみを使用してリモートgitリポジトリを検索します。
例
repo = LibGit2.init(repo_path)
remote = LibGit2.GitRemoteAnon(repo, repo_url)LibGit2.GitRepo — TypeLibGit2.GitRepo(path::AbstractString)pathにあるgitリポジトリを開きます。
LibGit2.GitRepoExt — FunctionLibGit2.GitRepoExt(path::AbstractString, flags::Cuint = Cuint(Consts.REPOSITORY_OPEN_DEFAULT))pathでgitリポジトリを開き、拡張コントロールを使用します(たとえば、現在のユーザーがpathを読み取るために特別なアクセスグループのメンバーである必要がある場合)。
LibGit2.GitRevWalker — TypeGitRevWalker(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はコミットに固有であるため、cntは1になります。
LibGit2.GitShortHash — TypeGitShortHash(hash::GitHash, len::Integer)短縮されたgitオブジェクト識別子で、ユニークな場合にgitオブジェクトを識別するために使用できます。これは、hashの最初のlenの16進数の桁で構成されており(残りの桁は無視されます)。
LibGit2.GitSignature — TypeLibGit2.GitSignatureこれはgit_signatureオブジェクトへのポインタをラップするJuliaのラッパーです。
LibGit2.GitStatus — TypeLibGit2.GitStatus(repo::GitRepo; status_opts=StatusOptions())gitリポジトリrepo内の各ファイルのステータスに関する情報を収集します(例:ファイルが変更されたか、ステージされたかなど)。status_optsを使用して、追跡されていないファイルを確認するかどうかや、サブモジュールを含めるかどうかなど、さまざまなオプションを設定できます。詳細についてはStatusOptionsを参照してください。
LibGit2.GitTag — TypeGitTag(repo::GitRepo, hash::AbstractGitHash)
GitTag(repo::GitRepo, spec::AbstractString)hash/specで指定されたrepoからGitTagオブジェクトを返します。
hashは完全な(GitHash)または部分的な(GitShortHash)ハッシュです。specはテキスト仕様です:完全なリストについてはthe git docsを参照してください。
LibGit2.GitTree — TypeGitTree(repo::GitRepo, hash::AbstractGitHash)
GitTree(repo::GitRepo, spec::AbstractString)hash/specで指定されたrepoからGitTreeオブジェクトを返します。
hashはフル(GitHash)または部分(GitShortHash)のハッシュです。specはテキスト仕様です:完全なリストについてはthe git docsを参照してください。
LibGit2.IndexEntry — TypeLibGit2.IndexEntryインデックス内のファイルエントリのメモリ内表現。git_index_entry 構造体に一致します。
LibGit2.IndexTime — TypeLibGit2.IndexTimegit_index_time 構造体に対応しています。
LibGit2.BlameOptions — TypeLibGit2.BlameOptionsgit_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で、ファイルの最後の行を意味します。
LibGit2.MergeOptions — TypeLibGit2.MergeOptionsgit_merge_options 構造体に対応しています。
フィールドは次のことを表します:
version: 使用中の構造体のバージョン。将来的に変更される場合に備えています。現時点では常に1です。flags: マージ動作を説明するフラグのためのenum。git_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: ファイルをマージするためのガイドライン。
LibGit2.ProxyOptions — TypeLibGit2.ProxyOptionsプロキシを通じて接続するためのオプション。
git_proxy_options 構造体に対応しています。
フィールドは次のことを表します:
version: 使用中の構造体のバージョン。将来的に変更される場合に備えています。現時点では常に1です。proxytype: 使用するプロキシのタイプのためのenum。git_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)LibGit2.PushOptions — TypeLibGit2.PushOptionsgit_push_options 構造体に対応しています。
フィールドは次のことを表します:
version: 使用中の構造体のバージョン。将来的に変更される場合に備えています。現時点では常に1です。parallelism: パックファイルを作成する必要がある場合、この変数はパックビルダーによって生成されるワーカースレッドの数を設定します。0の場合、パックビルダーは使用するスレッドの数を自動的に設定します。デフォルトは1です。callbacks: プッシュのために使用するコールバック(例:リモートとの認証用)。proxy_opts: LibGit2 のバージョンが0.25.0以上の場合にのみ関連します。リモートと通信するためにプロキシを使用するためのオプションを設定します。詳細についてはProxyOptionsを参照してください。custom_headers: LibGit2 のバージョンが0.24.0以上の場合にのみ関連します。プッシュ操作に必要な追加ヘッダー。remote_push_options: LibGit2 のバージョンが1.8.0以上の場合にのみ関連します。リモートに送信するための「プッシュオプション」。
LibGit2.RebaseOperation — TypeLibGit2.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が使用される場合、このステップで実行するコマンド(たとえば、各コミットの後にテストスイートを実行すること)。
LibGit2.RebaseOptions — TypeLibGit2.RebaseOptionsgit_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を参照してください。
LibGit2.RemoteCallbacks — TypeLibGit2.RemoteCallbacksコールバック設定。git_remote_callbacks 構造体に一致します。
LibGit2.SignatureStruct — TypeLibGit2.SignatureStructアクション署名(例:コミッター、タグ付け者など)。git_signature 構造体に一致します。
フィールドは次のことを表します:
name: コミッターまたはコミットの著者のフルネーム。email: コミッター/著者に連絡できるメールアドレス。when: コミットがリポジトリに作成/コミットされた時を示すTimeStruct。
LibGit2.StatusEntry — TypeLibGit2.StatusEntryHEADに存在するファイルとインデックスの間の違いを提供し、インデックスと作業ディレクトリの間の違いを提供します。git_status_entry構造体に一致します。
フィールドは次のことを表します:
LibGit2.StatusOptions — TypeLibGit2.StatusOptionsgit_status_foreach_ext() がコールバックを発行する方法を制御するオプション。 git_status_opt_t 構造体に一致します。
フィールドは次のことを表します:
version: 使用中の構造体のバージョン。今のところ、常に1です。show: 調べるファイルとその順序を指定するフラグ。デフォルトはConsts.STATUS_SHOW_INDEX_AND_WORKDIRです。flags: ステータス呼び出しで使用されるコールバックを制御するためのフラグ。pathspec: パスマッチングに使用するパスの配列。パスマッチングの動作は、showとflagsの値によって異なります。baselineは、作業ディレクトリとインデックスと比較するために使用されるツリーです。デフォルトは HEAD です。
LibGit2.StrArrayStruct — TypeLibGit2.StrArrayStructLibGit2の文字列配列の表現。git_strarray構造体に対応しています。
LibGit2からデータを取得する際の典型的な使用法は次のようになります:
sa_ref = Ref(StrArrayStruct())
@check ccall(..., (Ptr{StrArrayStruct},), sa_ref)
res = collect(sa_ref[])
free(sa_ref)特に、Refオブジェクトに対しては、その後にLibGit2.freeを呼び出す必要があることに注意してください。
逆に、LibGit2に文字列のベクターを渡す場合、暗黙の変換に依存するのが一般的に最も簡単です:
strs = String[...]
@check ccall(..., (Ptr{StrArrayStruct},), strs)データはJuliaによって割り当てられるため、freeを呼び出す必要はないことに注意してください。
LibGit2.TimeStruct — TypeLibGit2.TimeStruct署名内の時間。git_time 構造体に一致します。
LibGit2.addfile — Functionaddfile(cfg::GitConfig, path::AbstractString,
level::Consts.GIT_CONFIG=Consts.CONFIG_LEVEL_APP,
repo::Union{GitRepo, Nothing} = nothing,
force::Bool=false)既存のgit構成ファイルをpathにある場所から現在のGitConfig cfgに追加します。ファイルが存在しない場合は、作成されます。
levelはgit構成の優先度レベルを設定し、Consts.GIT_CONFIGによって決定されます。repoは条件付きインクルードの解析を許可するオプションのリポジトリです。forceがfalseで、指定された優先度レベルの構成がすでに存在する場合、
addfileはエラーになります。forceがtrueの場合、既存の構成はpathにあるファイルのものに置き換えられます。
LibGit2.add! — Functionadd!(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で指定されたパスと正確に一致するファイルのみをインデックスに追加します。
LibGit2.add_fetch! — Functionadd_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/*"]LibGit2.add_push! — Functionadd_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"]LibGit2.addblob! — FunctionLibGit2.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)LibGit2.author — Functionauthor(c::GitCommit)コミット c の著者の Signature を返します。著者は関連するファイルに変更を加えた人物です。committer も参照してください。
LibGit2.authors — Functionauthors(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)LibGit2.branch — Functionbranch(repo::GitRepo)git branchと同等です。現在のHEADから新しいブランチを作成します。
LibGit2.branch! — Functionbranch!(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)LibGit2.checkout! — Functioncheckout!(repo::GitRepo, commit::AbstractString=""; force::Bool=true)git checkout [-f] --detach <commit> と同等です。repo で git コミット commit(文字列形式の [GitHash](@ref))をチェックアウトします。force が true の場合、チェックアウトを強制し、現在の変更を破棄します。これは現在の 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)LibGit2.clone — Functionclone(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")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")LibGit2.commit — Functioncommit(repo::GitRepo, msg::AbstractString; kwargs...) -> GitHashgit_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ツリーで、その系譜と他の履歴との関係を示します。treeはrepoに属している必要があります。parent_ids::Vector{GitHash}=GitHash[]は、新しいコミットの親コミットとして使用するGitHashのコミットのリストで、空であっても構いません。コミットは、例えばマージコミットの場合、複数の親を持つことがあります。
LibGit2.commit(rb::GitRebase, sig::GitSignature)現在のパッチをリベース rb にコミットし、sig をコミッターとして使用します。コミットがすでに適用されている場合は静かです。
LibGit2.committer — Functioncommitter(c::GitCommit)コミット c のコミッターの Signature を返します。コミッターは、元々 author によって作成された変更をコミットした人ですが、author と同じである必要はありません。たとえば、author がパッチを committer にメールで送信し、committer がそれをコミットした場合などです。
LibGit2.count — FunctionLibGit2.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)
endLibGit2.countは、特定のGitHash commit_oid1を持つコミットに沿った歩行の中でコミットの数を見つけ、そのコミットから歩行を開始し、そこから時間順に進みます。GitHashはコミットに固有であるため、cntは1になります。
LibGit2.counthunks — Functioncounthunks(blame::GitBlame)ファイルに対する異なる「ハンク」の数を返します。ハンクは複数の行を含む場合があります。ハンクは通常、ソースファイルに追加された関数や、その後最適化された関数の内部ループなど、一緒に追加/変更/削除されたファイルの一部です。
LibGit2.create_branch — FunctionLibGit2.create_branch(repo::GitRepo, bname::AbstractString, commit_obj::GitCommit; force::Bool=false)リポジトリ repo に新しいブランチ bname を作成し、コミット commit_obj を指します(commit_obj は repo の一部である必要があります)。force が true の場合、既存のブランチ bname が存在する場合は上書きします。force が false で、すでに bname という名前のブランチが存在する場合、この関数はエラーをスローします。
LibGit2.credentials_callback — Functioncredential_callback(...) -> Cint接続プロトコルに関して異なる資格情報取得機能を提供するLibGit2資格情報コールバック関数です。payload_ptrは、状態と設定を追跡するLibGit2.CredentialPayloadオブジェクトを含む必要があります。
allowed_typesは、どの認証方法を試みるべきかを指定するLibGit2.Consts.GIT_CREDTYPE値のビットマスクを含みます。
資格情報の認証は、以下の順序で行われます(サポートされている場合):
- SSHエージェント
- SSH秘密鍵/公開鍵ペア
- ユーザー名/パスワードのプレーンテキスト
ユーザーが資格情報プロンプトを提示された場合、^D(controlキーとdキーを同時に押す)を入力することでプロンプトを中止できます。
注意: libgit2の認証手続きの特性により、認証が失敗した場合、この関数は認証が成功したかどうかの指示なしに再度呼び出されます。同じ誤った資格情報を繰り返し使用する無限ループを避けるために、ペイロードを使用して状態を追跡します。
詳細については、LibGit2ガイドのサーバーに対する認証を参照してください。
LibGit2.credentials_cb — FunctionC関数ポインタ credentials_callback
LibGit2.default_signature — Function署名オブジェクトを返します。使用後は解放してください。
LibGit2.delete_branch — FunctionLibGit2.delete_branch(branch::GitReference)branchが指すブランチを削除します。
LibGit2.diff_files — Functiondiff_files(repo::GitRepo, branch1::AbstractString, branch2::AbstractString; kwarg...) -> Vector{AbstractString}gitリポジトリrepoにおいて、ブランチbranch1とbranch2の間で変更されたファイルを表示します。
キーワード引数は次の通りです:
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")
# repoにファイルを追加
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>と同等です。
LibGit2.entryid — Functionentryid(te::GitTreeEntry)teが参照するオブジェクトのGitHashを返します。
LibGit2.entrytype — Functionentrytype(te::GitTreeEntry)teが参照するオブジェクトの型を返します。結果は、objtypeが返す型のいずれかになります。例えば、GitTreeやGitBlobです。
LibGit2.fetch — Functionfetch(rmt::GitRemote, refspecs; options::FetchOptions=FetchOptions(), msg="")指定された rmt リモート git リポジトリから取得し、refspecs を使用して取得するリモートブランチを決定します。キーワード引数は次のとおりです。
options: 取得のオプションを決定します。たとえば、その後にプルーニングを行うかどうかです。詳細についてはFetchOptionsを参照してください。msg: リフログに挿入するメッセージです。
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>] と同等です。
LibGit2.fetchheads — Functionfetchheads(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
falseLibGit2.fetch_refspecs — Functionfetch_refspecs(rmt::GitRemote) -> Vector{String}指定された rmt の fetch 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/*"]LibGit2.fetchhead_foreach_cb — FunctionC関数ポインタ fetchhead_foreach_callback
LibGit2.merge_base — Functionmerge_base(repo::GitRepo, one::AbstractString, two::AbstractString) -> GitHashコミット one と two の間のマージベース(共通の祖先)を見つけます。one と two はどちらも文字列形式である可能性があります。マージベースの GitHash を返します。
LibGit2.merge! — Methodmerge!(repo::GitRepo; kwargs...) -> Boolリポジトリ repo で git マージを実行し、分岐した履歴を持つコミットを現在のブランチにマージします。マージが成功した場合は true を返し、そうでない場合は false を返します。
キーワード引数は次の通りです:
committish::AbstractString="":committishに指定されたコミットをマージします。branch::AbstractString="":branchブランチと、そのブランチが現在のブランチから分岐して以来のすべてのコミットをマージします。fastforward::Bool=false:fastforwardがtrueの場合、マージがファストフォワードである場合のみマージを行います(現在のブランチのヘッドがマージされるコミットの祖先である場合)。そうでない場合はマージを拒否し、falseを返します。これは git CLI オプション--ff-onlyと同等です。merge_opts::MergeOptions=MergeOptions():merge_optsは、競合が発生した場合のマージ戦略など、マージのオプションを指定します。checkout_opts::CheckoutOptions=CheckoutOptions():checkout_optsは、チェックアウトステップのオプションを指定します。
git merge [--ff-only] [<committish> | <branch>] と同等です。
LibGit2.merge! — Methodmerge!(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])LibGit2.merge! — Methodmerge!(repo::GitRepo, anns::Vector{GitAnnotated}, fastforward::Bool; kwargs...) -> Bool注釈付きコミット(GitAnnotated オブジェクトとしてキャプチャされた)anns からリポジトリ repo の HEAD に変更をマージします。fastforward が true の場合、のみ ファストフォワードマージが許可されます。この場合、競合が発生した場合、マージは失敗します。それ以外の場合、fastforward が false の場合、マージはユーザーが解決する必要のある競合ファイルを生成する可能性があります。
キーワード引数は次のとおりです:
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 を返しますLibGit2.ffmerge! — Functionffmerge!(repo::GitRepo, ann::GitAnnotated)現在のHEADに変更をファストフォワードマージします。これは、annが指すコミットが現在のHEADから派生している場合にのみ可能です(例えば、リモートブランチからの変更をプルしている場合、ローカルブランチの先端よりも単に進んでいる場合)。
LibGit2.fullname — FunctionLibGit2.fullname(ref::GitReference)シンボリックリファレンス ref が指すリファレンスの名前を返します。ref がシンボリックリファレンスでない場合は、空の文字列を返します。
LibGit2.features — Functionfeatures()現在のバージョンのlibgit2がサポートしているgit機能のリストを返します。例えば、スレッド処理やHTTPSまたはSSHの使用などです。
LibGit2.filename — Functionfilename(te::GitTreeEntry)te が参照するディスク上のオブジェクトのファイル名を返します。
LibGit2.filemode — Functionfilemode(te::GitTreeEntry) -> Cintteが参照するディスク上のオブジェクトのUNIXファイルモードを整数として返します。
LibGit2.gitdir — FunctionLibGit2.gitdir(repo::GitRepo)repoの「git」ファイルの場所を返します:
- 通常のリポジトリの場合、これは
.gitフォルダーの場所です。 - ベアリポジトリの場合、これはリポジトリ自体の場所です。
LibGit2.git_url — FunctionLibGit2.git_url(; kwargs...) -> String提供されたURLコンポーネントに基づいて文字列を作成します。schemeキーワードが提供されていない場合、生成されるURLは代替のscp-like syntaxを使用します。
キーワード
scheme::AbstractString="": 使用するプロトコルを識別するURLスキーム。HTTPの場合は"http"、SSHの場合は"ssh"など。schemeが提供されていない場合、出力形式は"ssh"になりますが、scp-like syntaxを使用します。username::AbstractString="": 提供された場合に出力に使用するユーザー名。password::AbstractString="": 提供された場合に出力に使用するパスワード。host::AbstractString="": 出力に使用するホスト名。ホスト名は指定する必要があります。port::Union{AbstractString,Integer}="": 提供された場合に出力に使用するポート番号。scp-like syntaxを使用する場合は指定できません。path::AbstractString="": 提供された場合に出力に使用するパス。
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"LibGit2.@githash_str — Macro@githash_str -> AbstractGitHash与えられた文字列から git ハッシュオブジェクトを構築し、文字列が 40 進数の桁数より短い場合は GitShortHash を、そうでない場合は GitHash を返します。
例
julia> LibGit2.githash"d114feb74ce633"
GitShortHash("d114feb74ce633")
julia> LibGit2.githash"d114feb74ce63307afe878a5228ad014e0289a85"
GitHash("d114feb74ce63307afe878a5228ad014e0289a85")LibGit2.head — FunctionLibGit2.head(repo::GitRepo) -> GitReferencerepoの現在のHEADへのGitReferenceを返します。
head(pkg::AbstractString) -> Stringpkg リポジトリの現在の HEAD GitHash を文字列として返します。
LibGit2.head! — FunctionLibGit2.head!(repo::GitRepo, ref::GitReference) -> GitReferencerepoのHEADをrefが指すオブジェクトに設定します。
LibGit2.head_oid — FunctionLibGit2.head_oid(repo::GitRepo) -> GitHashgitリポジトリrepoの現在のHEADのオブジェクトIDを取得します。
LibGit2.headname — FunctionLibGit2.headname(repo::GitRepo)gitリポジトリrepoの現在のHEADの名前を取得します。repoが現在デタッチされている場合は、デタッチされているHEADの名前を返します。
LibGit2.init — FunctionLibGit2.init(path::AbstractString, bare::Bool=false) -> GitRepopathに新しいgitリポジトリを開きます。bareがfalseの場合、作業ツリーはpath/.gitに作成されます。bareがtrueの場合、作業ディレクトリは作成されません。
LibGit2.is_ancestor_of — Functionis_ancestor_of(a::AbstractString, b::AbstractString, repo::GitRepo) -> Boolaがbの先祖である場合、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)
trueLibGit2.isbinary — Functionisbinary(blob::GitBlob) -> Boolファイルがバイナリかどうかを推測するためのヒューリスティックを使用します:NULLバイトを検索し、最初の8000バイトの中で印刷可能な文字と印刷不可能な文字の合理的な比率を探します。
LibGit2.iscommit — Functioniscommit(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)
trueLibGit2.isdiff — FunctionLibGit2.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") # 今はtruegit diff-index <treeish> [-- <pathspecs>]に相当します。
LibGit2.isdirty — FunctionLibGit2.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) # 今はtruegit diff-index HEAD [-- <pathspecs>]と同等です。
LibGit2.isorphan — FunctionLibGit2.isorphan(repo::GitRepo)現在のブランチが「孤立」ブランチであるかどうかを確認します。つまり、コミットがありません。このブランチへの最初のコミットには親がありません。
LibGit2.isset — Functionisset(val::Integer, flag::Integer)valのビットがflagでインデックス指定されたものがセットされているか(1)またはセットされていないか(0)をテストします。
LibGit2.iszero — Functioniszero(id::GitHash) -> Bool与えられた GitHash のすべての16進数の桁がゼロであるかどうかを判断します。
LibGit2.lookup_branch — Functionlookup_branch(repo::GitRepo, branch_name::AbstractString, remote::Bool=false) -> Union{GitReference, Nothing}branch_name で指定されたブランチがリポジトリ repo に存在するかどうかを判断します。remote が true の場合、repo はリモート git リポジトリであると見なされます。それ以外の場合は、ローカルファイルシステムの一部です。
存在する場合は要求されたブランチへの GitReference を返し、存在しない場合は nothing を返します。
LibGit2.map — FunctionLibGit2.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.mapはGitRevWalkerを使用して各コミットを訪問し、そのGitHashを見つけます。
LibGit2.mirror_callback — Functionミラーコールバック関数
関数は、リモートリファレンスのために +refs/*:refs/* リファレンス仕様と mirror フラグを設定します。
LibGit2.mirror_cb — FunctionC関数ポインタ mirror_callback
LibGit2.message — Functionmessage(c::GitCommit, raw::Bool=false)コミット c で行われた変更を説明するコミットメッセージを返します。raw が false の場合、わずかに「クリーンアップ」されたメッセージ(先頭の改行が削除されたもの)を返します。raw が true の場合、メッセージはそのような改行が削除されません。
LibGit2.merge_analysis — Functionmerge_analysis(repo::GitRepo, anns::Vector{GitAnnotated}) -> analysis, preference注釈付きブランチの先端 anns が指すブランチで分析を実行し、それらがどのような状況でマージできるかを判断します。たとえば、anns[1] が単に anns[2] の祖先である場合、merge_analysis はファストフォワードマージが可能であると報告します。
2つの出力、analysis と preference を返します。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 設定を通じて制御できます。
LibGit2.name — FunctionLibGit2.name(ref::GitReference)refのフルネームを返します。
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"LibGit2.name(tag::GitTag)tagの名前(例:"v0.5")。
LibGit2.need_update — Functionneed_update(repo::GitRepo)git update-index と同等です。repo が更新を必要とする場合は true を返します。
LibGit2.objtype — Functionobjtype(obj_type::Consts.OBJECT)列挙値に対応する型を返します。
LibGit2.path — FunctionLibGit2.path(repo::GitRepo)リポジトリ repo の基本ファイルパスを返します。
- 通常のリポジトリの場合、これは通常「.git」ディレクトリの親ディレクトリになります(注:これは作業ディレクトリとは異なる場合があります。詳細については
workdirを参照してください)。 - ベアリポジトリの場合、これは「git」ファイルの場所です。
LibGit2.peel — Functionpeel([T,] ref::GitReference)refを再帰的に剥がして、型Tのオブジェクトを取得します。Tが提供されていない場合、refはGitTag以外のオブジェクトが取得されるまで剥がされます。
peel([T,] obj::GitObject)objを再帰的に剥がして、型Tのオブジェクトを取得します。Tが提供されていない場合、objは型が変わるまで剥がされます。
GitTagは、それが参照するオブジェクトに剥がされます。GitCommitはGitTreeに剥がされます。
LibGit2.posixpath — FunctionLibGit2.posixpath(path)パス文字列 path をPOSIXセパレーターを使用するように標準化します。
LibGit2.push — Functionpush(rmt::GitRemote, refspecs; force::Bool=false, options::PushOptions=PushOptions())指定された rmt リモート git リポジトリにプッシュし、refspecs を使用してプッシュするリモートブランチを決定します。キーワード引数は次のとおりです:
force:trueの場合、競合を無視して強制プッシュが行われます。options: プッシュのオプションを決定します。たとえば、どのプロキシヘッダーを使用するかなどです。詳細についてはPushOptionsを参照してください。
プッシュ refspecs に関する情報を追加する方法は他に2つあります:リポジトリの GitConfig でオプションを設定する(キーとして push.default を使用)か、add_push! を呼び出すことです。それ以外の場合、push の呼び出しで明示的にプッシュ refspec を指定する必要があります。例えば、次のようにします:LibGit2.push(repo, refspecs=["refs/heads/master"])。
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>]に相当します。
LibGit2.push! — MethodLibGit2.push!(w::GitRevWalker, cid::GitHash)GitRevWalker walkerをコミットcidで開始します。この関数は、特定の年以降のすべてのコミットに関数を適用するために使用でき、その年の最初のコミットをcidとして渡し、結果として得られたwをLibGit2.mapに渡すことができます。
LibGit2.push_head! — FunctionLibGit2.push_head!(w::GitRevWalker)HEAD コミットとその祖先を GitRevWalker w にプッシュします。これにより、HEAD とそのすべての祖先コミットがウォーク中に遭遇することが保証されます。
LibGit2.push_refspecs — Functionpush_refspecs(rmt::GitRemote) -> Vector{String}指定された rmt の push 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"]LibGit2.raw — Functionraw(id::GitHash) -> Vector{UInt8}GitHash の生のバイトを長さ 20 のベクターとして取得します。
LibGit2.read_tree! — FunctionLibGit2.read_tree!(idx::GitIndex, tree::GitTree)
LibGit2.read_tree!(idx::GitIndex, treehash::AbstractGitHash)インデックス idx にツリー tree (または idx が所有するリポジトリ内の treehash が指すツリー)を読み込みます。現在のインデックスの内容は置き換えられます。
LibGit2.rebase! — FunctionLibGit2.rebase!(repo::GitRepo, upstream::AbstractString="", newbase::AbstractString="")現在のブランチの自動マージリベースを試みます。upstreamが提供されている場合はそれを使用し、そうでなければアップストリームトラッキングブランチから行います。newbaseはリベースするブランチです。デフォルトでは、これはupstreamです。
自動的に解決できない競合が発生した場合、リベースは中止され、リポジトリと作業ツリーは元の状態のままとなり、関数はGitErrorをスローします。これはおおよそ次のコマンドラインステートメントに相当します:
git rebase --merge [<upstream>]
if [ -d ".git/rebase-merge" ]; then
git rebase --abort
fiLibGit2.ref_list — FunctionLibGit2.ref_list(repo::GitRepo) -> Vector{String}repo リポジトリ内のすべての参照名のリストを取得します。
LibGit2.reftype — FunctionLibGit2.reftype(ref::GitReference) -> Cintrefのタイプに対応するCintを返します:
- 参照が無効な場合は
0 - 参照がオブジェクトIDの場合は
1 - 参照がシンボリックの場合は
2
LibGit2.remotes — FunctionLibGit2.remotes(repo::GitRepo)repoのリモートの名前のベクターを返します。
LibGit2.remove! — Functionremove!(repo::GitRepo, files::AbstractString...)
remove!(idx::GitIndex, files::AbstractString...)filesで指定されたパスのすべてのファイルを、インデックスidx(またはrepoのインデックス)から削除します。
LibGit2.reset — Functionreset(val::Integer, flag::Integer)valによってインデックス指定されたflagのビットを解除し、それらを0に戻します。
LibGit2.reset! — Functionreset!(payload, [config]) -> CredentialPayloadpayloadの状態を初期値にリセットして、資格情報コールバック内で再度使用できるようにします。configが提供されている場合、設定も更新されます。
ターゲットコミットツリーからのpathspecsによって決定されたエントリのいくつかをインデックスに更新します。
指定されたコミットOIDに現在のHEADを設定し、オプションでインデックスと作業ツリーを一致させるようにリセットします。
git reset [<committish>] [–] <pathspecs>...
reset!(repo::GitRepo, id::GitHash, mode::Cint=Consts.RESET_MIXED)リポジトリ repo を id の状態にリセットし、mode で設定された3つのモードのいずれかを使用します:
Consts.RESET_SOFT- HEADをidに移動します。Consts.RESET_MIXED- デフォルト、HEADをidに移動し、インデックスをidにリセットします。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)LibGit2.restore — Functionrestore(s::State, repo::GitRepo)リポジトリ repo を以前の State s に戻します。例えば、マージ試行の前のブランチの HEAD です。s は snapshot 関数を使用して生成できます。
LibGit2.revcount — FunctionLibGit2.revcount(repo::GitRepo, commit1::AbstractString, commit2::AbstractString)commit1 と commit2 の間のリビジョンの数をリストします(コミットの OID を文字列形式で)。commit1 と commit2 が異なるブランチにある可能性があるため、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) を返します。
LibGit2.set_remote_url — Functionset_remote_url(repo::GitRepo, remote_name, url)
set_remote_url(repo::String, remote_name, url)remote_nameのフェッチおよびプッシュurlをGitRepoまたは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")LibGit2.shortname — FunctionLibGit2.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"LibGit2.snapshot — Functionsnapshot(repo::GitRepo) -> Stateリポジトリ repo の現在の状態のスナップショットを取得し、現在の HEAD、インデックス、および未コミットの作業を保存します。出力 State は、後で restore を呼び出す際に、リポジトリをスナップショットされた状態に戻すために使用できます。
LibGit2.split_cfg_entry — FunctionLibGit2.split_cfg_entry(ce::LibGit2.ConfigEntry) -> Tuple{String,String,String,String}ConfigEntryを以下の部分に分割します: セクション、サブセクション、名前、値。
例
次のgit設定ファイルがあるとします:
[credential "https://example.com"]
username = meConfigEntryは次のようになります:
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を参照してください。
LibGit2.status — FunctionLibGit2.status(repo::GitRepo, path::String) -> Union{Cuint, Cvoid}repo内のpathにあるファイルのステータスを調べます。たとえば、pathにあるファイルが変更されており、ステージングおよびコミットが必要かどうかを確認するために使用できます。
LibGit2.stage — Functionstage(ie::IndexEntry) -> Cintieのステージ番号を取得します。ステージ番号0は作業ツリーの現在の状態を表しますが、マージコンフリクトの場合には他の番号が使用されることがあります。この場合、IndexEntryのさまざまなステージ番号は、ファイルの現在の状態がどの側のコンフリクトに属するかを示します。ステージ0は試みられたマージの前の状態、ステージ1はローカルで行われた変更、ステージ2以上は他のブランチからの変更に使用されます(たとえば、マルチブランチの「オクトパス」マージの場合、ステージ2、3、4が使用されることがあります)。
LibGit2.tag_create — FunctionLibGit2.tag_create(repo::GitRepo, tag::AbstractString, commit; kwargs...)リポジトリ repo に新しい git タグ tag(例: "v0.5")を、コミット commit に作成します。
キーワード引数は次の通りです:
msg::AbstractString="": タグのメッセージ。force::Bool=false:trueの場合、既存の参照が上書きされます。sig::Signature=Signature(repo): タグ付け者の署名。
LibGit2.tag_delete — FunctionLibGit2.tag_delete(repo::GitRepo, tag::AbstractString)リポジトリ repo から git タグ tag を削除します。
LibGit2.tag_list — FunctionLibGit2.tag_list(repo::GitRepo) -> Vector{String}gitリポジトリrepo内のすべてのタグのリストを取得します。
LibGit2.target — FunctionLibGit2.target(tag::GitTag)tagのターゲットオブジェクトのGitHash。
LibGit2.toggle — Functiontoggle(val::Integer, flag::Integer)valのビットをflagでインデックス指定して反転させます。つまり、ビットが0の場合はトグル後に1になり、逆もまた然りです。
LibGit2.transact — Functiontransact(f::Function, repo::GitRepo)関数 f を git リポジトリ repo に適用し、f を適用する前に snapshot を取得します。f 内でエラーが発生した場合、repo は restore を使用してスナップショット状態に戻されます。発生したエラーは再スローされますが、repo の状態は破損しません。
LibGit2.treewalk — Functiontreewalk(f, tree::GitTree, post::Bool=false)tree とそのサブツリー内のエントリを、ポストオーダーまたはプリオーダーでトラバースします。プリオーダーは、ルートから始まり、次に最も左のサブツリーをトラバースし(そのサブツリーの最も左のサブツリーを再帰的に下っていき)、サブツリーを右に移動します。ポストオーダーは、最も左のサブツリーの底から始まり、それを上にトラバースし、次に右のサブツリーをトラバースします(再び底から始まり)、最後にツリーのルートを訪れます。
関数パラメータ f は以下のシグネチャを持つ必要があります:
(String, GitTreeEntry) -> Cintf から返される負の値はツリーウォークを停止します。正の値は、post が false の場合、そのエントリがスキップされることを意味します。
LibGit2.upstream — Functionupstream(ref::GitReference) -> Union{GitReference, Nothing}refを含むブランチが指定されたアップストリームブランチを持っているかどうかを判断します。
アップストリームブランチが存在する場合はそのGitReferenceを返し、要求されたブランチにアップストリームの対応がない場合はnothingを返します。
LibGit2.update! — Functionupdate!(repo::GitRepo, files::AbstractString...)
update!(idx::GitIndex, files::AbstractString...)files で指定されたパスのすべてのファイルをインデックス idx (または repo のインデックス) で更新します。インデックス内の各ファイルの状態をディスク上の現在の状態と一致させ、ディスク上で削除されている場合はそれを削除し、オブジェクトデータベース内のエントリを更新します。
LibGit2.url — Functionurl(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"LibGit2.version — Functionversion() -> VersionNumber使用中のlibgit2のバージョンをVersionNumberとして返します。
LibGit2.with — Functionwith(f::Function, obj)リソース管理ヘルパー関数。fをobjに適用し、fが正常に戻るかエラーをスローした後にobjのcloseを呼び出すことを保証します。割り当てられたgitリソースがもはや必要なくなったときにすぐに終了されることを保証します。
LibGit2.with_warn — Functionwith_warn(f::Function, ::Type{T}, args...)リソース管理ヘルパー関数。argsから型Tのインスタンスを最初に構築し、fをargsに適用します。fが正常に戻るかエラーをスローした後に、結果のオブジェクトに対してcloseを呼び出すことを確実にします。割り当てられたgitリソースがもはや必要なくなったときにすぐに最終化されることを保証します。fによってエラーがスローされた場合、エラーを含む警告が表示されます。
LibGit2.workdir — FunctionLibGit2.workdir(repo::GitRepo)repoの作業ディレクトリの場所を返します。これはベアリポジトリに対してはエラーをスローします。
LibGit2.GitObject — Method(::Type{T})(te::GitTreeEntry) where T<:GitObjectteが指すgitオブジェクトを取得し、それを実際の型(entrytypeが示す型)として返します。例えば、GitBlobやGitTagなどです。
例
tree = LibGit2.GitTree(repo, "HEAD^{tree}")
tree_entry = tree[1]
blob = LibGit2.GitBlob(tree_entry)LibGit2.UserPasswordCredential — Typeuserとpasswordパラメータのみをサポートする資格情報
LibGit2.SSHCredential — TypeSSH認証タイプ
LibGit2.isfilled — Functionisfilled(cred::AbstractCredential) -> Bool認証に使用するために資格情報が準備されていることを確認します。
LibGit2.CachedCredentials — Type資格情報を再利用するためにキャッシュします。
LibGit2.CredentialPayload — TypeLibGit2.CredentialPayload同じURLに対する資格情報コールバックへの複数回の呼び出しの間に状態を保持します。異なるURLで使用される場合は、CredentialPayloadインスタンスはreset!されることが期待されます。
LibGit2.approve — Functionapprove(payload::CredentialPayload; shred::Bool=true) -> Nothing将 payload 認証情報を保存し、将来の認証で再利用します。認証が成功したときのみ呼び出すべきです。
shred キーワードは、ペイロード認証情報フィールド内の機密情報を破棄するかどうかを制御します。テスト中は false に設定するべきです。
LibGit2.reject — Functionreject(payload::CredentialPayload; shred::Bool=true) -> Nothing将来の認証で再利用されることを防ぐために、payload 認証情報を破棄します。認証が失敗した場合にのみ呼び出すべきです。
shred キーワードは、ペイロード認証情報フィールド内の機密情報を破壊するかどうかを制御します。テスト中にのみ false に設定するべきです。
LibGit2.Consts.GIT_CONFIG — Type設定ファイルの優先度レベル。
これらの優先度レベルは、gitで設定エントリを検索する際の自然なエスカレーションロジック(高いものから低いものへ)に対応しています。
CONFIG_LEVEL_DEFAULT- 利用可能な場合は、グローバル、XDG、およびシステム設定ファイルを開きます。CONFIG_LEVEL_PROGRAMDATA- ポータブルgitとの互換性のため、Windows全体でCONFIG_LEVEL_SYSTEM- システム全体の設定ファイル;Linuxシステムでは/etc/gitconfigCONFIG_LEVEL_XDG- XDG互換の設定ファイル;通常は~/.config/git/configCONFIG_LEVEL_GLOBAL- ユーザー固有の設定ファイル(グローバル設定ファイルとも呼ばれる);通常は~/.gitconfigCONFIG_LEVEL_LOCAL- リポジトリ固有の設定ファイル;非ベアリポジトリでは$WORK_DIR/.git/configCONFIG_LEVEL_WORKTREE- ワークツリー固有の設定ファイル;$GIT_DIR/config.worktreeCONFIG_LEVEL_APP- アプリケーション固有の設定ファイル;アプリケーションによって自由に定義されるCONFIG_HIGHEST_LEVEL- 利用可能な設定ファイルの中で最も高いレベルを表します(つまり、実際に読み込まれる最も特定的な設定ファイル)