From 4210f56dbcf0940f5cb181022501ec6fee5eebbb Mon Sep 17 00:00:00 2001
From: Lunny Xiao <xiaolunwen@gmail.com>
Date: Mon, 14 Apr 2014 23:22:00 +0800
Subject: [PATCH] bug fixed for http clone

---
 routers/repo/http.go | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/routers/repo/http.go b/routers/repo/http.go
index d4956deff..ab48c6f3d 100644
--- a/routers/repo/http.go
+++ b/routers/repo/http.go
@@ -10,6 +10,7 @@ import (
 	"os"
 	"os/exec"
 	"path"
+	"path/filepath"
 	"regexp"
 	"strconv"
 	"strings"
@@ -333,7 +334,7 @@ func sendFile(contentType string, hr handler) {
 	http.ServeFile(w, r, reqFile)
 }
 
-func getGitDir(config *Config, filePath string) (string, error) {
+func getGitDir(config *Config, fPath string) (string, error) {
 	root := config.ReposRoot
 
 	if root == "" {
@@ -347,7 +348,11 @@ func getGitDir(config *Config, filePath string) (string, error) {
 		root = cwd
 	}
 
-	f := path.Join(root, filePath)
+	if !strings.HasSuffix(fPath, ".git") {
+		fPath = fPath + ".git"
+	}
+
+	f := filepath.Join(root, fPath)
 	if _, err := os.Stat(f); os.IsNotExist(err) {
 		return "", err
 	}