@@ -114,6 +114,7 @@ func runCert(ctx *cli.Context) { | |||||
SerialNumber: serialNumber, | SerialNumber: serialNumber, | ||||
Subject: pkix.Name{ | Subject: pkix.Name{ | ||||
Organization: []string{"Acme Co"}, | Organization: []string{"Acme Co"}, | ||||
CommonName: "Gogs", | |||||
}, | }, | ||||
NotBefore: notBefore, | NotBefore: notBefore, | ||||
NotAfter: notAfter, | NotAfter: notAfter, | ||||
@@ -82,7 +82,7 @@ func runServ(c *cli.Context) { | |||||
} | } | ||||
if len(c.Args()) < 1 { | if len(c.Args()) < 1 { | ||||
fail("Not enough arguments", "Not enough arugments") | |||||
fail("Not enough arguments", "Not enough arguments") | |||||
} | } | ||||
keys := strings.Split(c.Args()[0], "-") | keys := strings.Split(c.Args()[0], "-") | ||||
@@ -97,7 +97,7 @@ func runServ(c *cli.Context) { | |||||
user, err := models.GetUserByKeyId(keyId) | user, err := models.GetUserByKeyId(keyId) | ||||
if err != nil { | if err != nil { | ||||
fail("internal error", "Fail to get user by key ID(%d): %v", keyId, err) | |||||
fail("internal error", "Failed to get user by key ID(%d): %v", keyId, err) | |||||
} | } | ||||
cmd := os.Getenv("SSH_ORIGINAL_COMMAND") | cmd := os.Getenv("SSH_ORIGINAL_COMMAND") | ||||
@@ -113,7 +113,7 @@ func runServ(c *cli.Context) { | |||||
repoPath := strings.Trim(args, "'") | repoPath := strings.Trim(args, "'") | ||||
rr := strings.SplitN(repoPath, "/", 2) | rr := strings.SplitN(repoPath, "/", 2) | ||||
if len(rr) != 2 { | if len(rr) != 2 { | ||||
fail("Invalid repository path", "Invalide repository path: %v", args) | |||||
fail("Invalid repository path", "Invalid repository path: %v", args) | |||||
} | } | ||||
repoUserName := rr[0] | repoUserName := rr[0] | ||||
repoName := strings.TrimSuffix(rr[1], ".git") | repoName := strings.TrimSuffix(rr[1], ".git") | ||||
@@ -123,7 +123,7 @@ func runServ(c *cli.Context) { | |||||
if err == models.ErrUserNotExist { | if err == models.ErrUserNotExist { | ||||
fail("Repository owner does not exist", "Unregistered owner: %s", repoUserName) | fail("Repository owner does not exist", "Unregistered owner: %s", repoUserName) | ||||
} | } | ||||
fail("Internal error", "Fail to get repository owner(%s): %v", repoUserName, err) | |||||
fail("Internal error", "Failed to get repository owner(%s): %v", repoUserName, err) | |||||
} | } | ||||
repo, err := models.GetRepositoryByName(repoUser.Id, repoName) | repo, err := models.GetRepositoryByName(repoUser.Id, repoName) | ||||
@@ -135,7 +135,7 @@ func runServ(c *cli.Context) { | |||||
fail(_ACCESS_DENIED_MESSAGE, "Repository does not exist: %s/%s", repoUser.Name, repoName) | fail(_ACCESS_DENIED_MESSAGE, "Repository does not exist: %s/%s", repoUser.Name, repoName) | ||||
} | } | ||||
} | } | ||||
fail("Internal error", "Fail to get repository: %v", err) | |||||
fail("Internal error", "Failed to get repository: %v", err) | |||||
} | } | ||||
requestedMode, has := COMMANDS[verb] | requestedMode, has := COMMANDS[verb] | ||||
@@ -171,7 +171,7 @@ func runServ(c *cli.Context) { | |||||
gitcmd.Stdin = os.Stdin | gitcmd.Stdin = os.Stdin | ||||
gitcmd.Stderr = os.Stderr | gitcmd.Stderr = os.Stderr | ||||
if err = gitcmd.Run(); err != nil { | if err = gitcmd.Run(); err != nil { | ||||
fail("Internal error", "Fail to execute git command: %v", err) | |||||
fail("Internal error", "Failed to execute git command: %v", err) | |||||
} | } | ||||
if requestedMode == models.ACCESS_MODE_WRITE { | if requestedMode == models.ACCESS_MODE_WRITE { | ||||
@@ -184,7 +184,7 @@ func runServ(c *cli.Context) { | |||||
err = models.Update(task.RefName, task.OldCommitId, task.NewCommitId, | err = models.Update(task.RefName, task.OldCommitId, task.NewCommitId, | ||||
user.Name, repoUserName, repoName, user.Id) | user.Name, repoUserName, repoName, user.Id) | ||||
if err != nil { | if err != nil { | ||||
log.GitLogger.Error(2, "Fail to update: %v", err) | |||||
log.GitLogger.Error(2, "Failed to update: %v", err) | |||||
} | } | ||||
} | } | ||||
@@ -343,6 +343,7 @@ releases=Veröffentlichungen | |||||
file_raw=Roh | file_raw=Roh | ||||
file_history=Verlauf | file_history=Verlauf | ||||
file_view_raw=Ansicht Roh | file_view_raw=Ansicht Roh | ||||
file_permalink=Permalink | |||||
commits.commits=Commits | commits.commits=Commits | ||||
commits.search=Durchsuche Commits | commits.search=Durchsuche Commits | ||||
@@ -353,6 +353,7 @@ releases = Releases | |||||
file_raw = Raw | file_raw = Raw | ||||
file_history = History | file_history = History | ||||
file_view_raw = View Raw | file_view_raw = View Raw | ||||
file_permalink = Permalink | |||||
commits.commits = Commits | commits.commits = Commits | ||||
commits.search = Search commits | commits.search = Search commits | ||||
@@ -343,6 +343,7 @@ releases=Releases | |||||
file_raw=Raw | file_raw=Raw | ||||
file_history=Histórico | file_history=Histórico | ||||
file_view_raw=Ver Raw | file_view_raw=Ver Raw | ||||
file_permalink=Permalink | |||||
commits.commits=Commits | commits.commits=Commits | ||||
commits.search=Buscar Commits | commits.search=Buscar Commits | ||||
@@ -343,6 +343,7 @@ releases=Publications | |||||
file_raw=Raw | file_raw=Raw | ||||
file_history=Historique | file_history=Historique | ||||
file_view_raw=Voir le Raw | file_view_raw=Voir le Raw | ||||
file_permalink=Permalink | |||||
commits.commits=Commissions | commits.commits=Commissions | ||||
commits.search=Rechercher des commissions | commits.search=Rechercher des commissions | ||||
@@ -343,6 +343,7 @@ releases=リリース | |||||
file_raw=生データ | file_raw=生データ | ||||
file_history=履歴 | file_history=履歴 | ||||
file_view_raw=生データを見る | file_view_raw=生データを見る | ||||
file_permalink=Permalink | |||||
commits.commits=コミット | commits.commits=コミット | ||||
commits.search=コミットの検索 | commits.search=コミットの検索 | ||||
@@ -341,6 +341,7 @@ releases=Laidieni | |||||
file_raw=Neapstrādāts | file_raw=Neapstrādāts | ||||
file_history=Vēsture | file_history=Vēsture | ||||
file_view_raw=Rādīt neapstrādātu | file_view_raw=Rādīt neapstrādātu | ||||
file_permalink=Permalink | |||||
commits.commits=Revīzijas | commits.commits=Revīzijas | ||||
commits.search=Meklēt revīzijas | commits.search=Meklēt revīzijas | ||||
@@ -343,6 +343,7 @@ releases=Publicaties | |||||
file_raw=Ruwe | file_raw=Ruwe | ||||
file_history=Geschiedenis | file_history=Geschiedenis | ||||
file_view_raw=Weergave ruwe | file_view_raw=Weergave ruwe | ||||
file_permalink=Permalink | |||||
commits.commits=Commits | commits.commits=Commits | ||||
commits.search=Zoeken | commits.search=Zoeken | ||||
@@ -343,6 +343,7 @@ releases=Wydania | |||||
file_raw=Czysty | file_raw=Czysty | ||||
file_history=Historia | file_history=Historia | ||||
file_view_raw=Zobacz czysty | file_view_raw=Zobacz czysty | ||||
file_permalink=Permalink | |||||
commits.commits=Commity | commits.commits=Commity | ||||
commits.search=Przeszukaj commity | commits.search=Przeszukaj commity | ||||
@@ -343,6 +343,7 @@ releases=Lançamentos | |||||
file_raw=Cru | file_raw=Cru | ||||
file_history=Histórico | file_history=Histórico | ||||
file_view_raw=Ver cru | file_view_raw=Ver cru | ||||
file_permalink=Permalink | |||||
commits.commits=Commits | commits.commits=Commits | ||||
commits.search=Pesquisar commits | commits.search=Pesquisar commits | ||||
@@ -343,6 +343,7 @@ releases=Релизы | |||||
file_raw=Исходник | file_raw=Исходник | ||||
file_history=История | file_history=История | ||||
file_view_raw=Посмотреть исходник | file_view_raw=Посмотреть исходник | ||||
file_permalink=Permalink | |||||
commits.commits=Коммиты | commits.commits=Коммиты | ||||
commits.search=Поиск коммитов | commits.search=Поиск коммитов | ||||
@@ -343,6 +343,7 @@ releases=版本发布 | |||||
file_raw=原始文件 | file_raw=原始文件 | ||||
file_history=文件历史 | file_history=文件历史 | ||||
file_view_raw=查看原始文件 | file_view_raw=查看原始文件 | ||||
file_permalink=Permalink | |||||
commits.commits=次代码提交 | commits.commits=次代码提交 | ||||
commits.search=搜索提交历史 | commits.search=搜索提交历史 | ||||
@@ -341,6 +341,7 @@ releases=版本發佈 | |||||
file_raw=原始文件 | file_raw=原始文件 | ||||
file_history=文件歷史 | file_history=文件歷史 | ||||
file_view_raw=查看原始文件 | file_view_raw=查看原始文件 | ||||
file_permalink=Permalink | |||||
commits.commits=次代碼提交 | commits.commits=次代碼提交 | ||||
commits.search=搜索提交歷史 | commits.search=搜索提交歷史 | ||||
@@ -3,13 +3,13 @@ Docker | |||||
TOOLS ARE WRITTEN FOR TESTING AND TO SEE WHAT IT IS! | TOOLS ARE WRITTEN FOR TESTING AND TO SEE WHAT IT IS! | ||||
For this to work you will need the nifty docker tool [fig]. | |||||
For this to work you will need the nifty docker tool [docker-compose]. | |||||
The most simple setup will look like this: | The most simple setup will look like this: | ||||
```sh | ```sh | ||||
./assemble_blocks.sh docker_gogs w_db option_db_mysql | ./assemble_blocks.sh docker_gogs w_db option_db_mysql | ||||
fig up | |||||
docker-compose up | |||||
``` | ``` | ||||
@@ -22,21 +22,21 @@ How does it work | |||||
---------------- | ---------------- | ||||
`./assemble_blocks.sh` will look in `blocks` for subdirectories. | `./assemble_blocks.sh` will look in `blocks` for subdirectories. | ||||
In the subdirectories there are three relevant files: `Dockerfile`, `config` and `fig`. | |||||
In the subdirectories there are three relevant files: `Dockerfile`, `config` and `docker-compose`. | |||||
`Dockerfile` will be copied to `docker/` (also means last `Dockerfile` wins). | `Dockerfile` will be copied to `docker/` (also means last `Dockerfile` wins). | ||||
The `config` file contains lines which will in the gogs docker container end up in `$GOGS_PATH/custom/config/app.ini` and by this gogs will be configured. | The `config` file contains lines which will in the gogs docker container end up in `$GOGS_PATH/custom/config/app.ini` and by this gogs will be configured. | ||||
Here you can define things like the MySQL server for your database block. | Here you can define things like the MySQL server for your database block. | ||||
The `fig` file will just be added to `fig.yml`, which is used by fig to manage your containers. | |||||
The `docker-compose` file will just be added to `docker-compose.yml`, which is used by docker-compose to manage your containers. | |||||
This includes container linking! | This includes container linking! | ||||
Just have a look at them and it will be clear how to write your own blocks. | Just have a look at them and it will be clear how to write your own blocks. | ||||
Just some things | Just some things | ||||
- all files (`Dockerfile`, `fig` and `config`) are optional | |||||
- all files (`Dockerfile`, `docker-compose` and `config`) are optional | |||||
- the gogs block should always be the first block | - the gogs block should always be the first block | ||||
Currently the blocks are designed that, the blocks that start with `docker` pull in the base docker image. | Currently the blocks are designed that, the blocks that start with `docker` pull in the base docker image. | ||||
@@ -57,14 +57,11 @@ Here is a more elaborated example | |||||
```sh | ```sh | ||||
./assemble_blocks.sh docker_gogs w_db_cache_session option_db_postgresql option_cache_redis option_session_mysql | ./assemble_blocks.sh docker_gogs w_db_cache_session option_db_postgresql option_cache_redis option_session_mysql | ||||
fig up | |||||
docker-compose up | |||||
``` | ``` | ||||
This will set up four containters and link them proberly. One for each of | This will set up four containters and link them proberly. One for each of | ||||
- gogs | |||||
- database (postgresql) | |||||
- cache (redis) | |||||
docker-compose | |||||
- session (mysql) | - session (mysql) | ||||
WARNING: This will not work at the Moment! MySQL session is broken! | WARNING: This will not work at the Moment! MySQL session is broken! | ||||
@@ -73,7 +70,7 @@ WARNING: This will not work at the Moment! MySQL session is broken! | |||||
Remark | Remark | ||||
------ | ------ | ||||
After you execute `assemble_blocks.sh` you should always trigger `fig build` to inculde the the new init script `init_gogs.sh` in the docker image. | |||||
After you execute `assemble_blocks.sh` you should always trigger `docker-compose build` to inculde the the new init script `init_gogs.sh` in the docker image. | |||||
If you want to use another GoGS docker file, but keep everything else the same, you can create a block, e.g. `docker_gogs_custom`, with only a `Dockerfile` and call | If you want to use another GoGS docker file, but keep everything else the same, you can create a block, e.g. `docker_gogs_custom`, with only a `Dockerfile` and call | ||||
@@ -86,4 +83,4 @@ This will pull in the `Dockerfile` from `docker_gogs` instead of the one from `d | |||||
`Dockerfile`s for the `master` and `dev` branch are provided as `docker_gogs` and `docker_gogs_dev` | `Dockerfile`s for the `master` and `dev` branch are provided as `docker_gogs` and `docker_gogs_dev` | ||||
[fig]:http://www.fig.sh/ | |||||
[docker-compose]:https://docs.docker.com/compose/ |
@@ -10,8 +10,8 @@ gogs_config_file=conf.tmp | |||||
gogs_config=config | gogs_config=config | ||||
gogs_init_file=$docker_dir/init_gogs.sh | gogs_init_file=$docker_dir/init_gogs.sh | ||||
fig_file=fig.yml | |||||
fig_config=fig | |||||
compose_file=docker-compose.yml | |||||
compose_config=docker-compose | |||||
gogs_init_template=$template_dir/init_gogs.sh.tpl | gogs_init_template=$template_dir/init_gogs.sh.tpl | ||||
@@ -28,7 +28,7 @@ if [ "$#" == 0 ]; then | |||||
exit 0 | exit 0 | ||||
fi | fi | ||||
for file in $gogs_config_file $fig_file; do | |||||
for file in $gogs_config_file $compose_file; do | |||||
if [ -e $file ]; then | if [ -e $file ]; then | ||||
echo "Deleting $file" | echo "Deleting $file" | ||||
rm $file | rm $file | ||||
@@ -53,10 +53,10 @@ for dir in $@; do | |||||
echo "" >> $gogs_config_file | echo "" >> $gogs_config_file | ||||
fi | fi | ||||
if [ -e $current_dir/$fig_config ]; then | |||||
echo "Adding $current_dir/$fig_config to $fig_file" | |||||
cat $current_dir/fig >> $fig_file | |||||
echo "" >> $fig_file | |||||
if [ -e $current_dir/$compose_config ]; then | |||||
echo "Adding $current_dir/$compose_config to $compose_file" | |||||
cat $current_dir/$compose_config >> $compose_file | |||||
echo "" >> $compose_file | |||||
fi | fi | ||||
done | done | ||||
@@ -69,4 +69,4 @@ d | |||||
if [ -e $gogs_config_file ]; then | if [ -e $gogs_config_file ]; then | ||||
echo "Removing temporary GoGS config" | echo "Removing temporary GoGS config" | ||||
rm $gogs_config_file | rm $gogs_config_file | ||||
fi | |||||
fi |
@@ -1,23 +1,20 @@ | |||||
FROM ubuntu:14.04 | |||||
FROM buildpack-deps:trusty-scm | |||||
# This part is taken from the official docker image -------------------- | # This part is taken from the official docker image -------------------- | ||||
RUN apt-get update && apt-get install -y \ | RUN apt-get update && apt-get install -y \ | ||||
build-essential ca-certificates curl \ | |||||
bzr git mercurial openssh-client\ | |||||
--no-install-recommends | |||||
build-essential --no-install-recommends | |||||
ENV GOLANG_VERSION 1.3 | ENV GOLANG_VERSION 1.3 | ||||
RUN curl -sSL http://golang.org/dl/go$GOLANG_VERSION.src.tar.gz \ | |||||
| tar -v -C /usr/src -xz | |||||
WORKDIR /usr/src/go | |||||
RUN curl -sSL https://golang.org/dl/go$GOLANG_VERSION.src.tar.gz \ | |||||
| tar -v -C /usr/src -xz | |||||
RUN cd src && ./make.bash --no-clean 2>&1 | |||||
RUN cd /usr/src/go/src && ./make.bash --no-clean 2>&1 | |||||
ENV PATH /usr/src/go/bin:$PATH | ENV PATH /usr/src/go/bin:$PATH | ||||
RUN mkdir -p /go/src | |||||
RUN mkdir -p /go/src /go/bin && chmod -R 777 /go | |||||
ENV GOPATH /go | ENV GOPATH /go | ||||
ENV PATH /go/bin:$PATH | ENV PATH /go/bin:$PATH | ||||
WORKDIR /go | WORKDIR /go | ||||
@@ -1,24 +1,20 @@ | |||||
FROM ubuntu:14.04 | |||||
FROM buildpack-deps:trusty-scm | |||||
# This part is derived from the official docker image ------------------ | |||||
# This part is taken from the official docker image -------------------- | |||||
RUN DEBIAN_FRONTEND=noninteractive apt-get update && \ | |||||
apt-get install -qy \ | |||||
build-essential ca-certificates curl \ | |||||
bzr git mercurial openssh-client\ | |||||
--no-install-recommends | |||||
RUN apt-get update && apt-get install -y \ | |||||
build-essential --no-install-recommends | |||||
ENV GOLANG_VERSION 1.3 | ENV GOLANG_VERSION 1.3 | ||||
RUN curl -sSL http://golang.org/dl/go$GOLANG_VERSION.src.tar.gz \ | |||||
| tar -v -C /usr/src -xz | |||||
WORKDIR /usr/src/go | |||||
RUN curl -sSL https://golang.org/dl/go$GOLANG_VERSION.src.tar.gz \ | |||||
| tar -v -C /usr/src -xz | |||||
RUN cd src && ./make.bash --no-clean 2>&1 | |||||
RUN cd /usr/src/go/src && ./make.bash --no-clean 2>&1 | |||||
ENV PATH /usr/src/go/bin:$PATH | ENV PATH /usr/src/go/bin:$PATH | ||||
RUN mkdir -p /go/src | |||||
RUN mkdir -p /go/src /go/bin && chmod -R 777 /go | |||||
ENV GOPATH /go | ENV GOPATH /go | ||||
ENV PATH /go/bin:$PATH | ENV PATH /go/bin:$PATH | ||||
WORKDIR /go | WORKDIR /go | ||||
@@ -173,13 +173,12 @@ func (repo *Repository) refreshCollaboratorAccesses(e Engine, accessMap map[int6 | |||||
func (repo *Repository) recalculateTeamAccesses(e Engine, ignTeamID int64) (err error) { | func (repo *Repository) recalculateTeamAccesses(e Engine, ignTeamID int64) (err error) { | ||||
accessMap := make(map[int64]AccessMode, 20) | accessMap := make(map[int64]AccessMode, 20) | ||||
if err = repo.refreshCollaboratorAccesses(e, accessMap); err != nil { | |||||
return fmt.Errorf("refreshCollaboratorAccesses: %v", err) | |||||
} | |||||
if err = repo.getOwner(e); err != nil { | if err = repo.getOwner(e); err != nil { | ||||
return err | return err | ||||
} | } | ||||
if err = repo.refreshCollaboratorAccesses(e, accessMap); err != nil { | |||||
return fmt.Errorf("refreshCollaboratorAccesses: %v", err) | |||||
} | |||||
if repo.Owner.IsOrganization() { | if repo.Owner.IsOrganization() { | ||||
if err = repo.Owner.getTeams(e); err != nil { | if err = repo.Owner.getTeams(e); err != nil { | ||||
return err | return err | ||||
@@ -11,6 +11,7 @@ import ( | |||||
) | ) | ||||
type AdminEditUserForm struct { | type AdminEditUserForm struct { | ||||
FullName string `form:"fullname" binding:"MaxSize(100)"` | |||||
Email string `binding:"Required;Email;MaxSize(50)"` | Email string `binding:"Required;Email;MaxSize(50)"` | ||||
Password string `binding:"OmitEmpty;MinSize(6);MaxSize(255)"` | Password string `binding:"OmitEmpty;MinSize(6);MaxSize(255)"` | ||||
Website string `binding:"MaxSize(50)"` | Website string `binding:"MaxSize(50)"` | ||||
@@ -116,7 +116,7 @@ func (f *AddEmailForm) Validate(ctx *macaron.Context, errs binding.Errors) bindi | |||||
} | } | ||||
type ChangePasswordForm struct { | type ChangePasswordForm struct { | ||||
OldPassword string `form:"old_password" binding:"Required;MinSize(6);MaxSize(255)"` | |||||
OldPassword string `form:"old_password" binding:"Required;MinSize(1);MaxSize(255)"` | |||||
Password string `form:"password" binding:"Required;MinSize(6);MaxSize(255)"` | Password string `form:"password" binding:"Required;MinSize(6);MaxSize(255)"` | ||||
Retype string `form:"retype"` | Retype string `form:"retype"` | ||||
} | } | ||||
@@ -198,7 +198,7 @@ func RenderRawMarkdown(body []byte, urlPrefix string) []byte { | |||||
extensions |= blackfriday.EXTENSION_FENCED_CODE | extensions |= blackfriday.EXTENSION_FENCED_CODE | ||||
extensions |= blackfriday.EXTENSION_AUTOLINK | extensions |= blackfriday.EXTENSION_AUTOLINK | ||||
extensions |= blackfriday.EXTENSION_STRIKETHROUGH | extensions |= blackfriday.EXTENSION_STRIKETHROUGH | ||||
extensions |= blackfriday.EXTENSION_HARD_LINE_BREAK | |||||
//extensions |= blackfriday.EXTENSION_HARD_LINE_BREAK | |||||
extensions |= blackfriday.EXTENSION_SPACE_HEADERS | extensions |= blackfriday.EXTENSION_SPACE_HEADERS | ||||
extensions |= blackfriday.EXTENSION_NO_EMPTY_LINE_BEFORE_BLOCK | extensions |= blackfriday.EXTENSION_NO_EMPTY_LINE_BEFORE_BLOCK | ||||
@@ -18,8 +18,6 @@ case "$1" in | |||||
chown ${APP_USER}.${APP_GROUP} $(dirname ${APP_CONFIG}) | chown ${APP_USER}.${APP_GROUP} $(dirname ${APP_CONFIG}) | ||||
[ -f ${APP_CONFIG} ] || ${CLI} run cp conf/app.ini ${APP_CONFIG} | [ -f ${APP_CONFIG} ] || ${CLI} run cp conf/app.ini ${APP_CONFIG} | ||||
${CLI} config:set USER=${APP_USER} | ${CLI} config:set USER=${APP_USER} | ||||
PORT=$(${CLI} config:get PORT || echo "6000") | |||||
sed -i "s|HTTP_PORT = 3000|HTTP_PORT = ${PORT}|" ${APP_CONFIG} | |||||
sed -i "s|RUN_USER = git|RUN_USER = ${APP_USER}|" ${APP_CONFIG} | sed -i "s|RUN_USER = git|RUN_USER = ${APP_USER}|" ${APP_CONFIG} | ||||
sed -i "s|RUN_MODE = dev|RUN_MODE = prod|" ${APP_CONFIG} | sed -i "s|RUN_MODE = dev|RUN_MODE = prod|" ${APP_CONFIG} | ||||
@@ -185,6 +185,7 @@ func EditUserPost(ctx *middleware.Context, form auth.AdminEditUserForm) { | |||||
u.EncodePasswd() | u.EncodePasswd() | ||||
} | } | ||||
u.FullName = form.FullName | |||||
u.Email = form.Email | u.Email = form.Email | ||||
u.Website = form.Website | u.Website = form.Website | ||||
u.Location = form.Location | u.Location = form.Location | ||||
@@ -27,7 +27,6 @@ func ServeBlob(ctx *middleware.Context, blob *git.Blob) error { | |||||
_, isTextFile := base.IsTextFile(buf) | _, isTextFile := base.IsTextFile(buf) | ||||
_, isImageFile := base.IsImageFile(buf) | _, isImageFile := base.IsImageFile(buf) | ||||
ctx.Resp.Header().Set("Content-Type", "text/plain") | |||||
if !isTextFile && !isImageFile { | if !isTextFile && !isImageFile { | ||||
ctx.Resp.Header().Set("Content-Disposition", "attachment; filename="+path.Base(ctx.Repo.TreeName)) | ctx.Resp.Header().Set("Content-Disposition", "attachment; filename="+path.Base(ctx.Repo.TreeName)) | ||||
ctx.Resp.Header().Set("Content-Transfer-Encoding", "binary") | ctx.Resp.Header().Set("Content-Transfer-Encoding", "binary") | ||||
@@ -152,6 +152,7 @@ func ShowSSHKeys(ctx *middleware.Context, uid int64) { | |||||
var buf bytes.Buffer | var buf bytes.Buffer | ||||
for i := range keys { | for i := range keys { | ||||
buf.WriteString(keys[i].OmitEmail()) | buf.WriteString(keys[i].OmitEmail()) | ||||
buf.WriteString("\n") | |||||
} | } | ||||
ctx.RenderData(200, buf.Bytes()) | ctx.RenderData(200, buf.Bytes()) | ||||
} | } | ||||
@@ -4,8 +4,14 @@ rm -rf $outPath | |||||
mkdir $outPath | mkdir $outPath | ||||
go build ../gogs.go | go build ../gogs.go | ||||
chmod +x gogs | |||||
mv gogs $outPath/ | |||||
PLATFORM=`uname | cut -d _ -f 1` | |||||
if [ $PLATFORM = "MINGW32" ] || [ $PLATFORM = "MINGW64" ] || [ $PLATFORM = "CYGWIN" ]; then | |||||
GOGS_EXE=gogs.exe | |||||
else | |||||
GOGS_EXE=gogs | |||||
fi | |||||
chmod +x $GOGS_EXE | |||||
mv $GOGS_EXE $outPath/ | |||||
cp -r ../conf/ $outPath/conf/ | cp -r ../conf/ $outPath/conf/ | ||||
cp -r ../custom/ $outPath/custom/ | cp -r ../custom/ $outPath/custom/ | ||||
@@ -49,10 +49,12 @@ do_start() | |||||
# 1 if daemon was already running | # 1 if daemon was already running | ||||
# 2 if daemon could not be started | # 2 if daemon could not be started | ||||
sh -c "start-stop-daemon --start --quiet --pidfile $PIDFILE --make-pidfile \\ | sh -c "start-stop-daemon --start --quiet --pidfile $PIDFILE --make-pidfile \\ | ||||
--exec $DAEMON -- $DAEMON_ARGS --test > /dev/null \\ | |||||
--test --chdir $WORKINGDIR --chuid $USER \\ | |||||
--exec $DAEMON -- $DAEMON_ARGS > /dev/null \\ | |||||
|| return 1" | || return 1" | ||||
sh -c "start-stop-daemon --start --quiet --pidfile $PIDFILE --make-pidfile \\ | sh -c "start-stop-daemon --start --quiet --pidfile $PIDFILE --make-pidfile \\ | ||||
--background --exec /bin/su -- - $USER -c \"cd \\\"$WORKINGDIR\\\" && $DAEMON -- $DAEMON_ARGS\" \\ | |||||
--background --chdir $WORKINGDIR --chuid $USER \\ | |||||
--exec $DAEMON -- $DAEMON_ARGS \\ | |||||
|| return 2" | || return 2" | ||||
} | } | ||||
@@ -21,7 +21,7 @@ load_rc_config $name | |||||
: ${gogs_enable:="NO"} | : ${gogs_enable:="NO"} | ||||
: ${gogs_directory:="/home/git"} | : ${gogs_directory:="/home/git"} | ||||
command="${gogs_directory}/scripts/start.sh" | |||||
command="${gogs_directory}/gogs web" | |||||
pidfile="${gogs_directory}/${name}.pid" | pidfile="${gogs_directory}/${name}.pid" | ||||
@@ -14,7 +14,7 @@ Group=git | |||||
WorkingDirectory=/home/git/gogs | WorkingDirectory=/home/git/gogs | ||||
ExecStart=/home/git/gogs/gogs web | ExecStart=/home/git/gogs/gogs web | ||||
Restart=always | Restart=always | ||||
Environment="USER=git","HOME=/home/git" | |||||
Environment=USER=git HOME=/home/git | |||||
[Install] | [Install] | ||||
WantedBy=multi-user.target | WantedBy=multi-user.target |
@@ -33,6 +33,10 @@ | |||||
<label class="text-left">{{.User.Name}}</label> | <label class="text-left">{{.User.Name}}</label> | ||||
</div> | </div> | ||||
<div class="field"> | <div class="field"> | ||||
<label for="full-name">{{.i18n.Tr "settings.full_name"}}</label> | |||||
<input class="ipt ipt-large ipt-radius {{if .Err_FullName}}ipt-error{{end}}" id="full-name" name="fullname" type="text" value="{{.User.FullName}}" /> | |||||
</div> | |||||
<div class="field"> | |||||
<label class="req" for="email">{{.i18n.Tr "email"}}</label> | <label class="req" for="email">{{.i18n.Tr "email"}}</label> | ||||
<input class="ipt ipt-large ipt-radius {{if .Err_Email}}ipt-error{{end}}" id="email" name="email" type="email" value="{{.User.Email}}" required/> | <input class="ipt ipt-large ipt-radius {{if .Err_Email}}ipt-error{{end}}" id="email" name="email" type="email" value="{{.User.Email}}" required/> | ||||
</div> | </div> | ||||
@@ -6,6 +6,7 @@ | |||||
<meta name="author" content="Gogs - Go Git Service" /> | <meta name="author" content="Gogs - Go Git Service" /> | ||||
<meta name="description" content="Gogs(Go Git Service) a painless self-hosted Git Service written in Go" /> | <meta name="description" content="Gogs(Go Git Service) a painless self-hosted Git Service written in Go" /> | ||||
<meta name="keywords" content="go, git, self-hosted, gogs"> | <meta name="keywords" content="go, git, self-hosted, gogs"> | ||||
<meta name="referrer" content="no-referrer" /> | |||||
<meta name="_csrf" content="{{.CsrfToken}}" /> | <meta name="_csrf" content="{{.CsrfToken}}" /> | ||||
{{if .GoGetImport}} | {{if .GoGetImport}} | ||||
<meta name="go-import" content="{{.GoGetImport}} git {{.CloneLink.HTTPS}}"> | <meta name="go-import" content="{{.GoGetImport}} git {{.CloneLink.HTTPS}}"> | ||||
@@ -8,6 +8,7 @@ | |||||
<meta name="author" content="Gogs - Go Git Service" /> | <meta name="author" content="Gogs - Go Git Service" /> | ||||
<meta name="description" content="Gogs(Go Git Service) is a GitHub-like clone in the Go Programming Language" /> | <meta name="description" content="Gogs(Go Git Service) is a GitHub-like clone in the Go Programming Language" /> | ||||
<meta name="keywords" content="go, git"> | <meta name="keywords" content="go, git"> | ||||
<meta name="referrer" content="no-referrer" /> | |||||
<meta name="_csrf" content="{{.CsrfToken}}" /> | <meta name="_csrf" content="{{.CsrfToken}}" /> | ||||
{{if .GoGetImport}}<meta name="go-import" content="{{.GoGetImport}} git {{.CloneLink.HTTPS}}">{{end}} | {{if .GoGetImport}}<meta name="go-import" content="{{.GoGetImport}} git {{.CloneLink.HTTPS}}">{{end}} | ||||
@@ -185,7 +185,7 @@ | |||||
</div> | </div> | ||||
<div class="inline field {{if .Err_AdminPasswd}}error{{end}}"> | <div class="inline field {{if .Err_AdminPasswd}}error{{end}}"> | ||||
<label for="admin_passwd">{{.i18n.Tr "install.admin_password"}}</label> | <label for="admin_passwd">{{.i18n.Tr "install.admin_password"}}</label> | ||||
<input id="admin_passwd" name="admin_passwd" value="{{.admin_passwd}}"> | |||||
<input id="admin_passwd" name="admin_passwd" type="password" value="{{.admin_passwd}}"> | |||||
</div> | </div> | ||||
<div class="inline field {{if .Err_AdminPasswd}}error{{end}}"> | <div class="inline field {{if .Err_AdminPasswd}}error{{end}}"> | ||||
<label for="admin_confirm_passwd">{{.i18n.Tr "install.confirm_password"}}</label> | <label for="admin_confirm_passwd">{{.i18n.Tr "install.confirm_password"}}</label> | ||||
@@ -208,4 +208,4 @@ | |||||
</div> | </div> | ||||
</div> | </div> | ||||
</div> | </div> | ||||
{{template "base/footer" .}} | |||||
{{template "base/footer" .}} |
@@ -6,6 +6,7 @@ | |||||
<meta name="author" content="Gogs - Go Git Service" /> | <meta name="author" content="Gogs - Go Git Service" /> | ||||
<meta name="description" content="Gogs(Go Git Service) a painless self-hosted Git Service written in Go" /> | <meta name="description" content="Gogs(Go Git Service) a painless self-hosted Git Service written in Go" /> | ||||
<meta name="keywords" content="go, git, self-hosted, gogs"> | <meta name="keywords" content="go, git, self-hosted, gogs"> | ||||
<meta name="referrer" content="no-referrer" /> | |||||
<meta name="_csrf" content="{{.CsrfToken}}" /> | <meta name="_csrf" content="{{.CsrfToken}}" /> | ||||
{{if .GoGetImport}}<meta name="go-import" content="{{.GoGetImport}} git {{.CloneLink.HTTPS}}">{{end}} | {{if .GoGetImport}}<meta name="go-import" content="{{.GoGetImport}} git {{.CloneLink.HTTPS}}">{{end}} | ||||
@@ -12,6 +12,11 @@ | |||||
<strong class="file-name">{{.FileName}}</strong><span class="file-size">{{FileSize .FileSize}}</span> | <strong class="file-name">{{.FileName}}</strong><span class="file-size">{{FileSize .FileSize}}</span> | ||||
{{end}} | {{end}} | ||||
{{if not .ReadmeInList}} | {{if not .ReadmeInList}} | ||||
{{if not .IsCommit}} | |||||
<a class="right" href="{{.RepoLink}}/src/{{.CommitId}}/{{.TreeName}}"> | |||||
<button class="btn btn-medium btn-gray btn-right-radius btn-comb">{{.i18n.Tr "repo.file_permalink"}}</button> | |||||
</a> | |||||
{{end}} | |||||
<a class="right" href="{{.RepoLink}}/commits/{{EscapePound .BranchName}}/{{.TreeName}}"> | <a class="right" href="{{.RepoLink}}/commits/{{EscapePound .BranchName}}/{{.TreeName}}"> | ||||
<button class="btn btn-medium btn-gray btn-right-radius btn-comb">{{.i18n.Tr "repo.file_history"}}</button> | <button class="btn btn-medium btn-gray btn-right-radius btn-comb">{{.i18n.Tr "repo.file_history"}}</button> | ||||
</a> | </a> | ||||