問題タブ [libgit2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
131 参照

git - gitアーキテクチャで指定されたファイルの最近の変更を探す方法

gitコアアーキテクチャを学習しているときに、指定されたファイルの最近の変更を検出するアルゴリズムを知りたいです。

git log -n1 -- <file>指定されたファイルに最近変更があったコミットを表示します。最新の変更を知るのは非常に簡単です。さりげなく自分で実装したいです。

libgit2を使用して各コミットをウォークします。何日かかかりましたが理解できません。構造のようなDAGを使用するgitcommitモデルは、私にとってそれを探すことはほとんどありません。

指定されたファイルの最近の変更を検出するための最良の方法は何ですか?

0 投票する
1 に答える
5377 参照

git - libgit2sharp を使用してコミットとその親の間の変更を取得する

私は libgit2sharp (libgit2 の C# ラッパー) を使用していますが、私が望んでいる機能があまりないため、問題が発生しています (すぐに貢献できるといいのですが、これは本当に便利なプロジェクトのようです)。

私が今やろうとしているのは、特定のコミットとその親から変更されたファイルのリストを取得することです。マージとその 2 つの親の間で何が変わったのかを理解しようとはしません。私は通常のコミットにもっと興味があります。

これらの人 (https://github.com/libgit2/libgit2sharp/issues/89) は、似たようなことに取り組んでいます。彼らの手順は健全な考えだと思いますが、GITの内部構造の理解が少し苦手です(GITのエンドユーザー向けガイドにはたくさんのガイドがありますが、内部構造についてはあまりありません)

GIT自体が「git diff」コマンドをどのように実行するのか興味があります。おそらく、GIT は実際にはデルタを保存するのではなく、ファイルの完全なバージョンを保存します (変更されていない場合は、既存の SHA を指すだけです。この情報は、ここhttp://xentac.net/2012/01などのさまざまなソースから見つけることができます)。 /19/the-real-difference-between-git-and-mercurial.html )。これにより、データがコミットの一部として保存されていないため、2 つのコミット (私の場合は特定のコミットとその単一の親) 間の変更を取得するのが難しくなっているようです (これは、libgit2sharp の Commit.cs の Commit クラスを調べれば明らかです)。ファイル)。

コミットからアクセスできるのはツリーです。この情報を見つけるために次のことを行うのは理にかなっていますか?

1) 目的のコミットから開始し、ツリーをたどって、すべての SHA 値をセットに保存します。

2) 目的のコミットの親から開始し、そのツリーをたどって、すべての BLOB SHA 値を別のセットに保存します。

3) 変更されたファイルの SHA は、2 つのセットの共通部分にないファイルになります。

このアプローチで見られる問題は、BLOB の SHA 値からファイル名を取得する方法がないように見えることです (libgit2sharp の Blob.cs ファイルでこれを実行できるものは何もありません)。

この質問には多くの側面があることは知っていますが、それらは git から特定のデータを取得するという大きな目標の一部です。

ありがとう。

0 投票する
3 に答える
3836 参照

c# - コミットが属するブランチをLibGit2Sharpで見つけますか?

私はコミットをループしていLibGit2Sharpます:

Authorおよびのようなプロパティを取得できますMessageが、それがどのブランチに属しているかについては何も表示されません。理想的には、ブランチオブジェクトへのポインタが必要ですが、このシナリオでは名前でも問題ありません。

これは、デバッガーが表示するものです。

ここに画像の説明を入力してください

これは私が探しているものです:

ここに画像の説明を入力してください

最も関連性の高いブランチ名を表示するTortoiseGitの動作:

ここに画像の説明を入力してください

リポジトリの例:https ://docs.google.com/open?id = 0B-3-X85VysdNcmZIaGVTSDZSenVGbTJxYlI2SUlsZw

0 投票する
1 に答える
225 参照

git - libgit2を使用してファイルの一部をGitインデックスに追加することは可能ですか?

libgit2、実際にはlibgit2sharpを使用していますがadd -p、CLIの場合と同様にファイルの一部を追加する方法はありますか?

ドキュメントから何も見つかりません:http://libgit2.github.com/libgit2/#HEAD/group/index

0 投票する
2 に答える
2290 参照

windows - libgit2、libgit2sharp、Ngit を使用して msysgit を Windows に置き換えている団体はありますか?

こんにちは、私は Git が好きですが、gitextensions tortoisegit は tortoisehg や tortoisesvn (DVCS ではない) と比較してすぐに使用するには醜いため、人々や友人と Windows プロジェクトを共有するのは楽しくないようです。msysgit を bash シェルだけで使用しても、Linux/Mac ほど使いやすくはありません。

それで、新しい候補はありますか(アルファプロジェクトなど(他のライブラリでも))?

これらの新しい Git ライブラリが離陸するのを楽しみにしています!

0 投票する
1 に答える
1099 参照

ios5 - iOSアプリにObjectiveGitライブラリを含める

ObjectieGitFramework.xcodeprojファイルを開くと、iOSスキームを正常に構築できるようになりました。しかし、たくさんの実験が必要でした。最初から始めましょう–私がそれをどのようにしたか。

私がしたこと:

まず、ObjectiveGitのフォークのクローンを作成しました。

Src:https ://github.com/libgit2/objective-git/pull/54

プロジェクトを開いてビルドすると、1つのエラーと1つの警告が発生します。警告を解決するために、Xcodeにプロジェクト設定を自動的に更新させました。 エラー

今、私はディレクトリに行き、cmakelibgit2を使用してビルドします:

Src:https ://github.com/libgit2/libgit2

この結果は、とりわけ、libgit2.0.15.0.dylib作成中のファイルになります。 ファインダー内のファイルの画像

それをXcodeにドラッグし、ObjectiveGitとiOSターゲットに追加します。次に、ObjectiveGit-iOSの[ビルドフェーズ]タブに移動して、次のようにします。

ここに画像の説明を入力してください

問題

この時点で、プロジェクトをビルドでき、を使用してプロジェクト内にクラスを正常に作成できましたObjectiveGit。ただし、プロジェクトを別のプロジェクト内にドラッグしObjectiveGit-iOS、ターゲット依存関係として追加libObjectiveGit-iOS.aして追加すると、link binary with librariesインポートできずObjectiveGit/ObjectiveGit.h、他の奇妙なエラーが発生していました(下の画像を参照)。xcodeのライブラリについてはほとんど知らないので、なぜこれが機能しないのかまったくわかりません。

ここに画像の説明を入力してください ここに画像の説明を入力してください

さて、これは私が一度受けたエラーですが、もうありません。私はそれを引き起こすために何をしていたのか分かりません。 ここに画像の説明を入力してください

アップデート

header search pathこれを何かに追加すると、奇妙なことが起こります。その結果、ファイルは見つかりませんが、代わりに70の他のMach-oエラーが発生します。

`` `

0 投票する
1 に答える
439 参照

git - LibGit2Sharp の Stash に関する詳細を取得するには?

stash のリストとその名前 (およびおそらく他の情報) を取得し、どのファイルが変更され、差分が表示されるかを確認する方法はありますか?

私はLibGit2Sharpを使用しています

0 投票する
1 に答える
1597 参照

python - pygit2 (libgit2) を使用して、作成したリポジトリにブロブまたはツリーを追加しますか?

pygit2 ライブラリを使用しようとしています。

最初のステップで行き詰まったようです。そのドキュメントには、ブロブを作成してツリーに追加する方法が説明されていません。ほとんどの場合、既存の git リポジトリを操作する方法に関するものですが、リポジトリを作成して、ブロブ、コミットなどをリポジトリに追加したいと考えています。ファイルから直接 BLOB を作成することは可能ですか? ファイルの内容を読み取って blob.data を設定する必要がありますか?

BLOB またはツリーを作成してリポジトリに追加するにはどうすればよいですか?

0 投票する
1 に答える
1873 参照

c# - LibGit2Sharpを使用してGitリポジトリ内のすべてのコミットをループしますか?

ループしてみnew LibGit2Sharp.Repository(path).Commitsましたが、マスターのコミットのみを通過しているようです(または、HEADが指している場所を推測しますか?)。

リポジトリ内のブランチに関係なく、リポジトリ内のすべてのコミットをループし、コミットが発生した日時(日付)の順にループする方法を教えてください。

私はこれをgit log、ブランチに関係なくコミットを日付順にリストするなどの目的で行っています。

参照されていないコミットもループできる場合(つまりgit reset、一部のコミットから離れて、コミットが参照されなくなり、gcされようとしている場合)のボーナスポイント。

考え?

0 投票する
1 に答える
1392 参照

git - 特定の親を持つすべてのコミットを見つける方法は?

特定の親を持つリポジトリ内のすべてのコミットを見つけるにはどうすればよいですか?

たとえば、コミットがある場合A、親を共有する他のすべてのコミットを見つけたいと思いますA。LibGit2Sharpでこれを行う最も効果的な、つまりパフォーマンスが高く正しい方法は何ですか?