2014-03-16 02:53:41 -04:00
// Copyright 2014 The Gogs Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
2014-03-16 12:18:34 +08:00
package main
import (
"os"
"strconv"
"github.com/codegangsta/cli"
2014-03-16 02:53:41 -04:00
2014-03-16 12:18:34 +08:00
git "github.com/gogits/git"
2014-03-16 02:53:41 -04:00
"github.com/gogits/gogs/models"
"github.com/gogits/gogs/modules/log"
2014-03-16 12:18:34 +08:00
)
var CmdUpdate = cli . Command {
Name : "update" ,
Usage : "This command just should be called by ssh shell" ,
Description : `
gogs serv provide access auth for repositories ` ,
Action : runUpdate ,
Flags : [ ] cli . Flag { } ,
}
func runUpdate ( * cli . Context ) {
userName := os . Getenv ( "userName" )
userId := os . Getenv ( "userId" )
repoId := os . Getenv ( "repoId" )
repoName := os . Getenv ( "repoName" )
f := models . RepoPath ( userName , repoName )
repo , err := git . OpenRepository ( f )
if err != nil {
return
}
ref , err := repo . LookupReference ( "HEAD" )
if err != nil {
return
}
lastCommit , err := repo . LookupCommit ( ref . Oid )
if err != nil {
return
}
2014-03-16 02:53:41 -04:00
sUserId , err := strconv . Atoi ( userId )
2014-03-16 12:18:34 +08:00
if err != nil {
2014-03-16 02:53:41 -04:00
log . Error ( "runUpdate.Parse userId: %v" , err )
return
}
sRepoId , err := strconv . Atoi ( repoId )
if err != nil {
log . Error ( "runUpdate.Parse repoId: %v" , err )
return
}
if err = models . CommitRepoAction ( int64 ( sUserId ) , userName ,
int64 ( sRepoId ) , repoName , lastCommit . Message ( ) ) ; err != nil {
log . Error ( "runUpdate.models.CommitRepoAction: %v" , err )
2014-03-16 12:18:34 +08:00
}
}