aboutsummaryrefslogtreecommitdiff
path: root/models/repo.go
diff options
context:
space:
mode:
authorJustin Nuß <justin.nuss@hmmh.de>2014-07-24 12:29:37 +0200
committerJustin Nuß <justin.nuss@hmmh.de>2014-07-24 12:29:37 +0200
commit967856f36ebd2d6216ceb2299b5399f7d25e86e9 (patch)
treebfde3326df1efcda39927bea2b44e9dcc0d436e5 /models/repo.go
parent3c025b395077292a721419942f997311ef575fd9 (diff)
parenta76a948a029f46697a0e2327ea6ca86872a760d7 (diff)
Merge branch 'dev' into feature/attachments
Conflicts: models/issue.go routers/repo/issue.go
Diffstat (limited to 'models/repo.go')
-rw-r--r--models/repo.go25
1 files changed, 23 insertions, 2 deletions
diff --git a/models/repo.go b/models/repo.go
index 845c1b75..8dda6f0d 100644
--- a/models/repo.go
+++ b/models/repo.go
@@ -7,9 +7,9 @@ package models
import (
"errors"
"fmt"
- "io/ioutil"
"html"
"html/template"
+ "io/ioutil"
"os"
"path"
"path/filepath"
@@ -43,6 +43,7 @@ var (
ErrRepoNameIllegal = errors.New("Repository name contains illegal characters")
ErrRepoFileNotLoaded = errors.New("Repository file not loaded")
ErrMirrorNotExist = errors.New("Mirror does not exist")
+ ErrInvalidReference = errors.New("Invalid reference specified")
)
var (
@@ -837,6 +838,26 @@ func DeleteRepository(userId, repoId int64, userName string) error {
return sess.Commit()
}
+// GetRepositoryByRef returns a Repository specified by a GFM reference.
+// See https://help.github.com/articles/writing-on-github#references for more information on the syntax.
+func GetRepositoryByRef(ref string) (*Repository, error) {
+ n := strings.IndexByte(ref, byte('/'))
+
+ if n < 2 {
+ return nil, ErrInvalidReference
+ }
+
+ userName, repoName := ref[:n], ref[n+1:]
+
+ user, err := GetUserByName(userName)
+
+ if err != nil {
+ return nil, err
+ }
+
+ return GetRepositoryByName(user.Id, repoName)
+}
+
// GetRepositoryByName returns the repository by given name under user if exists.
func GetRepositoryByName(userId int64, repoName string) (*Repository, error) {
repo := &Repository{
@@ -1017,4 +1038,4 @@ func IsWatching(uid, rid int64) bool {
func ForkRepository(repoName string, uid int64) {
-} \ No newline at end of file
+}