2014-03-16 10: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 08:18:34 +04:00
package main
2014-03-23 12:31:13 +04:00
import "github.com/codegangsta/cli"
2014-03-16 08:18:34 +04:00
2014-03-23 12:31:13 +04:00
//"github.com/gogits/gogs/modules/log"
2014-03-16 08:18:34 +04: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 { } ,
}
2014-03-18 17:58:58 +04:00
// for command: ./gogs update
2014-03-16 08:18:34 +04:00
func runUpdate ( * cli . Context ) {
2014-03-23 12:31:13 +04:00
/ * w , _ := os . Create ( "update.log" )
log . SetOutput ( w )
2014-03-16 08:18:34 +04:00
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 {
2014-03-23 12:31:13 +04:00
log . Error ( "runUpdate.Open repoId: %v" , err )
2014-03-16 08:18:34 +04:00
return
}
ref , err := repo . LookupReference ( "HEAD" )
if err != nil {
2014-03-23 12:31:13 +04:00
log . Error ( "runUpdate.Ref repoId: %v" , err )
2014-03-16 08:18:34 +04:00
return
}
lastCommit , err := repo . LookupCommit ( ref . Oid )
if err != nil {
2014-03-23 12:31:13 +04:00
log . Error ( "runUpdate.Commit repoId: %v" , err )
2014-03-16 08:18:34 +04:00
return
}
2014-03-16 19:02:59 +04:00
2014-03-16 10:53:41 +04:00
sUserId , err := strconv . Atoi ( userId )
2014-03-16 08:18:34 +04:00
if err != nil {
2014-03-16 10: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
}
2014-03-16 19:02:59 +04:00
commits := make ( [ ] [ ] string , 0 )
commits = append ( commits , [ ] string { lastCommit . Id ( ) . String ( ) , lastCommit . Message ( ) } )
2014-03-16 10:53:41 +04:00
if err = models . CommitRepoAction ( int64 ( sUserId ) , userName ,
2014-03-16 19:02:59 +04:00
int64 ( sRepoId ) , repoName , commits ) ; err != nil {
2014-03-16 10:53:41 +04:00
log . Error ( "runUpdate.models.CommitRepoAction: %v" , err )
2014-03-23 12:31:13 +04:00
} else {
l := exec . Command ( "exec" , "git" , "update-server-info" )
l . Run ( )
} * /
2014-03-16 08:18:34 +04:00
}