Как отличить файлы напрямую из репозитория ядра Linux GIT? - PullRequest
5 голосов
/ 15 ноября 2009

Я бы хотел иметь возможность просматривать файлы / каталоги непосредственно из репозитория Linux Kernel GIT без необходимости загрузки полного исходного кода.

В частности, меня интересуют два возможных решения:

  1. Возможность делать различия через веб-браузер (Firefox)
  2. Утилита с графическим интерфейсом для Ubuntu, которая может выполнять удаленные сравнения.
  3. Учебное пособие по настройке опции # 2

Редактировать

В качестве примера того, что я ищу, я использовал CrossVC для вышеуказанных задач в репозитории CVS.

Ответы [ 2 ]

9 голосов
/ 15 ноября 2009

Gitweb на kernel.org позволяет просматривать diff между произвольными коммитами, см., Например, следующую ссылку для diff между v2.6.32-rc6 и v2.6.32-rc7:
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;hp=refs/tags/v2.6.32-rc6;h=refs/tags/v2.6.32-rc7 (используйте ссылку patch , чтобы получить простой патч, который вы можете применить), и между произвольными версиями файла / между произвольными версиями произвольных файлов, например: diff to current ссылка в история взгляд.

К сожалению, ни официальная версия gitweb (распространяемая вместе с самим Git), ни ветвь, используемая kernel.org, не генерируют ссылки между произвольными коммитами, поэтому вам придется вручную (создавать вручную) URL-адреса передавать gitweb. В случае commitdiff view (действие) вам необходимы следующие параметры: 'h' (хеш) и 'hp' (родитель хеша); в случае представления blobdiff это 'hb '(основа хеша) и 'hpb' (основа родительского хеша), а также 'f' (имя файла) и 'fp' (родительский файл).

Шаблоны

Обратите внимание, что в ядре gitweb (но не в форке, используемом kernel.org, в настоящее время) вы можете использовать версию path_info, например:
<a href="http://repo.or.cz/w/git.git/blobdiff/" rel="nofollow noreferrer">http://repo.or.cz/w/git.git/blobdiff/</a><strong>A</strong>..<strong>B</strong>:/<em><filename></em>


Как его найти

  1. Найти в веб-интерфейсе коммит, который является коммитом слияния, например
    https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=1c5aefb5b12a90e29866c960a57c1f8f75def617

  2. Найти ссылку для сравнения между коммитом и вторым родителем, например
    https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/diff/?id=1c5aefb5b12a90e29866c960a57c1f8f75def617&id2=54a217887a7b658e2650c3feff22756ab80c7339

  3. Замените SHA-1 сравниваемых коммитов именами ревизий или идентификаторами ревизий, которые вы хотите сравнить, например, для генерации diff между v3.15-rc8 и v3.15-rc7
    https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/diff/?id=v3.15-rc8&id2=v3.15-rc7

    или для создания патча ( rawdiff )
    https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/rawdiff/?id=v3.15-rc8&id2=v3.15-rc7

0 голосов
/ 15 ноября 2009

Система, которая создает diff (будь то ваш веб-сервер или ваша локальная система), должна иметь полную копию (клон) git repo.

Так что вы не можете делать "удаленные различия".

Итак, если вы хотите избежать git clone всего ядра, почему бы просто не указать вашему веб-браузеру http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=summary?

...