Mercurial > hgsubversion
comparison svnwrap/svn_swig_wrapper.py @ 301:79440ed81011
Allow specifying a revision to stop at using the -H flag.
This is useful for converting repositories which have been deleted or
renamed, such as llvm-gcc-4-2 in the LLVM repositories which was
renamed to llvm-gcc-4.2 shortly after its creation.
Also, consolidate the two places in svn_swig_wrapper.py where a
default chunk size is specified to one, single variable declaration.
author | Dan Villiom Podlaski Christiansen <danchr@gmail.com> |
---|---|
date | Fri, 27 Mar 2009 03:21:45 +0100 |
parents | 4aba7542f6a9 |
children | ce676eff002b |
comparison
equal
deleted
inserted
replaced
300:4aba7542f6a9 | 301:79440ed81011 |
---|---|
26 """ | 26 """ |
27 | 27 |
28 class SubversionRepoCanNotDiff(Exception): | 28 class SubversionRepoCanNotDiff(Exception): |
29 """Exception raised when the svn API diff3() command cannot be used | 29 """Exception raised when the svn API diff3() command cannot be used |
30 """ | 30 """ |
31 | |
32 '''Default chunk size used in fetch_history_at_paths() and revisions().''' | |
33 _chunk_size = 1000 | |
31 | 34 |
32 def optrev(revnum): | 35 def optrev(revnum): |
33 optrev = core.svn_opt_revision_t() | 36 optrev = core.svn_opt_revision_t() |
34 optrev.kind = core.svn_opt_revision_number | 37 optrev.kind = core.svn_opt_revision_number |
35 optrev.value.number = revnum | 38 optrev.value.number = revnum |
143 """Wrapper for a Subversion repository. | 146 """Wrapper for a Subversion repository. |
144 | 147 |
145 This uses the SWIG Python bindings, and will only work on svn >= 1.4. | 148 This uses the SWIG Python bindings, and will only work on svn >= 1.4. |
146 It takes a required param, the URL. | 149 It takes a required param, the URL. |
147 """ | 150 """ |
148 def __init__(self, url='', username=''): | 151 def __init__(self, url='', username='', head=None): |
149 self.svn_url = url | 152 self.svn_url = url |
150 self.uname = username | 153 self.uname = username |
151 self.auth_baton_pool = core.Pool() | 154 self.auth_baton_pool = core.Pool() |
152 self.auth_baton = _create_auth_baton(self.auth_baton_pool) | 155 self.auth_baton = _create_auth_baton(self.auth_baton_pool) |
153 # self.init_ra_and_client() assumes that a pool already exists | 156 # self.init_ra_and_client() assumes that a pool already exists |
204 HEAD = property(HEAD) | 207 HEAD = property(HEAD) |
205 | 208 |
206 def START(self): | 209 def START(self): |
207 return 0 | 210 return 0 |
208 START = property(START) | 211 START = property(START) |
212 | |
213 def last_changed_rev(self): | |
214 try: | |
215 holder = [] | |
216 ra.get_log(self.ra, [''], | |
217 self.HEAD, 1, | |
218 1, #limit of how many log messages to load | |
219 True, # don't need to know changed paths | |
220 True, # stop on copies | |
221 lambda paths, revnum, author, date, message, pool: | |
222 holder.append(revnum), | |
223 self.pool) | |
224 | |
225 return holder[-1] | |
226 except core.SubversionException, e: | |
227 if e.apr_err not in [core.SVN_ERR_FS_NOT_FOUND]: | |
228 raise | |
229 else: | |
230 return self.HEAD | |
231 last_changed_rev = property(last_changed_rev) | |
209 | 232 |
210 def branches(self): | 233 def branches(self): |
211 """Get the branches defined in this repo assuming a standard layout. | 234 """Get the branches defined in this repo assuming a standard layout. |
212 | 235 |
213 This method should be eliminated; this class does not have | 236 This method should be eliminated; this class does not have |
300 revision = self.HEAD | 323 revision = self.HEAD |
301 r = ra.get_dir2(self.ra, dir, revision, core.SVN_DIRENT_KIND, self.pool) | 324 r = ra.get_dir2(self.ra, dir, revision, core.SVN_DIRENT_KIND, self.pool) |
302 folders, props, junk = r | 325 folders, props, junk = r |
303 return folders | 326 return folders |
304 | 327 |
305 def revisions(self, start=None, chunk_size=1000): | 328 def revisions(self, start=None, stop=None, chunk_size=_chunk_size): |
306 """Load the history of this repo. | 329 """Load the history of this repo. |
307 | 330 |
308 This is LAZY. It returns a generator, and fetches a small number | 331 This is LAZY. It returns a generator, and fetches a small number |
309 of revisions at a time. | 332 of revisions at a time. |
310 | 333 |