Mercurial > hgsubversion
comparison svncommand.py @ 208:de3807ceea5c
Removed verify_* commands and replaced them with a shell script to pass to hg bisect --command.
author | Augie Fackler <durin42@gmail.com> |
---|---|
date | Mon, 09 Mar 2009 14:13:48 -0500 |
parents | 77812f98e250 |
children | 2165461d2dd8 1611834e39ee |
comparison
equal
deleted
inserted
replaced
207:b20a6c149021 | 208:de3807ceea5c |
---|---|
100 ui.status('Ambiguous revision!\n') | 100 ui.status('Ambiguous revision!\n') |
101 ui.status('\n'.join(['%s on %s' % (node.hex(a[0]), a[1]) for a in | 101 ui.status('\n'.join(['%s on %s' % (node.hex(a[0]), a[1]) for a in |
102 answers]+[''])) | 102 answers]+[''])) |
103 return 1 | 103 return 1 |
104 update = register_subcommand('up')(update) | 104 update = register_subcommand('up')(update) |
105 | |
106 | |
107 def verify_revision(ui, args, repo, force=False, **opts): | |
108 """verify a single converted revision | |
109 Note: This wipes your working copy and then exports the corresponding | |
110 Subversion into your working copy to verify. Use with caution. | |
111 """ | |
112 assert len(args) == 1 | |
113 if not force: | |
114 assert repo.status(ignored=True, | |
115 unknown=True) == ([], [], [], [], [], [], []) | |
116 rev = int(args[0]) | |
117 wc_path = os.path.dirname(repo.path) | |
118 svn_url = open(os.path.join(repo.path, 'svn', 'url')).read() | |
119 svn = svnwrap.SubversionRepo(svn_url, username=merc_util.getuser()) | |
120 util.wipe_all_files(wc_path) | |
121 if update(ui, args, repo, clean=True) == 0: | |
122 util.wipe_all_files(wc_path) | |
123 br = repo.dirstate.branch() | |
124 if br == 'default': | |
125 br = None | |
126 if br: | |
127 diff_path = 'branches/%s' % br | |
128 else: | |
129 diff_path = 'trunk' | |
130 svn.fetch_all_files_to_dir(diff_path, rev, wc_path) | |
131 stat = repo.status(unknown=True) | |
132 ignored = [s for s in stat[4] | |
133 if '/.svn/' not in s and not s.startswith('.svn/')] | |
134 stat = stat[0:4] | |
135 if stat != ([], [], [], [],) or ignored != []: | |
136 ui.status('Something is wrong with this revision.\n') | |
137 return 2 | |
138 else: | |
139 ui.status('OK.\n') | |
140 return 0 | |
141 return 1 | |
142 verify_revision = register_subcommand('verify_revision')(verify_revision) | |
143 | |
144 def verify_all_revisions(ui, args, repo, **opts): | |
145 """verify converted revisions; all or starting at a revision | |
146 | |
147 Note: This is *extremely* abusive of the Subversion server. It exports every | |
148 revision of the code one revision at a time. | |
149 """ | |
150 assert repo.status(ignored=True, | |
151 unknown=True) == ([], [], [], [], [], [], []) | |
152 start_rev = 0 | |
153 args = list(args) | |
154 if args: | |
155 start_rev = int(args.pop(0)) | |
156 revmap = util.parse_revmap(os.path.join(repo.path, 'svn', 'rev_map')) | |
157 revs = sorted(revmap.keys()) | |
158 for revnum, br in revs: | |
159 if revnum < start_rev: | |
160 continue | |
161 res = verify_revision(ui, [revnum], repo, force=True) | |
162 if res == 0: | |
163 print revnum, 'verfied' | |
164 elif res == 1: | |
165 print revnum, 'skipped' | |
166 else: | |
167 print revnum, 'failed' | |
168 return 1 | |
169 return 0 | |
170 verify_all_revisions = register_subcommand('verify_all_revisions')(verify_all_revisions) |