用最笨的办法解放一分钟

用最笨的办法解放一分钟,走起!我先很负责的声明一下,文章内容仅供参考,可别瞎搞,有事的话我可不负责 :)

讲个缘由,可以忽略~

引用老板的话,我“就TM是个破coder,哪算得上是程序员”,没错,除了乱七八糟的事,每天就剩下吭哧吭哧搬砖了。话说搬砖也累啊,我也想多休息一分钟啊……嗯,有人说时间就像海绵,挤挤总会有的,嗯,就这么干吧。

既然是coder,那时间就从coding里挤。我每天有个任务是review一部分代码,目前每天大概20分钟。单位使用svn托管代码,而且再那20分钟里,其中有大约3-5分钟是从svn代码库更新。还好,我不需要在我的workspace里做review,所以只需要做clean和update即可。还有一个重要的问题,工作时间里没有这20分钟怎么办?那只能加班咯……但是一心想节约公司项目成本咋整?别在公司加班,回家看呗(但是装了3公斤多代码的笔记本电脑并不想跟我回家,这代码还得悄咪咪的夹着,还得保证不泄露,还得保证安全……嗯,那用公司git服务器倒腾吧)~

干吧,大概思路就是代码svn更新一下,再用git push到公司服务器,回到家,再git clone & update。

点一通GUI?笑话!可咱就是个coder啊,大本事木有,看着文档敲命令还是搞的定的。

先整个文件夹,用来存放那五百两代码。

mkdir -p /foo/workcode

接下来,checkout代码

cd /foo/workcode

svn co http://svn.serverIP:port/svn/code . --username=svnUserName --password=svnPwd

好,以后要做的就是cleanup和update了,

svn cleanup --username=svnUserName --password=svnPwd /foo/workcode

svn update --username=svnUserName --password=svnPwd /foo/workcode

接下来,该整理git相关的了。

带着强烈的归属感,用公司域名的邮箱登录公司域名的git服务器,用创建一个repository,该配置的都配一遍,尤其SSH,最终,得到一个用户名为xxxalias,仓库名叫xxxRepo的repository。

在本地,生成一对ssh密钥,将公钥配置到git服务器,生成密钥的操作:

ssh-keygen -t rsa -C "xxx@company-domain"

git服务器SSH秘钥配置中,key就是"xxx@company-domain",内容就是id_rsa.pub

测试一下

git config user.name="xxxalias"

git config user.email="xxx@company-domain"

ssh -T xxxalias@git.company-domain

一切OK就继续,初始化git信息.

cd /foo/workcode

git init

git add .

git commit -m "first commit at $(date "+%F %T")"

关联到公司git服务器

git remote add company-git https://git.company-domain/specialCustomName/xxxRepo.git

不想用http、https?可以试试:

git remote set-url company-git git@git.company-domain/specialCustomName/xxxRepo.git

推送到公司服务器

git push -u company-git master

到此可以结束了

but,我仍想用https的repository地址,但是不想每次都输入git服务器用户名和密码,而且每次没有网的时候还得自己开热点走代理连接公司git服务器,咋整

可以,配置用户名密码明文存本地文件,配置完后像服务器推一波,这次手动输入一下用户名密码,以后就不用输了

git config credential.helper store

使用代理的话,这样:

git config http.proxy http://proxyIP:port

git config https.proxy https://proxyIP:port 

要取消代理的话,这样:

git config --unset https.proxy

git config --unset http.proxy

好,收工!

等等,那总不能每次都手扣一通键盘了吧,整个脚本

vim /foo/oliver/workcode/1min.sh



#!/bin/bash
cd /foo/oliver/workcode
echo ">>>>>>>>>>>  $(date "+%F %T")  --------------------"
svn cleanup --username=svnUserName --password=svnPwd /foo/workcode
svn update --username=svnUserName --password=svnPwd /foo/workcode

git add .
git commit -m "cron-task-git-sync at $(date "+%F %T")"

urlstatus=$(curl -s -m 5 -IL https://git.company-domain|grep 200)
if [ "$urlstatus" = "" ];then
​    echo "git.company-domain access FAIL,  set proxy and try"
​    git config http.proxy http://10.227.8.122:31281
​    git push -u company-git master
​    git config --unset http.proxy
else
​    echo "git.company-domain access OK"
​    git push -u company-git master
fi

echo "<<<<<<<<<<<   $(date "+%F %T")  --------------------"

脚本都有了,那干脆再加个定时:

crontab -e

每30分钟自己跑一下:

*/30 * * * * /bin/sh /foo/1min.sh >>/foo/1min.log 2>&1

内容不够精彩,那别在意,能省一分钟就OK。