# HG changeset patch # User Dan Villiom Podlaski Christiansen # Date 1241166539 -7200 # Node ID ce676eff002b728017f4ad2a848df9c605cbf34b # Parent f423a87808322df9e0d52fd9d60e7fd32626bf11# Parent ba8e91a7c077b88645a7a5680060decee17e457b First merge, totally untested. diff --git a/.hgignore b/.hgignore --- a/.hgignore +++ b/.hgignore @@ -1,5 +1,6 @@ syntax:glob *.pyc +*.pyo .DS_Store *.swp *~ diff --git a/__init__.py b/__init__.py diff --git a/hg_delta_editor.py b/hg_delta_editor.py --- a/hg_delta_editor.py +++ b/hg_delta_editor.py @@ -119,6 +119,9 @@ class HgChangeReceiver(delta.Editor): self.tag_locations = tag_locations pickle_atomic(self.tag_locations, self.tag_locations_file, self.meta_data_dir) + # ensure nested paths are handled properly + self.tag_locations.sort() + self.tag_locations.reverse() self.clear_current_info() self.author_host = author_host @@ -256,6 +259,9 @@ class HgChangeReceiver(delta.Editor): def _path_and_branch_for_path(self, path, existing=True): return self._split_branch_path(path, existing=existing)[:2] + def _branch_for_path(self, path, existing=True): + return self._path_and_branch_for_path(path, existing=existing)[1] + def _localname(self, path): """Compute the local name for a branch located at path. """ @@ -393,6 +399,10 @@ class HgChangeReceiver(delta.Editor): Otherwise, returns False. """ + return self._split_tag_path(path)[-1] or False + + def _split_tag_path(self, path): + r = (None, None, None) path = self._normalize_path(path) for tags_path in self.tag_locations: if path and (path.startswith(tags_path) and @@ -904,8 +914,8 @@ class HgChangeReceiver(delta.Editor): # parentctx is not an ancestor of childctx, files are unrelated return False - def add_file(self, path, parent_baton, copyfrom_path, - copyfrom_revision, file_pool=None): + def add_file(self, path, parent_baton=None, copyfrom_path=None, + copyfrom_revision=None, file_pool=None): self.current_file = None self.base_revision = None if path in self.deleted_files: diff --git a/notes/hgsubversion.png b/notes/hgsubversion.png new file mode 100644 index 0000000000000000000000000000000000000000..34bd80af419ac4a16868d583974febd7bda102fb GIT binary patch literal 88113 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≥ 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�?jjj% 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 diff --git a/notes/hgsubversion.svg b/notes/hgsubversion.svg new file mode 100644 --- /dev/null +++ b/notes/hgsubversion.svg @@ -0,0 +1,223 @@ + + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/stupid.py b/stupid.py diff --git a/svnwrap/svn_swig_wrapper.py b/svnwrap/svn_swig_wrapper.py --- a/svnwrap/svn_swig_wrapper.py +++ b/svnwrap/svn_swig_wrapper.py @@ -6,12 +6,16 @@ import sys import tempfile import urlparse import urllib +import hashlib +import collections from svn import client from svn import core from svn import delta from svn import ra +from mercurial import util as hgutil + def version(): return '%d.%d.%d' % (core.SVN_VER_MAJOR, core.SVN_VER_MINOR, core.SVN_VER_MICRO) @@ -26,6 +30,9 @@ class SubversionRepoCanNotDiff(Exception """Exception raised when the svn API diff3() command cannot be used """ +'''Default chunk size used in fetch_history_at_paths() and revisions().''' +_chunk_size = 1000 + def optrev(revnum): optrev = core.svn_opt_revision_t() optrev.kind = core.svn_opt_revision_number @@ -34,16 +41,18 @@ def optrev(revnum): svn_config = core.svn_config_get_config(None) class RaCallbacks(ra.Callbacks): - def open_tmp_file(self, pool): #pragma: no cover + @staticmethod + def open_tmp_file(pool): #pragma: no cover (fd, fn) = tempfile.mkstemp() os.close(fd) return fn - def get_client_string(self, pool): + @staticmethod + def get_client_string(pool): return 'hgsubversion' - def user_pass_prompt(realm, default_username, ms, pool): #pragma: no cover + # FIXME: should use getpass() and username() from mercurial.ui creds = core.svn_auth_cred_simple_t() creds.may_save = ms if default_username: @@ -117,16 +126,38 @@ def parse_url(url): url = urlparse.urlunparse((scheme, netloc, path, params, query, fragment)) return (user, passwd, url) -class Revision(object): +class Revision(tuple): """Wrapper for a Subversion revision. + + Derives from tuple in an attempt to minimise the memory footprint. """ - def __init__(self, revnum, author, message, date, paths, strip_path=''): - self.revnum, self.author, self.message = revnum, author, message - self.date = date - self.paths = {} + def __new__(self, revnum, author, message, date, paths, strip_path=''): + _paths = {} if paths: for p in paths: - self.paths[p[len(strip_path):]] = paths[p] + _paths[p[len(strip_path):]] = paths[p] + return tuple.__new__(self, + (revnum, author, message, date, _paths)) + + def get_revnum(self): + return self[0] + revnum = property(get_revnum) + + def get_author(self): + return self[1] + author = property(get_author) + + def get_message(self): + return self[2] + message = property(get_message) + + def get_date(self): + return self[3] + date = property(get_date) + + def get_paths(self): + return self[4] + paths = property(get_paths) def __str__(self): return 'r%d by %s' % (self.revnum, self.author) @@ -142,7 +173,7 @@ class SubversionRepo(object): This uses the SWIG Python bindings, and will only work on svn >= 1.4. It takes a required param, the URL. """ - def __init__(self, url='', username='', password=''): + def __init__(self, url='', username='', password='', head=None): parsed = parse_url(url) # --username and --password override URL credentials self.username = username or parsed[0] @@ -150,6 +181,8 @@ class SubversionRepo(object): self.svn_url = parsed[2] self.auth_baton_pool = core.Pool() self.auth_baton = _create_auth_baton(self.auth_baton_pool) + # self.init_ra_and_client() assumes that a pool already exists + self.pool = core.Pool() self.init_ra_and_client() self.uuid = ra.get_uuid(self.ra, self.pool) @@ -181,8 +214,11 @@ class SubversionRepo(object): callbacks = RaCallbacks() callbacks.auth_baton = self.auth_baton self.callbacks = callbacks - self.ra = ra.open2(self.svn_url.encode('utf-8'), callbacks, - svn_config, self.pool) + try: + self.ra = ra.open2(self.svn_url.encode('utf-8'), callbacks, + svn_config, self.pool) + except core.SubversionException, e: + raise hgutil.Abort(e.args[0]) def HEAD(self): return ra.get_latest_revnum(self.ra, self.pool) @@ -192,8 +228,31 @@ class SubversionRepo(object): return 0 START = property(START) + def last_changed_rev(self): + try: + holder = [] + ra.get_log(self.ra, [''], + self.HEAD, 1, + 1, #limit of how many log messages to load + True, # don't need to know changed paths + True, # stop on copies + lambda paths, revnum, author, date, message, pool: + holder.append(revnum), + self.pool) + + return holder[-1] + except core.SubversionException, e: + if e.apr_err not in [core.SVN_ERR_FS_NOT_FOUND]: + raise + else: + return self.HEAD + last_changed_rev = property(last_changed_rev) + def branches(self): """Get the branches defined in this repo assuming a standard layout. + + This method should be eliminated; this class does not have + sufficient knowledge to yield all known tags. """ branches = self.list_dir('branches').keys() branch_info = {} @@ -216,11 +275,22 @@ class SubversionRepo(object): """Get the current tags in this repo assuming a standard layout. This returns a dictionary of tag: (source path, source rev) + + This method should be eliminated; this class does not have + sufficient knowledge to yield all known tags. """ return self.tags_at_rev(self.HEAD) tags = property(tags) def tags_at_rev(self, revision): + """Get the tags in this repo at the given revision, assuming a + standard layout. + + This returns a dictionary of tag: (source path, source rev) + + This method should be eliminated; this class does not have + sufficient knowledge to yield all known tags. + """ try: tags = self.list_dir('tags', revision=revision).keys() except core.SubversionException, e: @@ -275,7 +345,7 @@ class SubversionRepo(object): folders, props, junk = r return folders - def revisions(self, start=None, chunk_size=1000): + def revisions(self, start=None, stop=None, chunk_size=_chunk_size): """Load the history of this repo. This is LAZY. It returns a generator, and fetches a small number @@ -288,35 +358,56 @@ class SubversionRepo(object): chunk_size=chunk_size) def fetch_history_at_paths(self, paths, start=None, stop=None, - chunk_size=1000): - revisions = [] - def callback(paths, revnum, author, date, message, pool): - r = Revision(revnum, author, message, date, paths, - strip_path=self.subdir) - revisions.append(r) + chunk_size=_chunk_size): + '''TODO: This method should be merged with self.revisions() as + they are now functionally equivalent.''' if not start: start = self.START if not stop: stop = self.HEAD while stop > start: - ra.get_log(self.ra, - paths, - start+1, - stop, - chunk_size, #limit of how many log messages to load - True, # don't need to know changed paths - True, # stop on copies - callback, - self.pool) - if len(revisions) < chunk_size: - # this means there was no history for the path, so force the - # loop to exit - start = stop + def callback(paths, revnum, author, date, message, pool): + r = Revision(revnum, author, message, date, paths, + strip_path=self.subdir) + revisions.append(r) + # use a queue; we only access revisions in a FIFO manner + revisions = collections.deque() + + try: + # TODO: using min(start + chunk_size, stop) may be preferable; + # ra.get_log(), even with chunk_size set, takes a while + # when converting the 65k+ rev. in LLVM. + ra.get_log(self.ra, + paths, + start+1, + stop, + chunk_size, #limit of how many log messages to load + True, # don't need to know changed paths + True, # stop on copies + callback, + self.pool) + except core.SubversionException, e: + if e.apr_err not in [core.SVN_ERR_FS_NOT_FOUND]: + raise + else: + raise hgutil.Abort('%s not found at revision %d!' + % (self.subdir.rstrip('/'), stop)) + + while len(revisions) > 1: + yield revisions.popleft() + # Now is a good time to do a quick garbage collection. + gc.collect(0) + + if len(revisions) == 0: + # exit the loop; there is no history for the path. + break else: - start = revisions[-1].revnum - while len(revisions) > 0: - yield revisions[0] - revisions.pop(0) + r = revisions.popleft() + start = r.revnum + yield r + self.init_ra_and_client() + # Now is a good time to do a thorough garbage colection. + gc.collect() def commit(self, paths, message, file_data, base_revision, addeddirs, deleteddirs, properties, copies): diff --git a/tests/__init__.py b/tests/__init__.py --- a/tests/__init__.py +++ b/tests/__init__.py @@ -1,3 +1,5 @@ import sys import os sys.path.append(os.path.dirname(os.path.dirname(__file__))) + +from run import * diff --git a/tests/run.py b/tests/run.py --- a/tests/run.py +++ b/tests/run.py @@ -49,5 +49,10 @@ def suite(): ]) if __name__ == '__main__': - runner = unittest.TextTestRunner() + kwargs = { 'descriptions': 2 } + if '-v' in sys.argv: + kwargs['descriptions'] = 3 + kwargs['verbosity'] = 2 + + runner = unittest.TextTestRunner(**kwargs) runner.run(suite())