Как я могу сравнить две версии программного обеспечения, одна из которых находится в репозитории GIT? - PullRequest
2 голосов
/ 23 июля 2010

Я использую модифицированную версию Linux производителя, основанную на версии ядра 2.6.14. * (Точнее, я не знаю, какая именно).

Я бы хотел перенести изменения в ядре вендора, но сначала имеет смысл посмотреть, какие изменения были внесены.Я клонировал репозиторий linux git:

$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git linux-git

и теперь хотел бы сделать diff и, возможно, создать ветку с кодом поставщика.Предложения?

Ответы [ 3 ]

2 голосов
/ 23 июля 2010

Я бы посоветовал вам сначала создать ветку, начиная с коммита, который определенно старше, чем тот, на котором основана версия поставщика.

Затем вы должны оформить заказ в этой новой ветке и синхронизировать рабочую копию с источниками вашего поставщика. Для этого вы должны удалить все исходные файлы из рабочей копии (обязательно пропустите файлы .git и .gitignore!), А затем скопируйте туда свой код. Вы можете попробовать использовать rsync для этого.

После этого вы можете использовать git diff, чтобы увидеть, какие изменения были внесены.

Зафиксируйте эти изменения в новой ветке с помощью git commit.

Теперь переключитесь на основную ветку (git checkout master) и перенесите на нее новую ветку (git rebase new-branch). Изменения, которые были в обеих ветках (они появляются, поскольку вы не знаете точную фиксацию, на которой основано ядро ​​вендора), будут автоматически объединены и не вызовут конфликтов. Другие конфликты должны быть разрешены.

После успешной перезагрузки ваш коммит HEAD будет содержать изменения, сделанные вашим поставщиком.

Я надеюсь, что это будет работать для старой версии.

1 голос
/ 24 июля 2010

Я предполагаю, что у вас есть * .tar.gz архив ядра вашего вендора. я буду также Предположим, что ваш поставщик начал с v2.6.14. Если вы думаете, что ваш продавец начал с В какой-то другой версии, скажем v2.6.14.11, вместо этого вам следует клонировать репозиторий linux-2.6-stable.git, поскольку он отслеживает все ядра v2.6.x.y.

Вот что я предлагаю.

  1. git clone .../torvalds/linux-2.6.git (как вы уже сделали)
  2. cd linux-2.6

  3. git checkout -b vendor-2.6.14 v2.6.14

    это даст вам новую ветку, vendor-2.6.14, над которой мы будем работать. Точка ветвления установлена ​​на версию 2.6.14 Линуса.

  4. rm * -rf (удалить все файлы)

  5. tar xzf ../vendor-sources.tar.gz (извлечение файлов от поставщика)

  6. git add --all (файлы сцены добавлены, изменены и удалены)

  7. git commit -m'vendor changes'

На этом этапе вы можете запускать такие вещи, как:

  • git diff --stat
  • git diff
  • git show и т. Д.

Если изменения невелики, вы можете взять этот патч и применить его к другому базовому уровню ядра, скажем, v2.6.15.

  1. git checkout -b vendor-2.6.15 v2.6.15 (создать временную ветку с v2.6.15)
  2. git cherry-pick vendor-2.6.14 (возьмите первый и единственный коммит с .14 и примените его здесь)

На данный момент у вас есть изменения поставщика в git, так что вы можете делать с ним все что угодно. Вы можете даже разделить смену вендора, если она огромна, на небольших патчей . Небо это предел.

-Bart

1 голос
/ 23 июля 2010
  1. Создать ветвь с git branch
  2. Скопировать все измененные файлы поверх рабочей копии.
  3. Запустить git status и git diff, чтобы увидеть все изменения.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...