GitLab Shell如何通过SSH工作

GitLab访问Git仓库

首先回顾GitLab的Git仓库四种访问方式:

  1. git pull over http -> gitlab-rails (Authorization) -> accept or decline -> execute git command
  2. git push over http -> gitlab-rails (git command is not executed yet) -> execute git command -> gitlab-shell pre-receive hook -> API call to gitlab-rails (authorization) -> accept or decline push
  3. git pull over ssh -> gitlab-shell -> API call to gitlab-rails (Authorization) -> accept or decline -> execute git command
  4. git push over ssh -> gitlab-shell (git command is not executed yet) -> execute git command -> gitlab-shell pre-receive hook -> API call to gitlab-rails (authorization) -> accept or decline push

四种方式都有GitLab Shell的参与,但不同过程GitLab Shell发挥了不同的作用,并且它并不是一个整体的服务,而是由一些子命令组合而成。HTTP方式的Git操作,经gitlab workhorse直接交由Rails应用处理,然后通过HTTP协议交换数据,对于git的操作有三条路径:Gem包Rugged、Raw Git命令或者Gitaly,push/pull一般只跟后两种有关,GitLab Shell充当的作用仅仅是git hook的作用。

Python打开类

Ruby可以直接打开一个已定义的类(模块),打开与定义与其他语句没有本质区别,第二次使用class关键字之后,之后的语句就是进入这个类的封闭作用域内进行一些操作。

在Python中,类只允许一次有效定义,每使用一次class关键字,都作为一个独立的定义类操作。

荒原

前几天把域名又续费了一年,算算有博客已经许多年了,可能我这里应该要有一些什么感慨,但是我想不出有什么可以感慨的。

时间真是个可怕的东西,博客也好,其他的什么事物也好,消亡或者破落都可能只是生命中的一部分。有时候遗忘是一个好选择,有时候留下是一个好选择。留下的是什么,遗忘的又是什么呢?其实最后,发现最初坚持留下的东西可能就是一个瘤,腐烂在生活。

Ngrok端口转发

问题描述:手机(或者其他设备)与开启抓包工具的机器不在同一个网关下,导致手机(或者其他设备)无法通过设置代理(局域网代理)来抓包。

Go编译环境

源码安装

  1. http://www.golangtc.com/download
  2. 将其解压到/usr/local目录下:tar -C /usr/local -xzf go1.7.linux-amd64.tar.gz
  3. 设置环境变量
mkdir $HOME/go
echo 'export GOROOT=/usr/local/go'>> ~/.bashrc
echo 'export GOPATH=$HOME/go'>> ~/.bashrc
echo 'export PATH=$PATH:$GOROOT/bin'>> ~/.bashrc
source  $HOME/.bashrc

包管理器安装

Go从1.5版本开始跨平台交叉编译变得简单,不再必须通过源码安装。