Merge branch 'dev' of github.com:gogits/gogs into dev
This commit is contained in:
commit
4c6e0e9499
19 changed files with 270 additions and 345 deletions
|
@ -45,8 +45,9 @@ Make sure you install [Prerequirements](https://github.com/gogits/gogs/wiki/Prer
|
||||||
|
|
||||||
There are two ways to install Gogs:
|
There are two ways to install Gogs:
|
||||||
|
|
||||||
- [Install from binary](https://github.com/gogits/gogs/wiki/Install-from-binary): **STRONGLY RECOMMENDED** for just try and deployment!
|
- [Install from binary](https://github.com/gogits/gogs/wiki/Install-from-binary): **STRONGLY RECOMMENDED**
|
||||||
- [Install from source](https://github.com/gogits/gogs/wiki/Install-from-source)
|
- [Install from source](https://github.com/gogits/gogs/wiki/Install-from-source)
|
||||||
|
- [Ship with Docker](https://github.com/gogits/gogs/tree/master/dockerfiles)
|
||||||
|
|
||||||
## Acknowledgments
|
## Acknowledgments
|
||||||
|
|
||||||
|
@ -56,6 +57,7 @@ There are two ways to install Gogs:
|
||||||
- System Monitor Status is inspired by [GoBlog](https://github.com/fuxiaohei/goblog).
|
- System Monitor Status is inspired by [GoBlog](https://github.com/fuxiaohei/goblog).
|
||||||
- Usage and modification from [beego](http://beego.me) modules.
|
- Usage and modification from [beego](http://beego.me) modules.
|
||||||
- Thanks [gobuild.io](http://gobuild.io) for providing binary compile and download service.
|
- Thanks [gobuild.io](http://gobuild.io) for providing binary compile and download service.
|
||||||
|
- Great thanks to [Docker China](http://www.dockboard.org/) for providing [dockerfiles](https://github.com/gogits/gogs/tree/master/dockerfiles).
|
||||||
|
|
||||||
## Contributors
|
## Contributors
|
||||||
|
|
||||||
|
|
|
@ -39,8 +39,9 @@ Gogs 完全使用 Go 语言来实现对 Git 数据的操作,实现 **零** 依
|
||||||
|
|
||||||
然后,您可以通过以下两种方式来安装 Gogs:
|
然后,您可以通过以下两种方式来安装 Gogs:
|
||||||
|
|
||||||
- [二进制安装](https://github.com/gogits/gogs/wiki/Install-from-binary): **强烈推荐** 适合体验者和实际部署
|
- [二进制安装](https://github.com/gogits/gogs/wiki/Install-from-binary): **强烈推荐**
|
||||||
- [源码安装](https://github.com/gogits/gogs/wiki/Install-from-source)
|
- [源码安装](https://github.com/gogits/gogs/wiki/Install-from-source)
|
||||||
|
- [采用 Docker 部署](https://github.com/gogits/gogs/tree/master/dockerfiles)
|
||||||
|
|
||||||
## 特别鸣谢
|
## 特别鸣谢
|
||||||
|
|
||||||
|
@ -50,6 +51,7 @@ Gogs 完全使用 Go 语言来实现对 Git 数据的操作,实现 **零** 依
|
||||||
- [beego](http://beego.me) 模块的使用与修改。
|
- [beego](http://beego.me) 模块的使用与修改。
|
||||||
- [martini](http://martini.codegangsta.io/) 的路由与中间件机制。
|
- [martini](http://martini.codegangsta.io/) 的路由与中间件机制。
|
||||||
- 感谢 [gobuild.io](http://gobuild.io) 提供二进制编译与下载服务。
|
- 感谢 [gobuild.io](http://gobuild.io) 提供二进制编译与下载服务。
|
||||||
|
- 感谢 [Docker 中文社区](http://www.dockboard.org/) 提供的 [dockerfiles](https://github.com/gogits/gogs/tree/master/dockerfiles)。
|
||||||
|
|
||||||
## 贡献成员
|
## 贡献成员
|
||||||
|
|
||||||
|
|
57
dockerfiles/README.md
Normal file
57
dockerfiles/README.md
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
### Gogs Install With Docker
|
||||||
|
|
||||||
|
Deply gogs in [Docker](http://www.docker.io/) is just as easy as eating a pie, what you do is just open the `dockerfiles/build.sh` file, replace the confis:
|
||||||
|
|
||||||
|
```
|
||||||
|
MYSQL_PASSWORD="YOUR_MYSQL_PASSWORD"
|
||||||
|
MYSQL_RUN_NAME="YOUR_MYSQL_RUN_NAME"
|
||||||
|
HOST_PORT="YOUR_HOST_PORT"
|
||||||
|
```
|
||||||
|
|
||||||
|
And run:
|
||||||
|
```
|
||||||
|
cd dockerfiles
|
||||||
|
./build.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
The build might take some time, just be paient. After it finishes, you will receive the message:
|
||||||
|
|
||||||
|
```
|
||||||
|
Now we have the MySQL image(running) and gogs image, use the follow command to start gogs service( the content might be different, according to your own configs):
|
||||||
|
docker run -i -t --link gogs_mysql:db -p 3333:3000 gogs/gogits
|
||||||
|
```
|
||||||
|
|
||||||
|
Just follow the message, run:
|
||||||
|
|
||||||
|
```
|
||||||
|
docker run -i -t --link gogs_mysql:db -p 3333:3000 gogs/gogits
|
||||||
|
```
|
||||||
|
|
||||||
|
Now we have gogs running! Open the browser and navigate to:
|
||||||
|
|
||||||
|
```
|
||||||
|
http://YOUR_HOST_IP:YOUR_HOST_PORT
|
||||||
|
```
|
||||||
|
|
||||||
|
Let's 'gogs'!
|
||||||
|
|
||||||
|
#### Gogs With MySQL
|
||||||
|
|
||||||
|
|
||||||
|
#### Gogs With PostgreSQL
|
||||||
|
|
||||||
|
|
||||||
|
#### Gogs, MySQL With Redis
|
||||||
|
|
||||||
|
|
||||||
|
#### Gogs, MySQL With Memcached
|
||||||
|
|
||||||
|
|
||||||
|
#### Gogs, PostgreSQL With Redis
|
||||||
|
|
||||||
|
|
||||||
|
#### Gogs, PostgreSQL With Memcached
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
25
dockerfiles/build.sh
Executable file
25
dockerfiles/build.sh
Executable file
|
@ -0,0 +1,25 @@
|
||||||
|
# Configs of the docker images, you might have specify your own configs here.
|
||||||
|
MYSQL_PASSWORD="YOUR_MYSQL_PASSWORD"
|
||||||
|
MYSQL_RUN_NAME="YOUR_MYSQL_RUN_NAME"
|
||||||
|
HOST_PORT="YOUR_HOST_PORT"
|
||||||
|
|
||||||
|
# Replace the mysql root password in MySQL image Dockerfile.
|
||||||
|
sed -i "s/THE_MYSQL_PASSWORD/$MYSQL_PASSWORD/g" images/mysql/Dockerfile
|
||||||
|
# Replace the mysql root password in gogits image Dockerfile.
|
||||||
|
sed -i "s/THE_MYSQL_PASSWORD/$MYSQL_PASSWORD/g" images/gogits/deploy.sh
|
||||||
|
|
||||||
|
# Build the MySQL image
|
||||||
|
cd images/mysql
|
||||||
|
docker build -t gogs/mysql .
|
||||||
|
#
|
||||||
|
## Build the gogits image
|
||||||
|
cd ../gogits
|
||||||
|
docker build -t gogs/gogits .
|
||||||
|
#
|
||||||
|
## Run MySQL image with name
|
||||||
|
docker run -d --name $MYSQL_RUN_NAME gogs/mysql
|
||||||
|
#
|
||||||
|
## Run gogits image and link it to the MySQL image
|
||||||
|
echo "Now we have the MySQL image(running) and gogs image, use the follow command to start gogs service:"
|
||||||
|
echo -e "\033[33m docker run -i -t --link $MYSQL_RUN_NAME:db -p $HOST_PORT:3000 gogs/gogits \033[0m"
|
||||||
|
|
27
dockerfiles/build.sh.bak
Executable file
27
dockerfiles/build.sh.bak
Executable file
|
@ -0,0 +1,27 @@
|
||||||
|
# Configs
|
||||||
|
MYSQL_PASSWORD="YOUR_MYSQL_PASSWORD"
|
||||||
|
MYSQL_RUN_NAME="YOUR_MYSQL_RUN_NAME"
|
||||||
|
typeset -u MYSQL_ALIAS
|
||||||
|
MYSQL_ALIAS="YOUR_MYSQL_ALIAS"
|
||||||
|
HOST_PORT="YOUR_HOST_PORT"
|
||||||
|
|
||||||
|
# Replace the mysql root password in MySQL image Dockerfile.
|
||||||
|
sed -i "s/THE_MYSQL_PASSWORD/$MYSQL_PASSWORD/g" images/mysql/Dockerfile
|
||||||
|
# Replace the mysql root password in gogits image Dockerfile.
|
||||||
|
sed -i "s/THE_MYSQL_PASSWORD/$MYSQL_PASSWORD/g" images/gogits/Dockerfile
|
||||||
|
|
||||||
|
|
||||||
|
# Build the MySQL image
|
||||||
|
cd images/mysql
|
||||||
|
docker build -i gogs/mysql .
|
||||||
|
|
||||||
|
# Build the gogits image
|
||||||
|
cd images/gogits
|
||||||
|
docker build -i gogs/gogits .
|
||||||
|
|
||||||
|
# Run MySQL image with name
|
||||||
|
docker run -d --name $MYSQL_RUN_NAME gogs/mysql
|
||||||
|
|
||||||
|
# Run gogits image and link it to the MySQL image
|
||||||
|
docker run --link $MYSQL_RUN_NAME:$MYSQL_ALIAS -p $HOST_PORT:3000 gogs/gogits
|
||||||
|
|
33
dockerfiles/images/gogits/Dockerfile
Normal file
33
dockerfiles/images/gogits/Dockerfile
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
FROM stackbrew/ubuntu:13.10
|
||||||
|
MAINTAINER Meaglith Ma <genedna@gmail.com> (@genedna)
|
||||||
|
|
||||||
|
ENV DEBIAN_FRONTEND noninteractive
|
||||||
|
|
||||||
|
RUN echo "deb http://mirrors.aliyun.com/ubuntu/ saucy main restricted" > /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy-updates main restricted" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy universe" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy-updates universe" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy multiverse" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy-updates multiverse" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy-backports main restricted universe multiverse" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy-security main restricted" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy-security universe" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy-security multiverse" >> /etc/apt/sources.list
|
||||||
|
|
||||||
|
RUN mkdir -p /go
|
||||||
|
ENV PATH /usr/local/go/bin:/go/bin:$PATH
|
||||||
|
ENV GOROOT /usr/local/go
|
||||||
|
ENV GOPATH /go
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install --yes --force-yes curl git mercurial zip wget ca-certificates build-essential
|
||||||
|
|
||||||
|
RUN curl -s http://docker.u.qiniudn.com/go1.2.1.src.tar.gz | tar -v -C /usr/local -xz
|
||||||
|
RUN cd /usr/local/go/src && ./make.bash --no-clean 2>&1
|
||||||
|
|
||||||
|
# You may need a proxy, if github is very slow.
|
||||||
|
#RUN http_proxy=106.187.38.45:3128 go get -u github.com/gogits/gogs
|
||||||
|
RUN go get -u github.com/gogits/gogs
|
||||||
|
RUN cd $GOPATH/src/github.com/gogits/gogs && go build
|
||||||
|
|
||||||
|
# Clean all the unused packages
|
||||||
|
RUN apt-get autoremove -y
|
||||||
|
RUN apt-get clean all
|
||||||
|
|
||||||
|
# Add the deploy script to the docker image and assign execution permission to it.
|
||||||
|
ADD ./deploy.sh /
|
||||||
|
RUN chmod +x deploy.sh
|
||||||
|
|
||||||
|
EXPOSE 3000
|
||||||
|
|
||||||
|
CMD /deploy.sh
|
20
dockerfiles/images/gogits/deploy.sh
Normal file
20
dockerfiles/images/gogits/deploy.sh
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
# deploy.sh in gogits image, replace the configs and run gogs
|
||||||
|
|
||||||
|
## Replace the mysql password
|
||||||
|
MYSQL_PASSWORD=THE_MYSQL_PASSWORD
|
||||||
|
MYSQL_ALIAS=DB
|
||||||
|
MYSQL_PASSWORD_LINE=`awk '$0 ~ str{print NR+1}' str="USER = root" $GOPATH/src/github.com/gogits/gogs/conf/app.ini`
|
||||||
|
|
||||||
|
sed -i "${MYSQL_PASSWORD_LINE}s/.*$/PASSWD = $MYSQL_PASSWORD/g" $GOPATH/src/github.com/gogits/gogs/conf/app.ini
|
||||||
|
|
||||||
|
## Replace the mysql address and port
|
||||||
|
# When using --link in docker run, the mysql image's info looks like this:
|
||||||
|
# DB_PORT=tcp://172.17.0.2:3306
|
||||||
|
# DB_PORT_3306_TCP_PORT=3306
|
||||||
|
# DB_PORT_3306_TCP_PROTO=tcp
|
||||||
|
# DB_PORT_3306_TCP_ADDR=172.17.0.2
|
||||||
|
sed -i "/HOST = 127.0.0.1:3306/c\HOST = $DB_PORT_3306_TCP_ADDR:$DB_PORT_3306_TCP_PORT" $GOPATH/src/github.com/gogits/gogs/conf/app.ini
|
||||||
|
cd $GOPATH/src/github.com/gogits/gogs/
|
||||||
|
|
||||||
|
# The sudo is a must here, or the go within docker container won't get the current user by os.Getenv("USERNAME")
|
||||||
|
sudo ./gogs web
|
0
dockerfiles/images/memcached/.gitkeep
Normal file
0
dockerfiles/images/memcached/.gitkeep
Normal file
0
dockerfiles/images/mysql/.gitkeep
Normal file
0
dockerfiles/images/mysql/.gitkeep
Normal file
37
dockerfiles/images/mysql/Dockerfile
Normal file
37
dockerfiles/images/mysql/Dockerfile
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
#FROM stackbrew/ubuntu:13.10
|
||||||
|
#FROM stackbrew/ubuntu
|
||||||
|
FROM stackbrew/ubuntu:saucy
|
||||||
|
MAINTAINER Meaglith Ma <genedna@gmail.com> (@genedna)
|
||||||
|
|
||||||
|
ENV DEBIAN_FRONTEND noninteractive
|
||||||
|
|
||||||
|
RUN apt-get install -y --force-yes software-properties-common
|
||||||
|
RUN add-apt-repository -y "deb http://archive.ubuntu.com/ubuntu $(lsb_release -sc) universe"
|
||||||
|
RUN apt-get --yes --force-yes update
|
||||||
|
RUN apt-get --yes --force-yes upgrade
|
||||||
|
|
||||||
|
ENV MYSQL_PASSWORD THE_MYSQL_PASSWORD
|
||||||
|
|
||||||
|
RUN echo "mysql-server mysql-server/root_password password $MYSQL_PASSWORD" | debconf-set-selections
|
||||||
|
RUN echo "mysql-server mysql-server/root_password_again password $MYSQL_PASSWORD" | debconf-set-selections
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install -y --force-yes mysql-server
|
||||||
|
RUN sed -i -e"s/^bind-address\s*=\s*127.0.0.1/bind-address = 0.0.0.0/" /etc/mysql/my.cnf
|
||||||
|
|
||||||
|
RUN service mysql restart
|
||||||
|
|
||||||
|
RUN echo "mysql -uroot -p$MYSQL_PASSWORD -e 'drop database if exists gogs;'" >> import.sh
|
||||||
|
RUN echo "mysql -uroot -p$MYSQL_PASSWORD -e 'create database gogs;'" >> import.sh
|
||||||
|
RUN chmod +x import.sh
|
||||||
|
|
||||||
|
RUN apt-get autoremove -y
|
||||||
|
RUN apt-get clean all
|
||||||
|
|
||||||
|
RUN /usr/sbin/mysqld & \
|
||||||
|
sleep 10s &&\
|
||||||
|
echo "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '$MYSQL_PASSWORD' WITH GRANT OPTION; FLUSH PRIVILEGES" | mysql -p$MYSQL_PASSWORD &&\
|
||||||
|
./import.sh
|
||||||
|
|
||||||
|
EXPOSE 3306
|
||||||
|
|
||||||
|
CMD ["/usr/bin/mysqld_safe", "--skip-syslog", "--log-error=/dev/null"]
|
0
dockerfiles/images/posgresql/.gitkeep
Normal file
0
dockerfiles/images/posgresql/.gitkeep
Normal file
0
dockerfiles/images/redis/.gitkeep
Normal file
0
dockerfiles/images/redis/.gitkeep
Normal file
13
dockerfiles/run.sh
Executable file
13
dockerfiles/run.sh
Executable file
|
@ -0,0 +1,13 @@
|
||||||
|
# Configs
|
||||||
|
MYSQL_PASSWORD="kuajie8402"
|
||||||
|
MYSQL_RUN_NAME="gogs_mysql"
|
||||||
|
typeset -u MYSQL_ALIAS
|
||||||
|
MYSQL_ALIAS="db"
|
||||||
|
HOST_PORT="3000"
|
||||||
|
|
||||||
|
## Run MySQL image with name
|
||||||
|
docker run -d --name $MYSQL_RUN_NAME gogs/mysql
|
||||||
|
#
|
||||||
|
## Run gogits image and link it to the MySQL image
|
||||||
|
docker run --link $MYSQL_RUN_NAME:$MYSQL_ALIAS -p $HOST_PORT:3000 gogs/gogits
|
||||||
|
|
|
@ -67,6 +67,9 @@ var TemplateFuncs template.FuncMap = map[string]interface{}{
|
||||||
"TimeSince": TimeSince,
|
"TimeSince": TimeSince,
|
||||||
"FileSize": FileSize,
|
"FileSize": FileSize,
|
||||||
"Subtract": Subtract,
|
"Subtract": Subtract,
|
||||||
|
"Add": func(a, b int) int {
|
||||||
|
return a + b
|
||||||
|
},
|
||||||
"ActionIcon": ActionIcon,
|
"ActionIcon": ActionIcon,
|
||||||
"ActionDesc": ActionDesc,
|
"ActionDesc": ActionDesc,
|
||||||
"DateFormat": DateFormat,
|
"DateFormat": DateFormat,
|
||||||
|
|
|
@ -103,7 +103,7 @@ func (ctx *Context) RenderWithErr(msg, tpl string, form auth.Form) {
|
||||||
func (ctx *Context) Handle(status int, title string, err error) {
|
func (ctx *Context) Handle(status int, title string, err error) {
|
||||||
log.Error("%s: %v", title, err)
|
log.Error("%s: %v", title, err)
|
||||||
if martini.Dev == martini.Prod {
|
if martini.Dev == martini.Prod {
|
||||||
ctx.HTML(500, "status/500")
|
ctx.HTML(200, "status/500")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -67,6 +67,7 @@ html, body {
|
||||||
color: #EEE;
|
color: #EEE;
|
||||||
font-size: 100%;
|
font-size: 100%;
|
||||||
height: 46px;
|
height: 46px;
|
||||||
|
margin-top: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#nav-logo {
|
#nav-logo {
|
||||||
|
@ -81,10 +82,6 @@ html, body {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-item.navbar-right {
|
|
||||||
margin-top: 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-item.navbar-btn {
|
.nav-item.navbar-btn {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
margin-top: 8px;
|
margin-top: 8px;
|
||||||
|
@ -96,6 +93,28 @@ html, body {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#nav-search-form {
|
||||||
|
width: 300px;
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav-search-form button {
|
||||||
|
margin-top: 0;
|
||||||
|
background-image: none;
|
||||||
|
background-color: #F6F6F6;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav-search-form input[type=search] {
|
||||||
|
background-color: #F6F6F6;
|
||||||
|
border-bottom-right-radius: 3px;
|
||||||
|
border-top-right-radius: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nav-search-form input[type=search]:focus {
|
||||||
|
background-color: #FFF;
|
||||||
|
border-color: #D9D9D9;
|
||||||
|
}
|
||||||
|
|
||||||
/* gogits nav item active status */
|
/* gogits nav item active status */
|
||||||
#masthead .nav .active {
|
#masthead .nav .active {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
|
|
|
@ -24,14 +24,14 @@ func Dashboard(ctx *middleware.Context) {
|
||||||
ctx.Data["PageIsUserDashboard"] = true
|
ctx.Data["PageIsUserDashboard"] = true
|
||||||
repos, err := models.GetRepositories(&models.User{Id: ctx.User.Id})
|
repos, err := models.GetRepositories(&models.User{Id: ctx.User.Id})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Handle(200, "user.Dashboard", err)
|
ctx.Handle(500, "user.Dashboard", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
ctx.Data["MyRepos"] = repos
|
ctx.Data["MyRepos"] = repos
|
||||||
|
|
||||||
feeds, err := models.GetFeeds(ctx.User.Id, 0, false)
|
feeds, err := models.GetFeeds(ctx.User.Id, 0, false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Handle(200, "user.Dashboard", err)
|
ctx.Handle(500, "user.Dashboard", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
ctx.Data["Feeds"] = feeds
|
ctx.Data["Feeds"] = feeds
|
||||||
|
@ -44,7 +44,7 @@ func Profile(ctx *middleware.Context, params martini.Params) {
|
||||||
// TODO: Need to check view self or others.
|
// TODO: Need to check view self or others.
|
||||||
user, err := models.GetUserByName(params["username"])
|
user, err := models.GetUserByName(params["username"])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Handle(200, "user.Profile", err)
|
ctx.Handle(500, "user.Profile", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,14 +57,14 @@ func Profile(ctx *middleware.Context, params martini.Params) {
|
||||||
case "activity":
|
case "activity":
|
||||||
feeds, err := models.GetFeeds(user.Id, 0, true)
|
feeds, err := models.GetFeeds(user.Id, 0, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Handle(200, "user.Profile", err)
|
ctx.Handle(500, "user.Profile", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
ctx.Data["Feeds"] = feeds
|
ctx.Data["Feeds"] = feeds
|
||||||
default:
|
default:
|
||||||
repos, err := models.GetRepositories(user)
|
repos, err := models.GetRepositories(user)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Handle(200, "user.Profile", err)
|
ctx.Handle(500, "user.Profile", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
ctx.Data["Repos"] = repos
|
ctx.Data["Repos"] = repos
|
||||||
|
@ -103,14 +103,14 @@ func SignIn(ctx *middleware.Context) {
|
||||||
|
|
||||||
user, err = models.GetUserByName(userName)
|
user, err = models.GetUserByName(userName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.HTML(200, "user/signin")
|
ctx.HTML(500, "user/signin")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
secret := base.EncodeMd5(user.Rands + user.Passwd)
|
secret := base.EncodeMd5(user.Rands + user.Passwd)
|
||||||
value, _ := ctx.GetSecureCookie(secret, base.CookieRememberName)
|
value, _ := ctx.GetSecureCookie(secret, base.CookieRememberName)
|
||||||
if value != user.Name {
|
if value != user.Name {
|
||||||
ctx.HTML(200, "user/signin")
|
ctx.HTML(500, "user/signin")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,22 @@
|
||||||
<div class="masthead navbar" id="masthead">
|
<div class="masthead navbar" id="masthead">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<nav class="nav">
|
<nav class="nav">
|
||||||
<a id="nav-logo" class="nav-item{{if .PageIsHome}} active{{end}}" href="/"><img src="/img/favicon.png" alt="Gogs Logo" id="logo"></a>
|
<a id="nav-logo" class="nav-item pull-left{{if .PageIsHome}} active{{end}}" href="/"><img src="/img/favicon.png" alt="Gogs Logo" id="logo"></a>
|
||||||
<a class="nav-item{{if .PageIsUserDashboard}} active{{end}}" href="/">Dashboard</a>
|
<a class="nav-item pull-left{{if .PageIsUserDashboard}} active{{end}}" href="/">Dashboard</a>
|
||||||
<a class="nav-item{{if .PageIsHelp}} active{{end}}" href="https://github.com/gogits/gogs/wiki">Help</a>{{if .IsSigned}}
|
<a class="nav-item pull-left{{if .PageIsHelp}} active{{end}}" href="https://github.com/gogits/gogs/wiki">Help</a>{{if .IsSigned}}
|
||||||
|
{{if .Repository}}<form class="nav-item pull-left{{if .PageIsNewRepo}} active{{end}}" id="nav-search-form">
|
||||||
|
<div class="input-group">
|
||||||
|
<div class="input-group-btn">
|
||||||
|
<button type="button" class="btn btn-sm btn-default dropdown-toggle" data-toggle="dropdown">All Repositories <span class="caret"></span></button>
|
||||||
|
<ul class="dropdown-menu">
|
||||||
|
<li><a href="#">All Repositories</a></li>
|
||||||
|
<li class="divider"></li>
|
||||||
|
<li><a href="#">This Repository</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<input type="search" class="form-control input-sm" name="q" placeholder="search code, commits and issues"/>
|
||||||
|
</div>
|
||||||
|
</form>{{end}}
|
||||||
<a id="nav-out" class="nav-item navbar-right navbar-btn btn btn-danger" href="/user/logout/"><i class="fa fa-power-off fa-lg"></i></a>
|
<a id="nav-out" class="nav-item navbar-right navbar-btn btn btn-danger" href="/user/logout/"><i class="fa fa-power-off fa-lg"></i></a>
|
||||||
<a id="nav-avatar" class="nav-item navbar-right{{if .PageIsUserProfile}} active{{end}}" href="{{.SignedUser.HomeLink}}" data-toggle="tooltip" data-placement="bottom" title="{{.SignedUserName}}">
|
<a id="nav-avatar" class="nav-item navbar-right{{if .PageIsUserProfile}} active{{end}}" href="{{.SignedUser.HomeLink}}" data-toggle="tooltip" data-placement="bottom" title="{{.SignedUserName}}">
|
||||||
<img src="{{.SignedUser.AvatarLink}}?s=28" alt="user-avatar" title="username"/>
|
<img src="{{.SignedUser.AvatarLink}}?s=28" alt="user-avatar" title="username"/>
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
{{range .Diff.Files}}
|
{{range .Diff.Files}}
|
||||||
<li>
|
<li>
|
||||||
<div class="diff-counter count pull-right">
|
<div class="diff-counter count pull-right">
|
||||||
{{if Subtract .Addition .Deletion}}
|
{{if Add .Addition .Deletion}}
|
||||||
<span class="add" data-line="{{.Addition}}">{{.Addition}}</span>
|
<span class="add" data-line="{{.Addition}}">{{.Addition}}</span>
|
||||||
<span class="bar">
|
<span class="bar">
|
||||||
<span class="pull-left add"></span>
|
<span class="pull-left add"></span>
|
||||||
|
@ -53,7 +53,7 @@
|
||||||
<div class="panel panel-default diff-file-box diff-box file-content" id="diff-2">
|
<div class="panel panel-default diff-file-box diff-box file-content" id="diff-2">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<div class="diff-counter count pull-left">
|
<div class="diff-counter count pull-left">
|
||||||
{{if Subtract .Addition .Deletion}}
|
{{if Add .Addition .Deletion}}
|
||||||
<span class="add" data-line="{{.Addition}}">+ {{.Addition}}</span>
|
<span class="add" data-line="{{.Addition}}">+ {{.Addition}}</span>
|
||||||
<span class="bar">
|
<span class="bar">
|
||||||
<span class="pull-left add"></span>
|
<span class="pull-left add"></span>
|
||||||
|
@ -91,338 +91,12 @@
|
||||||
</tr>
|
</tr>
|
||||||
{{end}}
|
{{end}}
|
||||||
{{end}}
|
{{end}}
|
||||||
<!-- <tr class="same-code nl-2 ol-2">
|
|
||||||
<td class="lines-num lines-num-old">
|
|
||||||
<span rel="L1">2</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-num lines-num-new">
|
|
||||||
<span rel="L1">2</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-code">
|
|
||||||
<pre> "github.com/youtube/vitess/go/bson"</pre>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="same-code nl-3 ol-3">
|
|
||||||
<td class="lines-num lines-num-old">
|
|
||||||
<span rel="L3">3</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-num lines-num-new">
|
|
||||||
<span rel="L3">3</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-code">
|
|
||||||
<pre> "github.com/youtube/vitess/go/bson"</pre>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="add-code nl-4 ol-0">
|
|
||||||
<td class="lines-num lines-num-old">
|
|
||||||
<span rel="add">+</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-num lines-num-new">
|
|
||||||
<span rel="L4">4</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-code">
|
|
||||||
<pre> "github.com/youtube/vitess/go/bson"</pre>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="add-code nl-5 ol-0">
|
|
||||||
<td class="lines-num lines-num-old">
|
|
||||||
<span rel="add">+</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-num lines-num-new">
|
|
||||||
<span rel="L5">5</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-code">
|
|
||||||
<pre> "github.com/youtube/vitess/go/bson"</pre>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="del-code nl-0 ol-4">
|
|
||||||
<td class="lines-num lines-num-old">
|
|
||||||
<span rel="L4">4</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-num lines-num-new">
|
|
||||||
<span rel="del">-</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-code">
|
|
||||||
<pre> "github.com/youtube/vitess/go/bson"</pre>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="del-code nl-0 ol-5">
|
|
||||||
<td class="lines-num lines-num-old">
|
|
||||||
<span rel="L5">5</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-num lines-num-new">
|
|
||||||
<span rel="del">-</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-code">
|
|
||||||
<pre> "github.com/youtube/vitess/go/bson"</pre>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="del-code nl-0 ol-6">
|
|
||||||
<td class="lines-num lines-num-old">
|
|
||||||
<span rel="L6">6</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-num lines-num-new">
|
|
||||||
<span rel="del">-</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-code">
|
|
||||||
<pre> "github.com/youtube/vitess/go/bson"</pre>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="del-code nl-0 ol-7">
|
|
||||||
<td class="lines-num lines-num-old">
|
|
||||||
<span rel="L7">7</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-num lines-num-new">
|
|
||||||
<span rel="del">-</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-code">
|
|
||||||
<pre> "github.com/youtube/vitess/go/bson"</pre>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="same-code nl-6 ol-8">
|
|
||||||
<td class="lines-num lines-num-old">
|
|
||||||
<span rel="L8">8</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-num lines-num-new">
|
|
||||||
<span rel="L6">6</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-code">
|
|
||||||
<pre> "github.com/youtube/vitess/go/bson"</pre>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="same-code nl-7 ol-9">
|
|
||||||
<td class="lines-num lines-num-old">
|
|
||||||
<span rel="L1">9</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-num lines-num-new">
|
|
||||||
<span rel="L1">7</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-code">
|
|
||||||
<pre> "github.com/youtube/vitess/go/bson"</pre>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="same-code nl-8 ol-10">
|
|
||||||
<td class="lines-num lines-num-old">
|
|
||||||
<span rel="L1">10</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-num lines-num-new">
|
|
||||||
<span rel="L1">8</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-code">
|
|
||||||
<pre> "github.com/youtube/vitess/go/bson"</pre>
|
|
||||||
</td>
|
|
||||||
</tr> -->
|
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
||||||
<!-- <div class="panel panel-default diff-file-box diff-box file-content">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<div class="diff-counter count pull-left">
|
|
||||||
<span class="add" data-line="2">+ 2</span>
|
|
||||||
<span class="bar">
|
|
||||||
<span class="pull-left add"></span>
|
|
||||||
<span class="pull-left del"></span>
|
|
||||||
</span>
|
|
||||||
<span class="del" data-line="4">- 4</span>
|
|
||||||
</div>
|
|
||||||
<a class="btn btn-default btn-sm pull-right" href="#">View File</a>
|
|
||||||
<span class="file">data/test/bson_test/simple_type.go</span>
|
|
||||||
</div>
|
|
||||||
<div class="panel-body file-body file-code code-view code-diff">
|
|
||||||
<table>
|
|
||||||
<tbody>
|
|
||||||
<tr class="same-code nl-1 ol-1">
|
|
||||||
<td class="lines-num lines-num-old">
|
|
||||||
<span rel="L1">1</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-num lines-num-new">
|
|
||||||
<span rel="L1">1</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-code">
|
|
||||||
<pre> "github.com/youtube/vitess/go/bson"</pre>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="same-code nl-2 ol-2">
|
|
||||||
<td class="lines-num lines-num-old">
|
|
||||||
<span rel="L1">2</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-num lines-num-new">
|
|
||||||
<span rel="L1">2</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-code">
|
|
||||||
<pre> "github.com/youtube/vitess/go/bson"</pre>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="same-code nl-3 ol-3">
|
|
||||||
<td class="lines-num lines-num-old">
|
|
||||||
<span rel="L3">3</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-num lines-num-new">
|
|
||||||
<span rel="L3">3</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-code">
|
|
||||||
<pre> "github.com/youtube/vitess/go/bson"</pre>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="add-code nl-4 ol-0">
|
|
||||||
<td class="lines-num lines-num-old">
|
|
||||||
<span rel="add">+</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-num lines-num-new">
|
|
||||||
<span rel="L4">4</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-code">
|
|
||||||
<pre> "github.com/youtube/vitess/go/bson"</pre>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="add-code nl-5 ol-0">
|
|
||||||
<td class="lines-num lines-num-old">
|
|
||||||
<span rel="add">+</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-num lines-num-new">
|
|
||||||
<span rel="L5">5</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-code">
|
|
||||||
<pre> "github.com/youtube/vitess/go/bson"</pre>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="del-code nl-0 ol-4">
|
|
||||||
<td class="lines-num lines-num-old">
|
|
||||||
<span rel="L4">4</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-num lines-num-new">
|
|
||||||
<span rel="del">-</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-code">
|
|
||||||
<pre> "github.com/youtube/vitess/go/bson"</pre>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="del-code nl-0 ol-5">
|
|
||||||
<td class="lines-num lines-num-old">
|
|
||||||
<span rel="L5">5</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-num lines-num-new">
|
|
||||||
<span rel="del">-</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-code">
|
|
||||||
<pre> "github.com/youtube/vitess/go/bson"</pre>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="del-code nl-0 ol-6">
|
|
||||||
<td class="lines-num lines-num-old">
|
|
||||||
<span rel="L6">6</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-num lines-num-new">
|
|
||||||
<span rel="del">-</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-code">
|
|
||||||
<pre> "github.com/youtube/vitess/go/bson"</pre>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="del-code nl-0 ol-7">
|
|
||||||
<td class="lines-num lines-num-old">
|
|
||||||
<span rel="L7">7</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-num lines-num-new">
|
|
||||||
<span rel="del">-</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-code">
|
|
||||||
<pre> "github.com/youtube/vitess/go/bson"</pre>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="same-code nl-6 ol-8">
|
|
||||||
<td class="lines-num lines-num-old">
|
|
||||||
<span rel="L8">8</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-num lines-num-new">
|
|
||||||
<span rel="L6">6</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-code">
|
|
||||||
<pre> "github.com/youtube/vitess/go/bson"</pre>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="same-code nl-7 ol-9">
|
|
||||||
<td class="lines-num lines-num-old">
|
|
||||||
<span rel="L1">9</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-num lines-num-new">
|
|
||||||
<span rel="L1">7</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-code">
|
|
||||||
<pre> "github.com/youtube/vitess/go/bson"</pre>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="same-code nl-8 ol-10">
|
|
||||||
<td class="lines-num lines-num-old">
|
|
||||||
<span rel="L1">10</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-num lines-num-new">
|
|
||||||
<span rel="L1">8</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-code">
|
|
||||||
<pre> "github.com/youtube/vitess/go/bson"</pre>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="ellipsis-code">
|
|
||||||
<td class="text-center lines-ellipsis" colspan="2">
|
|
||||||
<i class="fa fa-ellipsis-h"></i>
|
|
||||||
</td>
|
|
||||||
<td class="lines-code">
|
|
||||||
<pre> "github.com/youtube/vitess/go/bson"</pre>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="same-code nl-8 ol-10">
|
|
||||||
<td class="lines-num lines-num-old">
|
|
||||||
<span rel="L1">10</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-num lines-num-new">
|
|
||||||
<span rel="L1">8</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-code">
|
|
||||||
<pre> "github.com/youtube/vitess/go/bson"</pre>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr class="same-code nl-8 ol-10">
|
|
||||||
<td class="lines-num lines-num-old">
|
|
||||||
<span rel="L1">10</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-num lines-num-new">
|
|
||||||
<span rel="L1">8</span>
|
|
||||||
</td>
|
|
||||||
<td class="lines-code">
|
|
||||||
<pre> "github.com/youtube/vitess/go/bson"</pre>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="panel panel-default diff-file-box diff-box file-content">
|
|
||||||
<div class="panel-heading">
|
|
||||||
<div class="diff-counter count pull-left">
|
|
||||||
<span class="add" data-line="0">BIN</span>
|
|
||||||
<span class="bar">
|
|
||||||
<span class="pull-left add"></span>
|
|
||||||
<span class="pull-left del"></span>
|
|
||||||
</span>
|
|
||||||
<span class="del" data-line="1"></span>
|
|
||||||
</div>
|
|
||||||
<a class="btn btn-default btn-sm pull-right" href="#">View File</a>
|
|
||||||
<span class="file">data/test/bson_test/simple_type.png</span>
|
|
||||||
</div>
|
|
||||||
<div class="panel-body file-body file-code code-view code-bin">
|
|
||||||
<table>
|
|
||||||
<tbody>
|
|
||||||
<tr class="text-center"><td><img src="http://1.gravatar.com/avatar/f72f7454ce9d710baa506394f68f4132?s=200" alt=""/></td></tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div> -->
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{template "base/footer" .}}
|
{{template "base/footer" .}}
|
||||||
|
|
Reference in a new issue