В плане git вы можете выбрать любой способ.
Вы можете взять источники v3.8, создать отдельную ветку (называемую, скажем, my_modules), применить ваши изменения в этой ветке, зафиксировать их. Затем вам нужно объединить эту ветку с фактическими источниками ядра (я бы предложил с восходящим потоком master
, но вы можете выбрать любую другую точку (фиксацию) в истории развития ядра): git merge <chosen-branch-o-tag-o-commit>
. На этом этапе вам, возможно, придется разрешать конфликты слияния, если они есть, обновить свой модуль до внутреннего API внутреннего ядра и т. Д., А затем зафиксировать объединенное состояние. См. git merge --help
и другую соответствующую документацию git. Теперь у вас есть изменения, адаптированные к выбранной версии ядра, и они могут видеть разницу между ядром вверх и исправленным: git diff <chosen-branch-o-tag-o-commit> HEAD
. В результате фиксации картина будет выглядеть следующим образом:
A - ... - B
\ \
D1 - D2... - M
где начальная точка ветвления (3,8 ядра), В коммита вы слиты с (более новым ядром), D1..DN являются фиксации вашего водителя и M - это слияние.
В качестве альтернативы вы также можете использовать другой подход, называемый rebasing. В этом случае вы «пересаживаете» свою начальную последовательность совершения на новый выбранный корень: git rebase -i B
. Затем git попытается повторно применить всю последовательность D1 ... DN к новому корню B итеративно. Обратите внимание, что на каждый шаг 1 ... N вы можете получить конфликт, который вам необходимо решить, а затем продолжить процесс перезагрузки с git rebase --continue
. В [успешного] конце вы получите новый фиксации последовательности D'1 - D'N растет из B:
A - ... - B
\
D'1 - .... D'N
Пожалуйста, обратите внимание, что технически D'1 ... D'N глядя/аналогичный/к вашему оригинальному D1 ... DN различны. Они имеют собственное время фиксации, могут иметь несколько другой текст патча и т. Д. В зависимости от ваших потребностей они могут или не могут быть тем, что вам нужно.
AFAIK для работы ваших модулей необходимо заменить ядро вашей системы, например, если вы скомпилируете свой модуль против версии 3.10 ядра, то ваша система также должна запустить эту версию. – rendon
1) Найдите ближайшую к вашей базе версию, имеющую доступную 3.10. 2) Разверните текущее дерево против этого дерева 3.8. 3) Применяйте свои изменения к этой версии 3.10, автоматически, где это возможно, и вручную * в том числе до степени переноса на новые механизмы, где это необходимо *. 4) Продолжить продвижение вперед прогресс –
rendon: Да, я заменяю все ядро. @ChrisStratton: Спасибо за предложение, я делаю что-то похожее на то, что вы предложили, я загрузил дерево ядра, я определил версию, ближайшую к моей базе, которая имеет доступную 3.10. Тогда я возьму разницу этого нетронутого 3.8 и 3.9, применим его к моему 3.8, затем снова то же самое с нетронутыми 3.9 и 3.10. Надеюсь, это сработает. – brokenfoot