diff --git a/app/models/repository.rb b/app/models/repository.rb
index 6bfdf2255f2b812b7132ec7331660f7ef06d1047..f9db6342603d14ba25f9d677a3992c3514c0e900 100644
--- a/app/models/repository.rb
+++ b/app/models/repository.rb
@@ -151,16 +151,16 @@ class Repository
     return nil unless commit
 
     # Build file path
-    file_name = self.path_with_namespace + "-" + commit.id.to_s + ".tar.gz"
+    file_name = self.path_with_namespace.gsub("/","_") + "-" + commit.id.to_s + ".tar.gz"
     storage_path = Rails.root.join("tmp", "repositories")
-    file_path = File.join(storage_path, file_name)
+    file_path = File.join(storage_path, self.path_with_namespace, file_name)
 
     # Put files into a directory before archiving
     prefix = self.path_with_namespace + "/"
 
     # Create file if not exists
     unless File.exists?(file_path)
-      FileUtils.mkdir_p storage_path
+      FileUtils.mkdir_p File.dirname(file_path)
       file = self.repo.archive_to_file(ref, prefix,  file_path)
     end