用最笨的办法解放一分钟,走起!我先很负责的声明一下,文章内容仅供参考,可别瞎搞,有事的话我可不负责 :)
讲个缘由,可以忽略~
引用老板的话,我“就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。