0

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()で例外が発生します

An error was raised by libgit2. Category = Invalid (Error).
Not a valid reference 'origin'

だから私は試しました:

repo.Network.Push(remote, "HEAD", @"refs/remotes/origin/master");

Proxy.csのgit_push_finish()で例外が発生しました

An error was raised by libgit2. Category = Net (Error).
Remote transport doesn't support push.

これを行う正しい方法はありますか、それとも私のユースケースのサポートに問題がありますか?前もって感謝します!

[アップデート]

今、私のコマンドは次のようになります

repo.Network.Push(remote, "HEAD", @"refs/remote/origin/master", pushStErrHnd, null);

には、コンソールにPushStatusErrorHandler書き込む必要のあるコードが1行しかありません。PushErrorStatusただし、コンソールは空白のままであるため、上記の例外が発生します。

[更新2]

上記を経験したとき、静的変数Repository.Versionは0.9.5でした。

4

2 に答える 2

2

nulltokenがすでに述べたように、ローカルプッシュが最近追加されました。最近のLibGit2Sharpビルドがあることを確認する必要があります(3月12日にコミットされたcommit 547a6bdを含むLibGit2Sharpが必要です)

また、APIの使用法にわずかな間違いがあります。宛先参照は、リモートで更新するための参照である必要があります(たとえば、@ "refs / remote / origin/master"はおそらく@"refs/ heads / master"である必要があります)。

于 2013-03-27T16:32:34.517 に答える
1

ローカルリポジトリへのプッシュは最近libgit2に追加され(PR#1406を参照)、最終的にLibGit2Sharpに埋め込まれました。ただし、この機能はまだ適切にテストされていません。

あなたを助けようとするために、あなたは以下のいくつかの質問への答えであなたの質問を更新してください:

  • Push問題に関する詳細情報を提供するために、追加のパラメーターを受け入れますonPushStatusError。それぞれの可能性のアウトプットを提供していただけますPushStatusErrorか?
  • ローカルリポジトリへのクローン作成が機能しました」と述べます。クローンをどのように実行しましたか?gitを介して?LibGit2Sharpを介して?
  • リモコンのURLをファイルURI形式(例)に変更するとどうなりますfile://computer_name/remote.gitか?

アップデート

驚くべき@yorahは、シナリオに関するテストカバレッジを強化するためにプルリクエストに取り組んでいます。

  • ローカルリポジトリからのクローン作成
  • 新しいコミットの追加
  • 新しく作成されたコミットをプッシュする
  • リモート参照のリストを取得する
于 2013-03-27T11:27:04.303 に答える