Mercurial > hgsubversion
comparison push_cmd.py @ 173:f244eaee5069
push_cmd: make _isdir() a standalone function
| author | Patrick Mezard <pmezard@gmail.com> |
|---|---|
| date | Tue, 30 Dec 2008 20:34:03 -0600 |
| parents | b77a4caaf77b |
| children | 2412800b1258 |
comparison
equal
deleted
inserted
replaced
| 172:84fbf1469a31 | 173:f244eaee5069 |
|---|---|
| 89 hge = hg_delta_editor.HgChangeReceiver(hg_repo_path, ui_=ui) | 89 hge = hg_delta_editor.HgChangeReceiver(hg_repo_path, ui_=ui) |
| 90 svn_commit_hashes = dict(zip(hge.revmap.itervalues(), hge.revmap.iterkeys())) | 90 svn_commit_hashes = dict(zip(hge.revmap.itervalues(), hge.revmap.iterkeys())) |
| 91 merc_util._encoding = oldencoding | 91 merc_util._encoding = oldencoding |
| 92 return 0 | 92 return 0 |
| 93 | 93 |
| 94 def _isdir(svn, branchpath, svndir): | |
| 95 try: | |
| 96 svn.list_dir('%s/%s' % (branchpath, svndir)) | |
| 97 return True | |
| 98 except core.SubversionException: | |
| 99 return False | |
| 100 | |
| 94 def _getdirchanges(svn, branchpath, parentctx, ctx, changedfiles): | 101 def _getdirchanges(svn, branchpath, parentctx, ctx, changedfiles): |
| 95 """Compute directories to add or delete when moving from parentctx | 102 """Compute directories to add or delete when moving from parentctx |
| 96 to ctx, assuming only 'changedfiles' files changed. | 103 to ctx, assuming only 'changedfiles' files changed. |
| 97 | 104 |
| 98 Return (added, deleted) where 'added' is the list of all added | 105 Return (added, deleted) where 'added' is the list of all added |
| 100 Intermediate directories are included: if a/b/c is new and requires | 107 Intermediate directories are included: if a/b/c is new and requires |
| 101 the addition of a/b and a, those will be listed too. Intermediate | 108 the addition of a/b and a, those will be listed too. Intermediate |
| 102 deleted directories are also listed, but item order of undefined | 109 deleted directories are also listed, but item order of undefined |
| 103 in either list. | 110 in either list. |
| 104 """ | 111 """ |
| 105 def exists(svndir): | |
| 106 try: | |
| 107 svn.list_dir('%s/%s' % (branchpath, svndir)) | |
| 108 return True | |
| 109 except core.SubversionException: | |
| 110 return False | |
| 111 | |
| 112 def finddirs(path): | 112 def finddirs(path): |
| 113 pos = path.rfind('/') | 113 pos = path.rfind('/') |
| 114 while pos != -1: | 114 while pos != -1: |
| 115 yield path[:pos] | 115 yield path[:pos] |
| 116 pos = path.rfind('/', 0, pos) | 116 pos = path.rfind('/', 0, pos) |
| 138 return added, deleted | 138 return added, deleted |
| 139 olddirs = getctxdirs(parentctx, changeddirs) | 139 olddirs = getctxdirs(parentctx, changeddirs) |
| 140 newdirs = getctxdirs(ctx, changeddirs) | 140 newdirs = getctxdirs(ctx, changeddirs) |
| 141 | 141 |
| 142 for d in newdirs: | 142 for d in newdirs: |
| 143 if d not in olddirs and not exists(d): | 143 if d not in olddirs and not _isdir(svn, branchpath, d): |
| 144 added.append(d) | 144 added.append(d) |
| 145 | 145 |
| 146 for d in olddirs: | 146 for d in olddirs: |
| 147 if d not in newdirs and exists(d): | 147 if d not in newdirs and _isdir(svn, branchpath, d): |
| 148 deleted.append(d) | 148 deleted.append(d) |
| 149 | 149 |
| 150 return added, deleted | 150 return added, deleted |
| 151 | 151 |
| 152 | 152 |
