2 # ====================================================================
3 # Copyright (c) 2000-2006 CollabNet. All rights reserved.
5 # This software is licensed as described in the file COPYING, which
6 # you should have received as part of this distribution. The terms
7 # are also available at http://subversion.tigris.org/license-1.html.
8 # If newer versions of this license are posted there, you may use a
9 # newer version instead, at your option.
11 # This software consists of voluntary contributions made by many
12 # individuals. For exact contribution history, see the revision
13 # history and logs, available at http://cvs2svn.tigris.org/.
14 # ====================================================================
18 Report information about CVS revisions, tags, and branches in a CVS
19 repository by examining the temporary files output by pass 1 of cvs2svn
20 on that repository. NOTE: You have to run the conversion pass yourself!
23 import sys
, os
, os
.path
25 from cvs2svn_lib
.common
import DB_OPEN_READ
26 from cvs2svn_lib
.config
import CVS_FILES_DB
27 from cvs2svn_lib
.config
import CVS_ITEMS_DB
28 from cvs2svn_lib
.config
import CVS_ITEMS_ALL_DATAFILE
29 from cvs2svn_lib
.cvs_file_database
import CVSFileDatabase
30 from cvs2svn_lib
.cvs_item_database
import CVSItemDatabase
33 cvs_files_db
= CVSFileDatabase(CVS_FILES_DB
, DB_OPEN_READ
)
34 cvs_items_db
= CVSItemDatabase(cvs_files_db
, CVS_ITEMS_DB
, DB_OPEN_READ
)
35 fp
= open(CVS_ITEMS_ALL_DATAFILE
, 'r')
47 line_count
= line_count
+ 1
52 cvs_rev_key
= line
.strip()
53 cvs_rev
= cvs_items_db
[cvs_rev_key
]
56 num_tags
= len(cvs_rev
.tags
)
57 max_tags
= (num_tags
> max_tags
) \
58 and num_tags
or max_tags
59 total_tags
= total_tags
+ num_tags
60 for tag
in cvs_rev
.tags
:
64 num_branches
= len(cvs_rev
.branches
)
65 max_branches
= (num_branches
> max_branches
) \
66 and num_branches
or max_branches
67 total_branches
= total_branches
+ num_branches
68 for branch
in cvs_rev
.branches
:
69 branches
[branch
] = None
73 symbols
.update(branches
)
75 num_symbols
= len(symbols
.keys())
76 num_tags
= len(tags
.keys())
77 num_branches
= len(branches
.keys())
78 avg_tags
= total_tags
* 1.0 / line_count
79 avg_branches
= total_branches
* 1.0 / line_count
81 print ' Total CVS Revisions: %d\n' \
82 ' Total Unique Tags: %d\n' \
83 ' Peak Revision Tags: %d\n' \
84 ' Avg. Tags/Revision: %2.1f\n' \
85 ' Total Unique Branches: %d\n' \
86 'Peak Revision Branches: %d\n' \
87 'Avg. Branches/Revision: %2.1f\n' \
88 ' Total Unique Symbols: %d%s\n' \
97 num_symbols
== num_tags
+ num_branches
and ' ' or ' (!)',
101 if __name__
== "__main__":
104 print 'Usage: %s /path/to/cvs2svn-temporary-directory' \
105 % (os
.path
.basename(sys
.argv
[0]))
108 os
.chdir(sys
.argv
[1])