2014-07-20 65 views
0

我正在開發一個使用Git作爲數據庫的應用程序。我目前的做法是調用git shell命令來構造一個新的提交,無論應用程序什麼時候改變。這非常簡單,但是一個很大的缺點是它不允許任何併發寫入數據庫:兩個線程不能同時構建提交,因爲有一個HEAD,一個index和一個工作副本。併發git checkout/add/commit

但是,由於提交,樹和blob都是內容尋址,所以我認爲應該可以同時構建所有這些。對此的推薦方法是什麼?也許:

  • 命令行標誌,以git addgit commit等,其中明確指定不同的HEADindex文件來使用。據我所知,這些東西不存在。
  • 使用git plumbing命令進行所有操作。但是,我不是他們的專家,我不完全確定哪些是線程安全的。
  • 一個Git服務,可以連接一個傳統的數據庫連接,它可以提供對Git存儲庫的事務併發訪問。據我所知,這樣的事情不存在。我曾考慮寫一個。
  • 放棄並做一個git clone爲每個併發用戶獲取一個全新的工作副本。這是非常昂貴的。

回答

0

另一個可能的選擇是爲每個併發用戶創建(並簽出)新分支並提交到該分支,然後定期將分支合併到主分支。

可能有一些問題,但:

  1. 合併可能會失敗,並要求互動干預來解決衝突。
  2. 直到定期合併時,用戶Y將不會看到用戶X. COMMITED變化
+0

我不知道如何幫助 - 這似乎是在同一個存儲庫同時提交到兩個不同的分支是不可能的,至少在Git瓷器的命令下是不可能的。我也沒有解決現階段合併衝突或分支更新的問題;只是如何同時構造提交的問題。 – jameshfisher