<p>There is a legacy CVS repository, which contains a large number of directories, sub-directories, and paths. There is also a large number of branches and tags that do not necessarilly cover all paths &amp; files - usually a subset. How can I find out, which branch / tag covers, which files and paths?</p>

<p>CVS log already provides the list of tags per file. The task requires me to transpose this into files per tag. I could not find such functionality in current WinCVS (CVSNT) implementation. Given ample empty cycles I can write a Perl script that would do that, the algorithm is not complex, but it needs to be done.</p>

<p>I would imagine there are some people who needed such information and solved this problem. Thus, I think should be a readily available (open source / free) tool for this.</p>

[{'answer_id': 28855, 'author': 'Johannes Hoff', 'author_id': 3102, 'author_profile': 'https://Stackoverflow.com/users/3102', 'pm_score': 0, 'selected': False, 'text': "<p>I don't know of any tool that can help you, but if you are writing your own, I can save you from one headace: Directories in CVS cannot be tagget. Only the files within them have tags (and that is what determines what is checked out when you check out a directory on a specific tag).</p>\n"}, {'answer_id': 34953, 'author': 'John Meagher', 'author_id': 3535, 'author_profile': 'https://Stackoverflow.com/users/3535', 'pm_score': 4, 'selected': True, 'text': '<p>To determine what tags apply to a particular file use:</p>\n\n<pre><code>cvs log &lt;filename&gt;\n</code></pre>\n\n<p>This will output all the versions of the file and what tags have been applied to the version.</p>\n\n<p>To determine what files are included in a single tag, the only thing I can think of is to check out using the tag and see what files come back.  The command for that is any of:</p>\n\n<pre><code>cvs update -r &lt;tagname&gt;\ncvs co &lt;modulename&gt; -r &lt;tagname&gt;\ncvs export &lt;modulename&gt; -r &lt;tagname&gt;\n</code></pre>\n'}, {'answer_id': 268124, 'author': 'Oliver Giesen', 'author_id': 9784, 'author_profile': 'https://Stackoverflow.com/users/9784', 'pm_score': 2, 'selected': False, 'text': "<p>You don't have to do an actual checkout. You can use the -n option to only simulate this:</p>\n\n<pre><code>cvs -n co -rTagName ModuleName\n</code></pre>\n\n<p>This will give you the names of all the files tagged TagName in module ModuleName.</p>\n"}, {'answer_id': 1035192, 'author': 'Community', 'author_id': -1, 'author_profile': 'https://Stackoverflow.com/users/-1', 'pm_score': 1, 'selected': False, 'text': '<p>The following command gives a list of files that are in that tag "yourTagName". The files are all marked as new, the revision info in "yourTagName".</p>\n\n<p>This command does a diff between 2000-01-01 and your tag, feel free to use another date that is earlier.</p>\n\n<pre><code>cvs -q rdiff -s -D 2000-01-01 -r yourTagName\n</code></pre>\n'}, {'answer_id': 1035262, 'author': 'Joakim Elofsson', 'author_id': 109869, 'author_profile': 'https://Stackoverflow.com/users/109869', 'pm_score': 4, 'selected': False, 'text': '<p>To list tags on a file one can also do:</p>\n\n<pre><code>cvs status -v &lt;file&gt;\n</code></pre>\n'}, {'answer_id': 4127032, 'author': 'ninjasmith', 'author_id': 289492, 'author_profile': 'https://Stackoverflow.com/users/289492', 'pm_score': 2, 'selected': False, 'text': "<p>the method quoted above didn't work for me</p>\n\n<p>cvs -q rdiff -s -D 2000-01-01 -r yourTagName</p>\n\n<p>however after a lot of messing around I've realised that</p>\n\n<p>cvs -q rdiff -s -D 2000-01-01 -r yourTagName ModuleName</p>\n\n<p>works</p>\n"}]
['https://Stackoverflow.com/questions/28817', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/2877/']