Homebrew:如何使用pull请求中的公式

Ced*_* H. 29 git github-api

我是GIT和GitHub的新手(和Homebrew一样); 主存储库中emacs的公式在OS X Lion中被破坏,但是有一个"拉取请求"(https://github.com/mxcl/homebrew/pull/6518)可以修复问题(但它不是合并在主存储库中).

如何更新Homebrew存储库的本地副本以修复该公式?如果我管理它,如果主存储库包含该修复程序,该公式是否仍会更新?

如果术语不正确,请纠正我.

Dan*_*dio 56

您可以直接从pull请求安装Homebrew公式brew install $raw_pull_requst_url,例如:

brew install https://raw.github.com/ColinHebert/homebrew/538a99cc06a8f40b6ebcf2f4f8fd44d563c672cd/Library/Formula/emacs.rb
Run Code Online (Sandbox Code Playgroud)

为了找到拉取请求URL,可能有更好的方法,但是我找到你链接的拉取请求URL,点击Files Changed,然后点击View File @ 9b22d42,最后是Raw


eck*_*kes 15

Github上的文档描述了相当冗长(合并拉取请求部分):

在你的回购:

git checkout master
git remote add colin https://github.com/ColinHebert/homebrew.git
git fetch colin
Run Code Online (Sandbox Code Playgroud)

现在,您拥有了colinrepo 的完整内容(包括该repo中使用的提交哈希的知识).接下来是应用更改.文档说你应该做一个git merge,但是在我们的情况下这并不是那么好,因为科林将这些变化添加到他的master.如果他继续工作master(并做更多的提交),你也会得到这些改变.

:幸运的是,四次提交弥补补丁在拉请求被命名为ae28b29e,df10b69a,e8915488,87f2d1e5.您可以将它们应用于git cherry-pick:

git cherry-pick ae28b29e
git cherry-pick df10b69a
git cherry-pick e8915488
git cherry-pick 87f2d1e5
Run Code Online (Sandbox Code Playgroud)

而已.现在,您可以删除远程colin

git remote rm colin
Run Code Online (Sandbox Code Playgroud)

另一种可能性是下载补丁并应用它:

git checkout master
curl https://github.com/mxcl/homebrew/pull/6518.patch | git am
Run Code Online (Sandbox Code Playgroud)

拉取请求的补丁始终可用

https://github.com/<user>/<repo>/pull/<request_number>.patch
Run Code Online (Sandbox Code Playgroud)

  • +1一个很好的,明确的答案 - 关于与pull请求相关的补丁的提示可能会派上用场. (2认同)

Sky*_*ach 14

我发现以下对于休闲自制软件用户更好.

如果您正在搜索修复程序,则会有一个拉数:

| => 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)
Run Code Online (Sandbox Code Playgroud)

只是别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(+)
Run Code Online (Sandbox Code Playgroud)

然后进行安装/升级:

| => 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
Run Code Online (Sandbox Code Playgroud)