2011-03-25 18 views
5

Mantengo un tenedor de un repositorio.Forma correcta de rastrear un archivo binario sqlite3 en git?

Ese repositorio que ha estado rastreando un archivo binario (que es un archivo sqlite3).

Cada vez que obtengo de ese repositorio, experimento un conflicto de combinación debido a ese archivo binario.
¿Cuál es la forma correcta de resolver este tipo de conflicto de combinación?

¿Cuál es la forma correcta de administrar archivos binarios (como este archivo sqlite3 * .db) en git?

Respuesta

5

Puede definir un controlador de combinación personalizado que especifique always "keep theirs" (copie la versión que está tirando) encima de su versión actual.

.gitattributes 

mysqlite3.db merge=keepTheir 

(Dicho esto, recuerda binaries aren't always best managed with Git, especialmente si se modifican a menudo)

+0

no puedo encontrar .gitattributes. ¿Debo crear un archivo en $ GIT_DIR/info/attributes? –

+0

@shadyabhi: No, debe crear un archivo llamado '.gitattributes' en el directorio principal de las cosas que desea que se aplique (probablemente el nivel superior de sus proyectos), al igual que con un' .gitignore'. El '$ GIT_DIR/info/attributes' solo se aplicaría a su clon específico del repositorio, no a otros, dado que obviamente no se ha rastreado. – Cascabel

+0

@shadyabhi: La pregunta http://stackoverflow.com/questions/1910444/git-merge-s-theirs-needed-but-i-know-it-doesnt-exist/1910479#1910479 le brinda un ejemplo más detallado. – VonC

0

He publicado una herramienta que hace lo que está pidiendo. Utiliza un controlador de diferencias personalizado que aprovecha la herramienta de proyectos sqlite 'sqldiff', los UUID como claves principales y deja el sqlite rowid. Todavía está en alfa, por lo que se agradece la retroalimentación.

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

Cuestiones relacionadas