Commits

Marcin Kuzminski committed 2654edf

fixes #591 git backend was causing encoding errors when handling binary files
- added a test case for VCS lib tests

  • Participants
  • Parent commits eb180eb

Comments (0)

Files changed (2)

rhodecode/lib/vcs/backends/git/inmemory.py

                     # If found, updates parent
                     parent = self.repository._repo[dir_id]
                     ancestors.append((curdir, parent))
-            # Now parent is deepest exising tree and we need to create subtrees
+            # Now parent is deepest existing tree and we need to create subtrees
             # for dirnames (in reverse order) [this only applies for nodes from added]
             new_trees = []
-            blob = objects.Blob.from_string(node.content.encode(ENCODING))
+
+            if not node.is_binary:
+                content = node.content.encode(ENCODING)
+            else:
+                content = node.content
+            blob = objects.Blob.from_string(content)
+
             node_path = node.name.encode(ENCODING)
             if dirnames:
                 # If there are trees which should be created we need to build

rhodecode/tests/vcs/test_inmemchangesets.py

             FileNode('foobar2', content='Foo & bar, doubled!'),
             FileNode('foo bar with spaces', content=''),
             FileNode('foo/bar/baz', content='Inside'),
+            FileNode('foo/bar/file.bin', content='\xd0\xcf\x11\xe0\xa1\xb1\x1a\xe1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00;\x00\x03\x00\xfe\xff\t\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x18\x00\x00\x00\x01\x00\x00\x00\xfe\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff'),
         ]
 
     def test_add(self):