Thu, 10 Sep 2015 14:39:32 -0400
add .myclirc
#!/usr/bin/env ruby # Meant for use as a git hook: # CTAGS_HOOK=1 .git/hooks/ctags &>/dev/null </dev/null & # or an aliased cmd on demand: # git config alias.ctags '!.git/hooks/ctags' # or disable when you wish: # CTAGS_SKIP=1 git rebase exit if ENV['CTAGS_SKIP'] ctags = "/opt/local/bin/ctags" ctags = 'ctags' if !File.exists?(ctags) dir = `git rev-parse --show-toplevel`.chomp conf = "#{dir}/.git/ctags.conf" target = "#{dir}/.tags" tmp = "#{dir}/#{$$}.tags" opts = File.exists?(conf) ? "--options=#{conf}" : '' sleep 5 if ENV['CTAGS_HOOK'] open( target, File::RDONLY|File::CREAT, 0644 ) do |f| if ENV['CTAGS_HOOK'] exit unless f.flock( File::LOCK_EX|File::LOCK_NB ) exit unless ( Time.now - f.mtime ) > 60 end system( <<-CMD ) or exit $?.exitstatus git ls-files \ | #{ctags} --tag-relative -L - -f"#{tmp}" #{opts} \ && mv #{tmp} #{target} CMD end