2011-03-25 56 views
5

我維護一個回購叉。在git中跟蹤sqlite3二進制文件的正確方法?

那個已經跟蹤二進制文件(這是一個sqlite3文件)的回購。

每次我從該回購中拉出時,都會遇到由於該二進制文件而導致的合併衝突。
解決這種合併衝突的正確方法是什麼?

在git中管理二進制文件(如sqlite3 * .db文件)的正確方法是什麼?

回答

5

您可以在當前版本的頂部定義一個自定義合併驅動程序,指定爲always "keep theirs"(複製正在拉動的版本)。

.gitattributes 

mysqlite3.db merge=keepTheir 

(話雖這麼說,記得binaries aren't always best managed with Git,特別是如果他們經常修改)

+0

我不能找到.gitattributes。我必須在$ GIT_DIR/info/attributes中創建一個文件嗎? – 2011-03-25 16:24:52

+0

@shadyabhi:不需要,你必須在你希望應用的東西的父目錄(可能是你的項目的頂層)創建一個名爲'.gitattributes'的文件,就像使用'.gitignore'一樣。 '$ GIT_DIR/info/attributes'只適用於你特定的回購克隆,而不是其他的,因爲它明顯沒有跟蹤。 – Cascabel 2011-03-25 16:30:51

+0

@shadyabhi:這個問題http://stackoverflow.com/questions/1910444/git-merge-s-theirs-needed-but-i-know-it-doesnt-exist/1910479#1910479給你一個更詳細的例子。 – VonC 2011-03-25 16:32:32

0

我已經發布了一個工具,做你問什麼。它使用一個自定義比較驅動程序,利用sqlite項目工具'sqldiff',UUID作爲主鍵,並離開sqlite rowid。它仍然在阿爾法,所以反饋表示讚賞。

https://github.com/cannadayr/git-sqlite