Maintaining cross-reference in programs using (c)tags

A feature that appealed to me at some point was that you could generate a file with references between different program files in the same repository, so that you can easily navigate with eg. VIm.

I made the following commands to help me use this functionality:

tags.build [<repos>]

build tags file for repository (by name or ".")

tags.check [<repos>]

check if rebuilding tags file is necessary

tags.update [<repos>]

rebuild tags file for repository (by name or ".") if necessary

I found it somewhat cumbersome to work with and it fits badly with how I currently work (many files open at the same time versus opening a reference in the same file) so I don't use this much anymore.