fetch_command: Fix mis-converted executable when svn:executable was set to the

empty string.
This commit is contained in:
Augie Fackler 2008-11-25 09:45:38 -06:00
parent 86ee82c737
commit 0b3d81a7d5
4 changed files with 116 additions and 11 deletions

View File

@ -147,14 +147,12 @@ Cannot display: file marked as a binary type.''')
property_exec_set_re = re.compile(r'''Property changes on: ([^\n]*)
_*
(?:Added|Name): svn:executable
\+ \*
''')
\+''')
property_exec_removed_re = re.compile(r'''Property changes on: ([^\n]*)
_*
(?:Deleted|Name): svn:executable
- \*
''')
-''')
empty_file_patch_wont_make_re = re.compile(r'''Index: ([^\n]*)\n=*\n(?=Index:)''')
@ -163,14 +161,12 @@ any_file_re = re.compile(r'''^Index: ([^\n]*)\n=*\n''', re.MULTILINE)
property_special_set_re = re.compile(r'''Property changes on: ([^\n]*)
_*
(?:Added|Name): svn:special
\+ \*
''')
\+''')
property_special_removed_re = re.compile(r'''Property changes on: ([^\n]*)
_*
(?:Deleted|Name): svn:special
\- \*
''')
\-''')
def stupid_diff_branchrev(ui, svn, hg_editor, branch, r, parentctx, tempdir):
"""Extract all 'branch' content at a given revision.

View File

@ -627,9 +627,9 @@ class HgChangeReceiver(delta.Editor):
@stash_exception_on_self
def change_file_prop(self, file_baton, name, value, pool=None):
if name == 'svn:executable':
self.current_files_exec[self.current_file] = bool(value)
self.current_files_exec[self.current_file] = bool(value is not None)
elif name == 'svn:special':
self.current_files_symlink[self.current_file] = bool(value)
self.current_files_symlink[self.current_file] = bool(value is not None)
@stash_exception_on_self
def open_directory(self, path, parent_baton, base_revision, dir_pool=None):

View File

@ -0,0 +1,93 @@
SVN-fs-dump-format-version: 2
UUID: 60adb0cc-4d5c-4038-bbb4-90f4595cf81c
Revision-number: 0
Prop-content-length: 56
Content-length: 56
K 8
svn:date
V 27
2008-11-25T15:02:16.557895Z
PROPS-END
Revision-number: 1
Prop-content-length: 115
Content-length: 115
K 7
svn:log
V 15
Basic structure
K 10
svn:author
V 5
Augie
K 8
svn:date
V 27
2008-11-25T15:02:45.454954Z
PROPS-END
Node-path: branches
Node-kind: dir
Node-action: add
Prop-content-length: 10
Content-length: 10
PROPS-END
Node-path: tags
Node-kind: dir
Node-action: add
Prop-content-length: 10
Content-length: 10
PROPS-END
Node-path: trunk
Node-kind: dir
Node-action: add
Prop-content-length: 10
Content-length: 10
PROPS-END
Revision-number: 2
Prop-content-length: 103
Content-length: 103
K 7
svn:log
V 4
blah
K 10
svn:author
V 5
Augie
K 8
svn:date
V 27
2008-11-25T15:03:45.151223Z
PROPS-END
Node-path: trunk/foo
Node-kind: file
Node-action: add
Prop-content-length: 36
Text-content-length: 4
Text-content-md5: c157a79031e1c40f85931829bc5fc552
Content-length: 40
K 14
svn:executable
V 0
PROPS-END
bar

View File

@ -104,7 +104,12 @@ class TestBasicRepoLayout(test_util.TestBase):
repo['oldest'])
self.assertEqual(node.hex(repo['tip'].node()),
'9cf09e6ff7fa938188c3bcc9dd87abd7842c080c')
#'1316ef606dda89354ee8c4df725e6264177b5129')
def test_empty_prop_val_executable(self):
repo = self._load_fixture_and_fetch('executable_file_empty_prop.svndump')
self.assertEqual(node.hex(repo['tip'].node()),
'b19e2bdd93da30b09c2396cfdb987cc85271249a')
self.assertEqual(repo['tip']['foo'].flags(), 'x')
class TestStupidPull(test_util.TestBase):
@ -139,6 +144,17 @@ class TestStupidPull(test_util.TestBase):
repo['oldest'])
self.assertEqual(node.hex(repo['tip'].node()),
'9cf09e6ff7fa938188c3bcc9dd87abd7842c080c')
def test_empty_prop_val_executable(self):
repo = test_util.load_fixture_and_fetch(
'executable_file_empty_prop.svndump',
self.repo_path,
self.wc_path,
True)
self.assertEqual(repo['tip']['foo'].flags(), 'x')
self.assertEqual(node.hex(repo['tip'].node()),
'b19e2bdd93da30b09c2396cfdb987cc85271249a')
def suite():
all = [unittest.TestLoader().loadTestsFromTestCase(TestBasicRepoLayout),