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

Robert Collins robertc at robertcollins.net
Tue Dec 2 01:39:42 GMT 2008


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

------------------------------------------------------------
revno: 3792
revision-id: robertc at robertcollins.net-20081202013938-9h21myml6z0ku8th
parent: robertc at robertcollins.net-20081202013346-8w5gkpw7vq9t4h87
committer: Robert Collins <robertc at robertcollins.net>
branch nick: commit-iterchanges
timestamp: Tue 2008-12-02 12:39:38 +1100
message:
  CommitBuilder.record_iter_changes handles changed 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-12-02 01:28:24 +0000
+++ b/bzrlib/repository.py	2008-12-02 01:39:38 +0000
@@ -573,7 +573,18 @@
                 if change[2]:
                     # From disk.
                     if kind == 'file':
-                        import pdb;pdb.set_trace()
+                        if change[7][0]:
+                            entry.executable = True
+                        else:
+                            entry.executable = False
+                        file_obj, stat_value = tree.get_file_with_stat(file_id,
+                            change[1][1])
+                        try:
+                            lines = file_obj.readlines()
+                        finally:
+                            file_obj.close()
+                        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':
@@ -591,11 +602,11 @@
                             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
+                        basis_file = basis_tree.get_file(file_id, path=change[1][0])
+                        try:
+                            lines = basis_file.readlines()
+                        finally:
+                            basis_file.close()
                         entry.text_sha1, entry.text_size = self._add_text_to_weave(
                             file_id, lines, heads, None)
                     elif kind == 'symlink':

=== modified file 'bzrlib/tests/per_repository/test_commit_builder.py'
--- a/bzrlib/tests/per_repository/test_commit_builder.py	2008-12-02 01:33:46 +0000
+++ b/bzrlib/tests/per_repository/test_commit_builder.py	2008-12-02 01:39:38 +0000
@@ -608,7 +608,8 @@
         tree = self.make_branch_and_tree('.')
         self.build_tree(['file'])
         self._add_commit_reparent_check_changed(tree, 'file',
-            expect_fs_hash=True, mini_commit=self.mini_commit_record_iter_changes)
+            expect_fs_hash=True,
+            mini_commit=self.mini_commit_record_iter_changes)
 
     def test_last_modified_revision_after_reparent_link_changes(self):
         # reparenting a link changes the last modified.
@@ -796,6 +797,16 @@
         self._add_commit_change_check_changed(tree, 'file', change_file,
             expect_fs_hash=True)
 
+    def test_last_modified_revision_after_content_file_changes_ric(self):
+        # altering a file changes the last modified.
+        tree = self.make_branch_and_tree('.')
+        self.build_tree(['file'])
+        def change_file():
+            tree.put_file_bytes_non_atomic('fileid', 'new content')
+        self._add_commit_change_check_changed(tree, 'file', change_file,
+            expect_fs_hash=True,
+            mini_commit=self.mini_commit_record_iter_changes)
+
     def test_last_modified_revision_after_content_link_changes(self):
         # changing a link changes the last modified.
         self.requireFeature(tests.SymlinkFeature)




More information about the bazaar-commits mailing list