diff options
| author | Mike McQuaid | 2013-10-05 20:39:51 +0100 | 
|---|---|---|
| committer | Mike McQuaid | 2013-10-10 16:46:47 +0100 | 
| commit | c1e06c65da38e51487c028b720efac0edb1f4276 (patch) | |
| tree | 08abc8b8cd71f4a1b8273824136885a18f977e60 | |
| parent | 2dc871b3b764613c632c94c6a3f49aba3836bdab (diff) | |
| download | homebrew-c1e06c65da38e51487c028b720efac0edb1f4276.tar.bz2 | |
git_etc: update based on bottle etc/var changes.
| -rw-r--r-- | Library/Homebrew/formula.rb | 7 | ||||
| -rw-r--r-- | Library/Homebrew/formula_installer.rb | 68 | ||||
| -rw-r--r-- | Library/Homebrew/global.rb | 2 | ||||
| -rw-r--r-- | Library/Homebrew/install_renamed.rb | 2 | ||||
| -rw-r--r-- | Library/Homebrew/keg.rb | 2 | ||||
| -rw-r--r-- | Library/Homebrew/test/testing_env.rb | 1 | 
6 files changed, 46 insertions, 36 deletions
| diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index d640aa1e8..487af9f8b 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -165,12 +165,7 @@ class Formula    def kext_prefix; prefix+'Library/Extensions' end    # configuration needs to be preserved past upgrades -  def etc -    etc = HOMEBREW_PREFIX+'etc' -    etc = prefix+etc if HOMEBREW_GIT_ETC -    etc.extend(InstallRenamed) -    etc -  end +  def etc; (HOMEBREW_PREFIX+'etc').extend(InstallRenamed) end    # generally we don't want var stuff inside the keg    def var; HOMEBREW_PREFIX+'var' end diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index e27f636f3..b5b566bd0 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -79,9 +79,15 @@ class FormulaInstaller      etc = HOMEBREW_PREFIX+'etc'      etc.cd do        quiet_system 'git', 'init' unless (etc+'.git').directory? -      quiet_system 'git', 'checkout', '-B', "#{f.name}-last" -      system 'git', 'add', '--all', '.' -      system 'git', 'commit', '-m', "#{f.name}-#{f.version}: preinstall" +      quiet_system 'git', 'checkout', '-B', "#{f.name}-preinstall" +      unless quiet_system 'git', 'diff', '--exit-code', 'HEAD' +        system 'git', 'add', '--all', '.' +        system 'git', 'commit', '-m', "#{f.name}-#{f.version}: preinstall" +      end + +      unless quiet_system 'git', 'rev-parse', 'master' +        quiet_system 'git', 'branch', 'master' +      end      end    end @@ -89,37 +95,49 @@ class FormulaInstaller      return unless quiet_system 'git', '--version'      etc = HOMEBREW_PREFIX+'etc' -    keg_etc_files = Dir[f.etc+'*'] -    last_branch = "#{f.name}-last" +    preinstall_branch = "#{f.name}-preinstall"      default_branch = "#{f.name}-default"      merged = false      etc.cd do -      FileUtils.cp_r keg_etc_files, etc - -      system 'git', 'add', '--all', '.' -      if quiet_system 'git', 'diff', '--exit-code', default_branch -        quiet_system 'git', 'reset', '--hard' +      if quiet_system 'git', 'diff', '--exit-code', preinstall_branch +        quiet_system 'git', 'branch', default_branch +        quiet_system 'git', 'branch', '-D', preinstall_branch +      elsif not quiet_system 'git', 'rev-parse', default_branch +        quiet_system 'git', 'checkout', '-B', default_branch +        quiet_system 'git', 'add', '--all', '.' +        system 'git', 'commit', '-m', "#{f.name}-#{f.version}: default" +        quiet_system 'git', 'branch', '-D', preinstall_branch        else -        if quiet_system 'git', 'rev-parse', 'master' -          quiet_system 'git', 'checkout', '-f', 'master' -          FileUtils.cp_r keg_etc_files, etc -          quiet_system 'git', 'add', '--all', '.' -        else -          quiet_system 'git', 'checkout', '-b' 'master' -        end +        previous_default_branch = `git rev-parse #{default_branch}`.strip +        quiet_system 'git', 'checkout', '-B', default_branch +        quiet_system 'git', 'add', '--all', '.'          system 'git', 'commit', '-m', "#{f.name}-#{f.version}: default" -        quiet_system 'git', 'branch', '-f', default_branch -        merged = true unless quiet_system 'git' 'merge-base', '--is-ancestor', -                                          last_branch, 'master' -        system 'git', 'merge', '--no-ff', '--no-edit', -               '-X', 'theirs', last_branch +        default_unchanged = quiet_system('git', 'diff', '--exit-code', \ +                                                previous_default_branch) + +        if default_unchanged +          system 'git', 'reset', '--hard', previous_default_branch +        end + +        quiet_system 'git', 'checkout', 'master' +        quiet_system 'git', 'reset', '--hard', preinstall_branch + +        unless default_unchanged +          merge_ff = quiet_system 'git', 'merge', '--ff-only', '--no-edit', +                                         '-X', 'ours', default_branch +          unless merge_ff +            merged = true +            system 'git', 'merge', '--no-ff', '--no-edit', +                          '-X', 'ours', default_branch +          end +        end        end        if merged          ohai "Configuration Files"          puts "Your configuration files for #{f.name} in etc were merged:" -        puts "To reverse this merge: git reset --hard #{last_branch}" +        puts "To reverse this merge: git reset --hard #{preinstall_branch}"          puts "To restore defaults:   git reset --hard #{default_branch}"        end      end @@ -175,7 +193,7 @@ class FormulaInstaller      @@attempted << f -    #git_etc_preinstall if HOMEBREW_GIT_ETC +    git_etc_preinstall if ENV['HOMEBREW_GIT_ETC']      @poured_bottle = false @@ -208,7 +226,7 @@ class FormulaInstaller        opoo "#{f.name} post_install failed. Rerun with `brew postinstall #{f.name}`."      end -    #git_etc_postinstall if HOMEBREW_GIT_ETC +    git_etc_postinstall if ENV['HOMEBREW_GIT_ETC']      opoo "Nothing was installed to #{f.prefix}" unless f.installed?    end diff --git a/Library/Homebrew/global.rb b/Library/Homebrew/global.rb index a9a8cbe30..36e5cf992 100644 --- a/Library/Homebrew/global.rb +++ b/Library/Homebrew/global.rb @@ -84,8 +84,6 @@ HOMEBREW_USER_AGENT = "Homebrew #{HOMEBREW_VERSION} (Ruby #{RUBY_VERSION}-#{RUBY  HOMEBREW_CURL_ARGS = '-f#LA' -HOMEBREW_GIT_ETC = !ENV['HOMEBREW_GIT_ETC'].nil? -  module Homebrew extend self    include FileUtils diff --git a/Library/Homebrew/install_renamed.rb b/Library/Homebrew/install_renamed.rb index 5f34eb674..105791d2b 100644 --- a/Library/Homebrew/install_renamed.rb +++ b/Library/Homebrew/install_renamed.rb @@ -15,7 +15,7 @@ module InstallRenamed    private    def append_default_if_different src, dst -    if File.file? dst and !FileUtils.identical?(src, dst) and !HOMEBREW_GIT_ETC +    if File.file? dst and !FileUtils.identical?(src, dst) and !ENV['HOMEBREW_GIT_ETC']        dst += ".default"      end      dst diff --git a/Library/Homebrew/keg.rb b/Library/Homebrew/keg.rb index 6a1784acf..4a3fd2ddd 100644 --- a/Library/Homebrew/keg.rb +++ b/Library/Homebrew/keg.rb @@ -114,7 +114,7 @@ class Keg < Pathname      # yeah indeed, you have to force anything you need in the main tree into      # these dirs REMEMBER that *NOT* everything needs to be in the main tree -    link_dir('etc', mode) {:mkpath} unless HOMEBREW_GIT_ETC +    link_dir('etc', mode) {:mkpath}      link_dir('bin', mode) {:skip_dir}      link_dir('sbin', mode) {:skip_dir}      link_dir('include', mode) {:link} diff --git a/Library/Homebrew/test/testing_env.rb b/Library/Homebrew/test/testing_env.rb index e9532bb96..9bc5d871f 100644 --- a/Library/Homebrew/test/testing_env.rb +++ b/Library/Homebrew/test/testing_env.rb @@ -25,7 +25,6 @@ HOMEBREW_USER_AGENT    = 'Homebrew'  HOMEBREW_WWW           = 'http://example.com'  HOMEBREW_CURL_ARGS     = '-fsLA'  HOMEBREW_VERSION       = '0.9-test' -HOMEBREW_GIT_ETC       = false  RUBY_BIN = Pathname.new(RbConfig::CONFIG['bindir'])  RUBY_PATH = RUBY_BIN + RbConfig::CONFIG['ruby_install_name'] + RbConfig::CONFIG['EXEEXT'] | 
