diff options
| author | Max Howell | 2012-03-04 02:47:11 +0000 | 
|---|---|---|
| committer | Max Howell | 2012-03-16 21:06:15 +0000 | 
| commit | a05a5fc8fb46b46ee59b791417a16dc0a2cfcd39 (patch) | |
| tree | 9e517ea70e5268823c60f09a46e2c5f85d5c2b57 | |
| parent | fb13b6a99e48984fc74675784f74cb409a4a7557 (diff) | |
| download | homebrew-a05a5fc8fb46b46ee59b791417a16dc0a2cfcd39.tar.bz2 | |
Prevent tapped symlinks showing up in git status
The symlinks taps write to Formula show up in git status, but this trick prevents this. brew-(un)tap maintain a .gitignore in Formula that contains all the symlinks brew-tap creates.
We add the .gitignore to the root .gitignore and TADA! Magic.
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | Library/Homebrew/cmd/tap.rb | 15 | ||||
| -rw-r--r-- | Library/Homebrew/cmd/untap.rb | 13 | 
3 files changed, 26 insertions, 3 deletions
| diff --git a/.gitignore b/.gitignore index 6a7ee0e63..ace8a694c 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@  .DS_Store  /Library/LinkedKegs  /Library/Taps +/Library/Formula/.gitignore diff --git a/Library/Homebrew/cmd/tap.rb b/Library/Homebrew/cmd/tap.rb index e1f53db8b..a311af7f0 100644 --- a/Library/Homebrew/cmd/tap.rb +++ b/Library/Homebrew/cmd/tap.rb @@ -1,3 +1,5 @@ +require 'tempfile' +  HOMEBREW_LIBRARY = HOMEBREW_REPOSITORY/"Library"  module Homebrew extend self @@ -19,12 +21,23 @@ module Homebrew extend self      raise "Already tapped!" if tapd.directory?      abort unless system "git clone https://github.com/#{user}/homebrew-#{repo} #{tapd}" +    gitignores = (HOMEBREW_LIBRARY/"Formula/.gitignore").read.split rescue [] +      cd HOMEBREW_LIBRARY/"Formula"      tapd.find_formula do |relative_pathname|        # using the system ln is the only way to get relative symlinks        system "ln -s ../Taps/#{user}-#{repo}/#{relative_pathname} 2>/dev/null" -      opoo "#{relative_pathname.basename(".rb")} conflicts" unless $?.success? +      if $?.success? +        gitignores << relative_pathname.basename.to_s +      else +        opoo "#{relative_pathname.basename, ".rb"} conflicts" +      end      end + +    tf = Tempfile.new("brew-tap") +    tf.write(gitignores.uniq.join("\n")) +    tf.close +    mv tf.path, "#{HOMEBREW_PREFIX}/Library/Formula/.gitignore"    end    private diff --git a/Library/Homebrew/cmd/untap.rb b/Library/Homebrew/cmd/untap.rb index 78778e6fc..80d38934b 100644 --- a/Library/Homebrew/cmd/untap.rb +++ b/Library/Homebrew/cmd/untap.rb @@ -1,4 +1,5 @@  require 'cmd/tap' # for Pathname.recursive_formula +require 'tempfile'  module Homebrew extend self    def untap @@ -7,11 +8,19 @@ module Homebrew extend self      raise "No such tap!" unless tapd.directory? +    gitignores = (HOMEBREW_PREFIX/"Library/Formula/.gitignore").read.split rescue [] +      tapd.find_formula do |pn| -      pn = HOMEBREW_REPOSITORY/"Library/Formula"/pn.basename +      bn = pn.basename.to_s +      pn = HOMEBREW_REPOSITORY/"Library/Formula"/bn        pn.delete if pn.symlink? and pn.realpath.to_s =~ %r[^#{tapd.realpath}] +      gitignores.delete(bn)      end -      rm_rf tapd + +    tf = Tempfile.new("brew-untap") +    tf.write(gitignores.join("\n")) +    tf.close +    mv tf.path, "#{HOMEBREW_PREFIX}/Library/Formula/.gitignore"    end  end | 
