Thu, 29 Sep 2016 14:25:47 -0400
make this a little more specific
#!/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 = `hg root`.chomp conf = "#{dir}/.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 hg stat -Aqn \ | #{ctags} --tag-relative -L - -f"#{tmp}" #{opts} \ && mv #{tmp} #{target} CMD end