From 6f8e388b5530e85f141ea3aa345b1c6842fbe1f5 Mon Sep 17 00:00:00 2001
From: Unknwon <u@gogs.io>
Date: Sun, 26 Jul 2015 19:22:17 +0800
Subject: fix #1169

- prevent create reop on existed path
---
 models/repo.go | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

(limited to 'models/repo.go')

diff --git a/models/repo.go b/models/repo.go
index 35f63e12..f339f173 100644
--- a/models/repo.go
+++ b/models/repo.go
@@ -423,13 +423,18 @@ func createUpdateHook(repoPath string) error {
 
 // InitRepository initializes README and .gitignore if needed.
 func initRepository(e Engine, repoPath string, u *User, repo *Repository, initReadme bool, repoLang, license string) error {
+	// Somehow the directory could exist.
+	if com.IsExist(repoPath) {
+		return fmt.Errorf("initRepository: path already exists: %s", repoPath)
+	}
+
 	// Init bare new repository.
 	os.MkdirAll(repoPath, os.ModePerm)
 	_, stderr, err := process.ExecDir(-1, repoPath,
 		fmt.Sprintf("initRepository(git init --bare): %s", repoPath),
 		"git", "init", "--bare")
 	if err != nil {
-		return errors.New("git init --bare: " + stderr)
+		return fmt.Errorf("git init --bare: %s", err)
 	}
 
 	if err := createUpdateHook(repoPath); err != nil {
-- 
cgit v1.2.3