問題タブ [libgit2sharp]
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.
git - LibGit2(Sharp)を使用してGitリポジトリのバージョンツリーを構築するにはどうすればよいですか?
いくつかの背景:
Gitをデータストレージレイヤーとして使用する可能性を検討しています。基本的に、アプリケーションの状態を記述するいくつかのXMLファイルのすべてのバージョンを保持する必要があります。ユーザーは、以前の状態に戻したり、以前の状態から分岐したりできるようにするために「Time Machine」が必要です。これはサービスレイヤーの背後に隠されますが、私はバックエンドでGitを使用することを検討しています。
時間の経過に伴うアプリケーションの状態の変化を提示する必要があるため、変更やブランチなどを示すネットワーク図を作成したいと思います。
これを行うには、バージョンツリーを視覚的に作成する必要があります。基本的に、私はこれをしたいです:
私はLibGit2Sharpを使用しています。APIをざっと見てみましたが、すぐに役立つものは何も見つかりません。私もGitをよく知っていますが、それは役に立ちません。
libgit2 - libgit2はSSH-Transport-Protocolをサポートしていますか?
ssh-keysを使用してssh経由でリポジトリのクローンを作成することは可能ですか?
libgit2sharp - フェッチされたリモート参照に新しいバージョンのファイルがあるかどうかを確認するにはどうすればよいですか?
HostAからリモートにプッシュされたファイル(RemoteTest.txt)に変更があります。HostBでは、最後のプッシュがない状態になっています。
「gitdiff」でbashにアクセスすると、変更が表示されます。
..等々...
私はC#で変更を取得しようとしました
しかし、tcは0の変更を示しています。これを行う正しい方法は何ですか?
前もって感謝します。
c# - LibGit2Sharpがgit2.dllを見つけられません
作業中のWebサイトを管理する小さなwpfアプリを作成しました。このアプリの主な機能は、テーマリポジトリのさまざまなブランチをチェックアウトできることです。これはVisualStudioで完全に機能しますが、Windows 8マシンでアプリを公開、インストール、実行すると、次のようになります。
私はインターネットとstackoverflowを検索しました。DLL'git2.dll'を読み込めませんなどの同様の質問があります。指定されたモジュールは見つかりませんでしたが、提供された回答(および回答で説明されているgithubの問題に示されている回答)は別のエラーを引き起こします。
コンパイルされたdllを含む最新のnugetをインストールし、ソリューションにlibgit2sharpプロジェクトを含むgit2.dllを追加してみました。繰り返しになりますが、Visual Studioですべて実行すると完全に機能しますが、公開、インストール、実行すると失敗します。
どのような情報を含める必要があるのかわからなかったので、質問を更新できるように、コメントしてお知らせください。
ありがとうございました!
push - ローカルリモートにプッシュする方法は?
libgit2sharpを使用してコミットをリモートリポジトリにプッシュするのに苦労しています。git bashを使用すると、正常に機能します。
リモートは、「// computer_name/remote.git」のようにUNC経由でアドレス指定されます。つまり、アクセス可能なフォルダを持つローカルネットワーク内のマシン上のフォルダです。
libgit2sharpを使用してローカルリポジトリにクローンを作成することは問題なく機能し、リモートの構築も成功しました。
Remote remote = localrepo.Network.Remotes["origin"];
今、私がリモートにプッシュしようとすると:
localrepo.Network.Push(remote, "HEAD", "origin");
Proxy.csのgit_push_add_refspec()で例外が発生します
だから私は試しました:
repo.Network.Push(remote, "HEAD", @"refs/remotes/origin/master");
Proxy.csのgit_push_finish()で例外が発生しました
これを行う正しい方法はありますか、それとも私のユースケースのサポートに問題がありますか?前もって感謝します!
[アップデート]
今、私のコマンドは次のようになります
には、コンソールにPushStatusErrorHandler
書き込む必要のあるコードが1行しかありません。PushErrorStatus
ただし、コンソールは空白のままであるため、上記の例外が発生します。
[更新2]
上記を経験したとき、静的変数Repository.Versionは0.9.5でした。
c# - libgit2sharp でエクスポートを行う
.net アプリケーションで libgit2sharp を使用しています。github からディレクトリを取得したいと思います。これを行うには、Repository.Clone を使用してディレクトリ全体を複製します。しかし、時間がかかり、必要以上のファイルを取得しています。たとえば、 .git-repository と、私が興味のない多くのフォルダーです。
libgit2sharp を使用して git リポジトリから単一のフォルダーをエクスポートする方法はありますか? または、これを別の方法で行う必要がありますか?
c# - ファイルをステージングしてコミットする適切な方法
次のことをしようとすると、空のコミットが生成されてしまいます。つまり、何も変更されていないコミットを作成します。
パスは相対的であることに注意してください。つまり、Repository
使用して作成し、Repository repo = new Repository(".");
パス (上記のファイル名と呼ばれる) を使用する ".gitignore"
か"files/text.txt"
、それを行う正しい方法のようですが、機能しません。
この「動作中」を示すコードは、ここで完全に見つけることができますが、基本的には次のように実行されます。
ツールを使用して自分自身をコミットしようとしたため、空白のコミットの例もいくつか見ることができることに注意することも重要vcs.GetRepository()
です。ここでRepository
1つチェックしてください。
さらに、コマンド ラインで変更済みとしてマークされたファイルをステージングしてコミットしようとしていることを確認しましたgit status
。したがって、変更されていないファイルをコミットしようとしているだけでも、既にステージングされているファイルをコミットしようとしているわけでもありません。私は(私の知る限り).Stage() .Commit()
更新が必要なファイルに対してこのプロセスを実行しようとしています。
アップデート
nulltoken の要求に従って:
Console.WriteLine(string.Format("{0} - {1}", f.GetRepresenation(), vcs.GetRepository().Index.RetrieveStatus(f.GetRepresenation()))) を、Index.Stage を呼び出す行の前に追加します。 ().
「テスト」ファイルをステージングしたときの結果の出力は
repo.Commit の呼び出しを実行する行にブレークポイントを追加して、コードを実行します。ブレークポイントに到達したら、vcs.GetRepository() が指すリポジトリに対して git status を実行してください。
これにより、git status の出力が得られます。
実行前と実行後の両方Commit()
。後ですが、含まれています
# Your branch is ahead of 'origin/master' by 1 commit.
同じように。
更新 2
これは期待どおりに動作し、ステージング後に次の出力が生成されます。
次に、すぐに Commit を呼び出すと、次のようになります。
そのため、事前カウントが 1 回増加し、コミットがあったことを示しますが、私の知る限りではそうではありませんが、ファイルはまだ新しく変更されたと報告されています!
更新 3
実行中に何かに気づきましたgit diff
。ファイル モードの変更 (つまり、100644 から 100755 へ) が検出されています。おそらくこれが実際に起こっていることです。明らかに静的なままであることができるファイルですべてを試します(どこにも開かず、システムがgitのように適切に機能しているかどうかを確認しますが、エディターは奇妙なファイルモードのことを行っています)。
更新 4
アップデート 3 に対応して、私は自分が馬鹿であることに気付きました。lib2gitsharp は正常に機能していますが、github (明らかに) が視覚的に表示されていないものが変更されたかどうかを確認するために愚かなことをしていませんでした。この場合、私が試みていたもののファイルモードは絶えず変化しStage
てCommit
いました(何らかの理由で、私は団結を非難していますが)。これにより、ファイルのコンテンツだけでなく、実際に何かが変更されているときに、何も変更されていないように見えました。全体として、この質問はそれ自体で答えられましたが、それを理解するのに時間がかかりすぎました.
また、nulltoken に感謝の言葉を述べます。私はささいなことに気づかなかったにもかかわらず、彼は大きな助けを提供してくれたので、最終的にそこにたどり着きました。
.net - Repository Merge はまだ実装されていないため、代替手段はありますか?
私たちの会社には、複雑なファイル同期シナリオを特徴とするプロジェクトがあり、当然 git が解決策として思いつきました。これは .net プロジェクトであるため、libgit2sharp はまさに私たちが探していた API でした。
このスレッドに対する nullpointer の応答から見えるように、マージはまだ実装されておらず、リモート ブランチからの変更をマージできないため、これを解決する別の方法を考える必要があります (そして、既にテストを行っているため、そうしたくないでしょう)。 libgit2sharp での実行は本当に成功しました)。
リモートマージを提供する可能性または代替手段はありますか? 短期間でリリースされますか?
前もって感謝します。
c# - 名前付きブランチを取得するには?
私は LibGit2Sharp を使用しており、特定のブランチの最新のコミットを取得したいと考えていますが、ドキュメントが不足しているか、自分のせいで、これを達成する方法がわかりません。
したがって、特定のブランチの現在のコミットを取得する最も簡単な方法は何ですか?