summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitry Andric <d.andric@activevideo.com>2014-11-13 13:09:47 +0100
committerDimitry Andric <d.andric@activevideo.com>2014-11-13 13:09:47 +0100
commit4a5044e30269f8b3c6c075093cd4646a478231c7 (patch)
tree08385c2a5c9fcea310d119cb200f0b9f1e8f2252
parent6adc313a1f48809543c626aa226ad56979cdde99 (diff)
downloadgitlab-ce-4a5044e30269f8b3c6c075093cd4646a478231c7.tar.gz
Correctly restore empty repositories.
If a project is being restored, but there is no bundle file, the project was empty when it was backed up. In this case, just use git init --base to create a new bare repository.
-rw-r--r--lib/backup/repository.rb8
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/backup/repository.rb b/lib/backup/repository.rb
index 0bb02f1a357..faa1b3b4099 100644
--- a/lib/backup/repository.rb
+++ b/lib/backup/repository.rb
@@ -59,7 +59,13 @@ module Backup
project.namespace.ensure_dir_exist if project.namespace
- if system(*%W(git clone --bare #{path_to_bundle(project)} #{path_to_repo(project)}), silent)
+ if File.exists?(path_to_bundle(project))
+ cmd = %W(git clone --bare #{path_to_bundle(project)} #{path_to_repo(project)})
+ else
+ cmd = %W(git init --bare #{path_to_repo(project)})
+ end
+
+ if system(*cmd, silent)
puts "[DONE]".green
else
puts "[FAILED]".red