I'm trying to port my tagging workflow from Vim & ctags to Emacs & etags. I currently use git hooks to write a tags file to `.git/tags` in ctags format whenever I commit/merge/etc. This keeps each project indexed with an up-to-date tags file.

[fugitive.vim](https://github.com/tpope/vim-fugitive) makes sure Vim will look for tags in the `.git` directory associated with the current buffer. For a Ruby project that uses gems, [bundler.vim](https://github.com/tpope/vim-bundler) ensures Vim will look for tags in each included gem's directory.

This lets me navigate freely throughout various projects without having to tell Vim where to find tags. I've added a git hook to write tags to `.git/etags` in the etags format, but I'm not sure how to get Emacs to find tags files automatically. I'd like to avoid hard-coding the value of `tags-table-list` if possible.

Before I reinvent the wheel and translate the logic of fugitive.vim and bundler.vim into elisp, is there an existing solution for this kind of thing?