Homebrew: как использовать формулу из запроса на растяжение
Я новичок в GIT и GitHub (и Homebrew, если на то пошло); формула emacs в основном репозитории нарушена в OS X Lion, но есть "запрос на pull" (https://github.com/mxcl/homebrew/pull/6518), который исправляет проблему (но это не объединены в основном репозитории).
Как обновить локальную копию репозитория Homebrew, чтобы эта формула была исправлена? Если я это сделаю, будет ли эта формула все еще обновляться, если основной репозиторий включает это исправление?
Пожалуйста, исправьте меня, если терминология неверна.
Ответы
Ответ 1
Документация на Github описывает это довольно многословное (раздел "Слияние запроса на растяжение" ):
в вашем репо:
git checkout master
git remote add colin https://github.com/ColinHebert/homebrew.git
git fetch colin
Теперь у вас есть полное содержание репо colin
(включая знание хешей фиксации, используемых в этом репо). Далее следует применить изменения. Документы говорят, что вы должны сделать git merge
, но это не так хорошо в нашем случае, так как colin добавил изменения в его master
. Если он работает на master
(и делает еще несколько коммитов), вы также получите эти изменения.
К счастью, четыре коммиты, составляющие патч, называются в Pull-request: ae28b29e
, df10b69a
, e8915488
, 87f2d1e5
. Вы можете применить их с помощью git cherry-pick
:
git cherry-pick ae28b29e
git cherry-pick df10b69a
git cherry-pick e8915488
git cherry-pick 87f2d1e5
Что это. Теперь вы можете удалить удаленный colin
с помощью
git remote rm colin
Еще одна возможность - загрузить патч и применить его:
git checkout master
curl https://github.com/mxcl/homebrew/pull/6518.patch | git am
Патчи для запросов на тягу всегда доступны через
https://github.com/<user>/<repo>/pull/<request_number>.patch
Ответ 2
Вы можете установить формулу Homebrew непосредственно из запроса на растяжение с помощью brew install $raw_pull_requst_url
, например:
brew install https://raw.github.com/ColinHebert/homebrew/538a99cc06a8f40b6ebcf2f4f8fd44d563c672cd/Library/Formula/emacs.rb
Для поиска URL-адреса запроса тяги, вероятно, лучший способ, но я пошел на URL-адрес запроса на вытягивание, нажал на Измененные файлы, затем на View File @9b22d42, а затем на Raw
Ответ 3
Я нашел следующее, чтобы быть лучше для обычного доморощенного пользователя.
Если вы ищете исправление, будет номер тяги:
| => brew search vmdktool
No formula found for "vmdktool".
==> Searching pull requests...
Open pull requests:
vmdktool 1.4 (new formula) (https://github.com/Homebrew/homebrew-core/pull/9109)
Просто сделайте brew pull ####
, где ####
- номер вытягивания:
| => brew pull 9109
fatal: ref HEAD is not a symbolic ref
Warning: Current branch is : do you need to pull inside master?
==> Fetching patch
Patch: https://github.com/Homebrew/homebrew-core/pull/9109.patch
==> Applying patch
Applying: vmdktool 1.4 (new formula)
==> Patch closes issue #9109
==> Patch changed:
Formula/vmdktool.rb | 37 +++++++++++++++++++++++++++++++++++++
1 file changed, 37 insertions(+)
затем выполните установку/обновление:
| => brew install vmdktool
Updating Homebrew...
==> Auto-updated Homebrew!
Updated Homebrew from 11cf7b9 to 1f97e31.
No changes to formulae.
==> Using the sandbox
==> Downloading https://people.freebsd.org/~brian/vmdktool/vmdktool-1.4.tar.gz
######################################################################## 100.0%
==> make CFLAGS='-D_GNU_SOURCE -g -O -pipe'
==> make install PREFIX=/usr/local/Cellar/vmdktool/1.4
🍺 /usr/local/Cellar/vmdktool/1.4: 4 files, 34.4K, built in 2 seconds