Fusionando los cambios de Linux en el proyecto Kernel de Android

Tratando de resolver esto aquí. Tratando de fusionar los últimos cambios de Linux 3.0 (3.0.41) en un proyecto kernel en el que estoy trabajando, basado en HTC source (3.0.8). Descargué el código fuente, comprometí los files base, agregué el tree estable a Linux como un control remoto, y traté de combinarlo con 'git merge linux-stable / linux-3.0.y'. En la respuesta, me dan:

error: el file de tree de trabajo sin seguimiento 'Documentation / DocBook / dvb / dvbstb.pdf' se sobrescribirá mediante fusión. Aborto

Que es un file en .gitignore. Si git agrego -f ese file, solo comete errores con el siguiente file en .gitignore. ¿Hay alguna manera de fusionar esto sin estos errores? No quiero hacerlo commit por commit, ya que habría miles de commits para fusionar.

En primer lugar, si puede encontrar el origen de HTC como un repository git existente, estará mucho mejor. La falta de un historial de git adecuado en su tree construido manualmente va a causar conflictos inevitablemente. La fuente de HTC es efectivamente una twig de Android vainilla, que es (supuestamente) una twig de Linux vainilla, pero sin la historia completa, git no puede intentar nada mejor que una fusión bidireccional efectiva, ya que no tiene el ancestro común para hacer una combinación adecuada de tres vías. Entonces, a less que seas un progtwigdor de Kernel experimentado que pueda manejar estos conflictos, espero que tengas una gran dificultad.

De todos modos, si no es posible get el historial completo, tus treees no tendrán una raíz común, por lo que necesitarás consultar ¿Cómo unir dos repositorys git sin una raíz común, donde todos los files modificados son los mismos? .

En cuanto al problema de .gitignore , si tiene files que son ignorados en el tree 3.0.8 pero seguidos en el 3.0.41 tres, parece que no coinciden los files .gitignore en cada tree, por lo que debe compararlos, Trate de descubrir por qué, y decida qué se debe rastrear y qué no. git blame .gitignore en el tree 3.0.41 podría ayudar con esto. El tree 3.0.41 será el más autorizado de los dos repositorys, ya que tiene un historial completo y será internamente coherente por sí mismo, por lo que podría intentar trasplantar su .gitignore en el tree 3.0.8 antes de comprometer la import inicial. También tenga en count que podría haber files .gitignore en cualquier parte del tree, no solo en el nivel superior (no sé si el núcleo de Linux hace esto).