2012-01-30 4 views
1

C#用のGitライブラリを知っていれば、クライアントコードで&を追加してリポジトリファイルをメモリに変更できますか?私は実用的な追加や修正をしたい裸のレポジトリを持っています。それは裸のリポジトリなので、私はファイルシステムにファイルを書きたくありません。このようなものが存在しますか?ファイルのメモリの追加/修正を可能にする.Net Gitライブラリ

ありがとうございます!

答えて

2

GitSharpは、作業ディレクトリに中間ファイルを必要とせずにGitのオブジェクトデータベースへの直接書き込みを可能にするそのBlobタイプのCreate()過負荷を公開します。

(少しBlobTests.csからパッチを適用)以下のユニットテストは、このような機能を示しています

[Test] 
public void WriteBlob() 
{ 
    using (var repo = GetTrashRepository()) 
    { 
     blob = Blob.Create(repo, "and this is the data in me\r\n\r\n"); 
     Assert.AreEqual("95ea6a6859af6791464bd8b6de76ad5a6f9fad81", blob.Hash); 

     var same_blob = new Blob(repo, blob.Hash); 
     Assert.AreEqual(Encoding.UTF8.GetBytes("and this is the data in me\r\n\r\n"), same_blob.RawData); 
    } 
} 

EDIT:

あなたはまた、NGitを見てみることをいとわないかもしれません。これは、.NetへのJGitの自動ポートです。 GitSharpとは対照的に、それはまだ維持されています。

ObjectInserterは(hereを参照)something promisingのように見えます。

注:あなたが直接コミットダンスせずにオブジェクトを書き込むことによって、オブジェクトデータベースとしてGitリポジトリを使用するために喜んでいる場合は、git gc起動時に剪定されてからそれらを防ぐために(.git/refsで)参照を作成することを確認してください。

注2: Gitオブジェクトは読み取り専用なので、Blobを「変更」することはできません。ただし、参照ポイントを作成した場合は、新しい「更新済み」Blobを作成し、参照のターゲットを新しい「バージョン」を指すように変更することができます。

0

ファイルシステム上のベアリポジトリISです。メモリ内の高速な操作を希望する場合は、RAMディスクを使用してください。この方法で、gitの最新機能を引き続き取得できます。

関連する問題