Mercurial > hgsubversion
comparison fetch_command.py @ 76:6c62bd201785
SubversionRepo: make get_file() return the file mode
It is cheap to get it, and it will be useful to fetch revisions.
| author | Patrick Mezard <pmezard@gmail.com> |
|---|---|
| date | Sun, 09 Nov 2008 18:08:35 -0600 |
| parents | 450d5d9d3b80 |
| children | ed3dd5bf45da |
comparison
equal
deleted
inserted
replaced
| 75:cca31b6b1318 | 76:6c62bd201785 |
|---|---|
| 117 if hg_editor.missing_plaintexts: | 117 if hg_editor.missing_plaintexts: |
| 118 hg_editor.ui.status('Fetching %s files that could not use replay.\n' % | 118 hg_editor.ui.status('Fetching %s files that could not use replay.\n' % |
| 119 len(hg_editor.missing_plaintexts)) | 119 len(hg_editor.missing_plaintexts)) |
| 120 files_to_grab = set() | 120 files_to_grab = set() |
| 121 dirs_to_list = [] | 121 dirs_to_list = [] |
| 122 props = {} | |
| 123 hg_editor.ui.status('Getting properties...\n') | |
| 124 for p in hg_editor.missing_plaintexts: | 122 for p in hg_editor.missing_plaintexts: |
| 125 hg_editor.ui.status('.') | 123 hg_editor.ui.status('.') |
| 126 hg_editor.ui.flush() | 124 hg_editor.ui.flush() |
| 127 p2 = p | |
| 128 if svn.subdir: | |
| 129 p2 = p2[len(svn.subdir)-1:] | |
| 130 # this *sometimes* raises on me, and I have | |
| 131 # no idea why. TODO(augie) figure out the why. | |
| 132 try: | |
| 133 pl = svn.proplist(p2, r.revnum, recurse=True) | |
| 134 cleanup_file_handles(svn, i) | |
| 135 i += 1 | |
| 136 except core.SubversionException, e: #pragma: no cover | |
| 137 pass | |
| 138 props.update(pl) | |
| 139 if p[-1] == '/': | 125 if p[-1] == '/': |
| 140 dirs_to_list.append(p) | 126 dirs_to_list.append(p) |
| 141 else: | 127 else: |
| 142 files_to_grab.add(p) | 128 files_to_grab.add(p) |
| 143 if dirs_to_list: | 129 if dirs_to_list: |
| 152 p2 = p[:-1] | 138 p2 = p[:-1] |
| 153 if svn.subdir: | 139 if svn.subdir: |
| 154 p2 = p2[len(svn.subdir)-1:] | 140 p2 = p2[len(svn.subdir)-1:] |
| 155 l = svn.list_dir(p2, r.revnum) | 141 l = svn.list_dir(p2, r.revnum) |
| 156 for f in l: | 142 for f in l: |
| 157 | |
| 158 if l[f].kind == core.svn_node_dir: | 143 if l[f].kind == core.svn_node_dir: |
| 159 dirs_to_list.append(p+f+'/') | 144 dirs_to_list.append(p+f+'/') |
| 160 elif l[f].kind == core.svn_node_file: | 145 elif l[f].kind == core.svn_node_file: |
| 161 files_to_grab.add(p+f) | 146 files_to_grab.add(p+f) |
| 162 hg_editor.ui.status('\nFetching files...\n') | 147 hg_editor.ui.status('\nFetching files...\n') |
| 166 p2 = p | 151 p2 = p |
| 167 if svn.subdir: | 152 if svn.subdir: |
| 168 p2 = p2[len(svn.subdir)-1:] | 153 p2 = p2[len(svn.subdir)-1:] |
| 169 cleanup_file_handles(svn, i) | 154 cleanup_file_handles(svn, i) |
| 170 i += 1 | 155 i += 1 |
| 171 hg_editor.current_files[p] = svn.get_file(p2, r.revnum) | 156 data, mode = svn.get_file(p2, r.revnum) |
| 172 hg_editor.current_files_exec[p] = False | 157 hg_editor.current_files[p] = data |
| 173 if p in props: | 158 hg_editor.current_files_exec[p] = 'x' in mode |
| 174 if 'svn:executable' in props[p]: | 159 hg_editor.current_files_symlink[p] = 'l' in mode |
| 175 hg_editor.current_files_exec[p] = True | |
| 176 if 'svn:special' in props[p]: | |
| 177 hg_editor.current_files_symlink[p] = True | |
| 178 hg_editor.missing_plaintexts = set() | 160 hg_editor.missing_plaintexts = set() |
| 179 hg_editor.ui.status('\n') | 161 hg_editor.ui.status('\n') |
| 180 hg_editor.commit_current_delta() | 162 hg_editor.commit_current_delta() |
| 181 | 163 |
| 182 | 164 |
| 345 try: | 327 try: |
| 346 os.makedirs(os.path.dirname(file_path)) | 328 os.makedirs(os.path.dirname(file_path)) |
| 347 except OSError, e: | 329 except OSError, e: |
| 348 pass | 330 pass |
| 349 f = open(file_path, 'w') | 331 f = open(file_path, 'w') |
| 350 f.write(svn.get_file(diff_path+'/'+m, r.revnum)) | 332 f.write(svn.get_file(diff_path+'/'+m, r.revnum)[0]) |
| 351 f.close() | 333 f.close() |
| 352 except IOError: | 334 except IOError: |
| 353 pass | 335 pass |
| 354 d2 = empty_file_patch_wont_make_re.sub('', d) | 336 d2 = empty_file_patch_wont_make_re.sub('', d) |
| 355 d2 = property_exec_set_re.sub('', d2) | 337 d2 = property_exec_set_re.sub('', d2) |
