GitSharp (Git for .NET and Mono) を使用して、変更を SSH 経由でリモート サーバーにプッシュするにはどうすればよいですか?
2 に答える
理論的には、最新のGitSharp 0.3 リリース(2010 年 6 月) には次のものが含まれています。
トランスポート コードのバグ修正 ( http またはsshによるプッシュ/フェッチ)
GitSharp README.txtには次のものが含まれています。
オブジェクト トランスポート
- ssh、git、http、およびバンドルを介して取得します。
- ssh、git 経由でプッシュします。Git# は
プッシュされたパックをまだ差分化していないため、C Git パックよりもはるかに大きくなる可能性があります。
このスレッドで (ssh 経由で) そのようなプッシュの例を見つけることができます:
Repository repository = new Repository(@"\path\to\my_repos");
repository.Index.Add(@"\path\to\my_file");
Commit commited = repository.Commit("Testing fromGitC#", new Author("Author", "...@aCompany.com"));
if(commited.IsValid) {
PushCommand pushCommand = new PushCommand {
RefSpecs = new List<RefSpec> {
new RefSpec("HEAD", "refs/for/master")
},
Force = true,
Repository = repository
};
pushCommand.AddAll();
pushCommand.Execute();
}
GitSharp は、Java から C# への JGit の手動ポートに基づいています。これを半自動的に行う別のプロジェクトがあります (MonoDevelop に追加する目的で)。
http://foodformonkeys.blogspot.com/2010/10/ngit.html
https://github.com/slluis/ngit
NGITについて
NGit は JGit [1] を C# に移植したものです。このポートは、Java から C# への変換ユーティリティである Sharpen [2] を使用して半自動的に生成されます。
NGit は、すべてのリポジトリ操作プリミティブとトランスポート プロトコルを含む、JGit によって実装されたすべての機能を提供します。SSH サポートは、プロジェクトに含まれる jsch [3] のポートによって提供されます。
プロジェクトは 4 つのライブラリで構成されています。 - NGit: git ライブラリ。- NGit.Test: NGit の単体テスト - NSch: jsch のポート。- Sharpen: 上記のライブラリに必要な一部のサポート クラス。