Gogs简单创建git-hook自动同步代码

  • 内容
  • 评论
  • 相关

顶部喂猫。

之前用docker搭建了Gogs,有了自己的代码仓库,那么接下来就是如何偷懒了。相信各路大佬都知道,在本地通过git去push代码之后,服务器那边的项目势必要pull一下才能把代码拉取下来。也就是每次提交代码都要做至少两个动作,本地推送和在服务器拉取。这样的动作在更新不频繁的时候还是可以忍受的,当更新比较频繁的时候,就很麻烦了,所以就要找办法偷懒了。有什么办法可以让本地的代码推送之后,服务器那头直接拉取呢?这里要用到git-hook了。其实git-hook这东西在很早以前就有,如今因为是自己搭的,所以就拿出来说说。

具体的git-flow分支管理这里就不说了,这里只说简单的实现代码同步。

1.首先先去Gogs中你要同步代码的项目里面的“仓库设置”,设置一个post-receive。

2.自然是要写一段shell的,不过这里只写简单的实现(master分支),具体复杂的分支管理各路大佬自行研究,或者我后面有空的话补上

#!/bin/sh
cd /var/my_project/ //这个是你项目的路径
unset GIT_DIR
git reset --hard  //本地提交的代码覆盖服务器上的代码
git pull //这个就不用说了吧,这里只是简单pull到master上

注意:如果Gos像我一样是通过docker搭建的,此项目路径是映射到docker容器中的项目路径,并不能直接填写服务器的项目路径,否则是无法找到项目的。在生成Gogs容器的时候,顺便要把项目的路径映射进容器。当然如果当时创建容器的时候没有挂载项目路径的,可以先进去docker容器里面创建一个项目目录,然后退出容器重新生成一个镜像,再重新挂载。使用到的docker命令我也写一下,这里需要你对docker有一定的熟悉(不使用docker搭建Gogs的,直接跳过这个路径问题):

docker exec -it gogs /bin/bash

cd /

mkdir www

exit

docker commit gogs gogs_server/gogs_server

docker stop gogs

docker rm gogs

docker run --name=gogs -p 10022:22 -p 10080:3000 -v /var/gogs:/data -v /服务器的项目目录:/www gogs_server/gogs_server

3.项目的.git的用户和用户组要改成git,否则会出现权限问题

去到项目根目录,ls -la之后会看见.git,这里的用户和用户组要改成git,chown -R git:git .git。

docker搭建Gogs的,项目的用户及用户组改成git的,或者777也行

最后,愉快地推送本地代码吧。

评论

67条评论
  1. Gravatar 头像

    tik

    thank you admin .

  2. Gravatar 头像

    t

    thank you web site admin

  3. Gravatar 头像

    kols

    thank you bro

  4. Gravatar 头像

    tik

    thank you admin .

  5. Gravatar 头像

    dsdsaewdsds

    thank you web site admin