Marcin Kuzminski committed c9dc3cd Merge

merge with beta

Comments (0)

Files changed (6)

 however RhodeCode can be run as standalone hosted application on your own server.
 It is open source and donation ware and focuses more on providing a customized, 
 self administered interface for Mercurial_ and GIT_  repositories. 
-RhodeCode works on *nix systems and Windows it is powered by a vcs_ library 
+RhodeCode works on \*nix systems and Windows it is powered by a vcs_ library 
 that Lukasz Balcerzak and Marcin Kuzminski created to handle multiple 
 different version control systems.


File contents unchanged.


File contents unchanged.


 import os
 import logging
 import traceback
+import tempfile
 from pylons import request, response, tmpl_context as c, url
 from pylons.i18n.translation import _
         except (ImproperArchiveTypeError, KeyError):
             return _('Unknown archive type')
+        archive = tempfile.NamedTemporaryFile(mode='w+r+b')
+        cs.fill_archive(stream=archive, kind=fileformat, subrepos=subrepos)
         response.content_type = content_type
         response.content_disposition = 'attachment; filename=%s-%s%s' \
-            % (repo_name, revision, ext)
+            % (repo_name, revision[:12], ext)
+        response.content_length = str(os.path.getsize(
-        import tempfile
-        archive = tempfile.mkstemp()[1]
-        t = open(archive, 'wb')
-        cs.fill_archive(stream=t, kind=fileformat, subrepos=subrepos)
-        def get_chunked_archive(archive):
-            stream = open(archive, 'rb')
+        def get_chunked_archive(tmpfile):
             while True:
-                data =
+                data = * 1024)
                 if not data:
-                    os.remove(archive)
+                    tmpfile.close()
                 yield data
-        return get_chunked_archive(archive)
+        return get_chunked_archive(tmpfile=archive)
     @HasRepoPermissionAnyDecorator('', 'repository.write',


         archival.archive(self.repository._repo, stream, self.raw_id,
                          kind, prefix=prefix, subrepos=subrepos)
-        #stream.close()
         if stream.closed and hasattr(stream, 'name'):
             stream = open(, 'rb')
         elif hasattr(stream, 'mode') and 'r' not in stream.mode:


File contents unchanged.