Rev 3787: CommitBuilder.record_iter_changes handles renamed files. in http://people.ubuntu.com/~robertc/baz2.0/commit-iterchanges

Robert Collins robertc at robertcollins.net
Tue Dec 2 01:18:03 GMT 2008


At http://people.ubuntu.com/~robertc/baz2.0/commit-iterchanges

------------------------------------------------------------
revno: 3787
revision-id: robertc at robertcollins.net-20081202011752-qa4n9318z1m24gjf
parent: robertc at robertcollins.net-20081118063955-rosaxti87kco7tlk
committer: Robert Collins <robertc at robertcollins.net>
branch nick: commit-iterchanges
timestamp: Tue 2008-12-02 12:17:52 +1100
message:
  CommitBuilder.record_iter_changes handles renamed files.
modified:
  bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
  bzrlib/tests/per_repository/test_commit_builder.py test_commit_builder.py-20060606110838-76e3ra5slucqus81-1
=== modified file 'bzrlib/repository.py'
--- a/bzrlib/repository.py	2008-11-18 06:39:55 +0000
+++ b/bzrlib/repository.py	2008-12-02 01:17:52 +0000
@@ -565,6 +565,9 @@
         for change, head_candidates in changes.values():
             if change[3][1]: # versioned in target.
                 kind = change[6][1]
+                file_id = change[0]
+                entry = _entry_factory[kind](file_id, change[5][1],
+                    change[4][1])
                 heads = self._heads(change[0], head_candidates)
                 # Populate the entry
                 if change[2]:
@@ -584,7 +587,17 @@
                 else:
                     # From basis.
                     if kind == 'file':
-                        import pdb;pdb.set_trace()
+                        if change[7][1]:
+                            entry.executable = True
+                        else:
+                            entry.executable = False
+                        text_revision_id = basis_inv[file_id].revision
+                        bytes = ''.join(self.repository.iter_files_bytes([(file_id,
+                            text_revision_id, None)]).next()[1])
+                        lines = osutils.split_lines(bytes)
+                        del bytes
+                        entry.text_sha1, entry.text_size = self._add_text_to_weave(
+                            file_id, lines, heads, None)
                     elif kind == 'symlink':
                         import pdb;pdb.set_trace()
                     elif kind == 'directory':
@@ -595,8 +608,6 @@
                         import pdb;pdb.set_trace()
                     else:
                         raise AssertionError('unknown kind %r' % kind)
-                entry = _entry_factory[change[6][1]](
-                    change[0], change[5][1], change[4][1])
                 
                 entry.revision = modified_rev
             else:

=== modified file 'bzrlib/tests/per_repository/test_commit_builder.py'
--- a/bzrlib/tests/per_repository/test_commit_builder.py	2008-11-18 06:39:55 +0000
+++ b/bzrlib/tests/per_repository/test_commit_builder.py	2008-12-02 01:17:52 +0000
@@ -551,6 +551,14 @@
         self._add_commit_renamed_check_changed(tree, 'file',
             expect_fs_hash=True)
 
+    def test_last_modified_revision_after_rename_file_changes_ric(self):
+        # renaming a file changes the last modified.
+        tree = self.make_branch_and_tree('.')
+        self.build_tree(['file'])
+        self._add_commit_renamed_check_changed(tree, 'file',
+            expect_fs_hash=True,
+            mini_commit=self.mini_commit_record_iter_changes)
+
     def test_last_modified_revision_after_rename_link_changes(self):
         # renaming a link changes the last modified.
         self.requireFeature(tests.SymlinkFeature)




More information about the bazaar-commits mailing list