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也行

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

评论

24条评论
  1. Gravatar 头像

    website 回复

    Good day! Do you know if they make any plugins to protect against hackers?
    I'm kinda paranoid about losing everything I've
    worked hard on. Any suggestions?

  2. Gravatar 头像

    Fuck Girls Online 回复

    Thank you for the auspicious writeup. It in fact was once a enjoyment account
    it. Glance complex to more brought agreeable from you!
    However, how can we communicate?

  3. Gravatar 头像

    google vr daydream 回复

    The popularity of virtual reality comes with no surprise.
    Certainly, large companies like Facebook, Google, YouTube
    and more are embracing the 360-degree technology brought by virtual reality.

发表评论

电子邮件地址不会被公开。 必填项已用*标注