aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Howell2012-03-04 02:47:11 +0000
committerMax Howell2012-03-16 21:06:15 +0000
commita05a5fc8fb46b46ee59b791417a16dc0a2cfcd39 (patch)
tree9e517ea70e5268823c60f09a46e2c5f85d5c2b57
parentfb13b6a99e48984fc74675784f74cb409a4a7557 (diff)
downloadhomebrew-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--.gitignore1
-rw-r--r--Library/Homebrew/cmd/tap.rb15
-rw-r--r--Library/Homebrew/cmd/untap.rb13
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