Centos环境下安装SVN服务器并且理解“高端的打分支”技术

发版策略:分支开发,主干发版


分支开发的意义:
场景一,有客户想对产品做定制,但是我们并不想修改原有的svn中trunk的代码。
场景二,我们正在开发产品下阶段的任务,但上阶段的工作发现问题
以场景二为例,项目某一阶段开发完成后,这个时候要做一个tag,tag_mfcai_V1.01.00,
然后基于这个tag发布一个新的版本,假设项目是web项目,那么基于这个tag发布一个web包。
然后trunk进入下阶段继续开发,但是很不幸发布的版本被检测出来了bug,有人会提议,把bug放到下阶段的任务中去。假设下阶段的任务才刚开始,用户可等不起.他们会认为一个小的bug解决要这么长时间,效率太低了.
那么就需要基于tag_mfcai_V1.01.00做一个branch,branch_bugfix_V1.01.00,基于这个branch进行bugfix,
等到bugfix结束,做一个tag,tag名称假设为:tag_mfcai_V1.01.01,基于这个tag再发布一个版本。
这样,又没有影响trunk(主分支)的开发。然后,根据需要决定branch_bugfix_V1.01.00是否并入trunk。
如何使用先进的分支技术

  • “小乌龟”操作(图文并茂)

 

再介绍点打tag的知识。确认项目组成员的代码都commit后。

1)右击要打tag的目录—>TortoiseSVN—>branch/tag

2)再弹出来的对话框中,要求输入分支或标记的目标路径

3)创建分支或标记的时候,你有三个选项版本库中的最新版本,版本库中的指定版本,工作副本。

开始打分支第一步

1:指分支将存在的目录

2:分支的注释(不能丢呀,等分支多了!就搞坨数不清楚的拉)

3:这里分别说明三个分别是说明啥意思

     1)Head revision in the repository  –直接从版本库中最新创建,由于不需要从你的工作拷贝中传输数据,创建过程会很快。

     2)  Specific revision in repository   ——同样是从版本库中创建,不同的是你可以指定一个版本号。如果你忘了版本号,可以通过显示版本记录来找到你想要的版本号(如下图)。这种方式同样不需要从你的工作拷贝中传输数据,创建过程也很快。

     3)  Woking copy ——这种方式会依据当前工作拷贝的版本状况(无论是你做了本地的修改,或是将其中的某些文件更新到了一个历史版本)来创建分支拷贝。这种创建方式会根据工作副本中每个文件的版本情况来决定是否要从工作拷贝向版本库中传输数据。

在这里我们必需先弄明白一个合并背后的关健概念

合并的过程中发生的所有事:首先两个版本库树的比较,然后将区别应用到本地拷贝.

这个命令是包括三个参数的:

  1. 初始的版本树 2.最终的版本树 3一个接收区别的工作拷贝。 

弄明白这些概念之后我们继续往下操作。

在弹出的窗口中,选择主线目录和其版本号(初始的版本树),再选择主线目录和最新的版本号(最终的版本树),这里也可以是某一个版本号但应该比初始的版本树的版本号要高,接收区默认为你右键所指的目录,这里是clientt。

在合并之前我们可以通过点击“Unified diff”,查看两版本树之间所有文件的内容的变化,“diff”显示出有发生变化的文件列表,“dry run”能显示真正合并时的状态信息,但并没有做任何的合并操作。

我们点击“Merge”。
这里选择的是合并两个不同的版本树
分支合并到主线跟从主线上合并内容到分支上类似 
不同的是
1、开始的版本库是分支创建的版本

2、结束的版本库是完成所以开发工作之后的版本

3、应用的目的是主线目录
SVN服务器代建小礼包
SVN 关闭服务器 killall svnserve
SVN 开启服务器 svnserve -d -r  /SVN目录
后面的代建的全过程
系统环境
RHEL5.4最小化安装(关iptables,关selinux) + ssh + yum
一,安装必须的软件包.
yum install subversion (SVN服务器)
mysql-server (用于codestriker)

二,基本的SVN服务器配置
1,新建一个目录用于存储SVN所有文件
# mkdir /home/svn
2,新建一个版本仓库
# svnadmin create /home/svn/project
3,初始化版本仓库中的目录
# mkdir project project/server project/client project/test (建立临时目录)
# svn import project/ file:///home/svn/project -m “初始化SVN目录”

SVN服务器代建之后一定要初始化,不然根本就用不了。
4,添加用户

要添加SVN用户非常简单,只需在/home/svn/project/conf/passwd文件添加一个形如“username=password”的条目就可以了.为了测试,我添加了如下内容:

[html]
[users]
# harry = harryssecret
# sally = sallyssecret
Admin=admin
[/html]

5,修改用户访问策略
/home/svn/project/conf/authz记录用户的访问策略,以下是参考:

[html]
[/]
Admin=rw
Admin 所有的目录都是读写的权限
[/html]

6,修改svnserve.conf文件,让用户和策略配置升效.
svnserve.conf内容如下:

[html]
[general]
anon-access = none
auth-access = write
password-db = /home/svn/project/conf/passwd
authz-db = /home/svn/project/conf/authz
[/html]

7,启动服务器

[html]
# svnserve -d -r /home/svn
[/html]

8,测试服务器

[html]
# svn co svn://192.168.60.10/project
Authentication realm: <svn://192.168.60.10:3690> 92731041-2dae-4c23-97fd-9e1ed7f0d18d
Password for ‘root’:
Authentication realm: <svn://192.168.60.10:3690> 92731041-2dae-4c23-97fd-9e1ed7f0d18d
Username: Admin
Password for ‘admin’:
svn: Authorization failed ( server_group没用根目录的访问权 )
A    project/test
A    project/server
A    project/client
Checked out revision 1.  ( 测试提取成功 )
# cd project/server
# vim main.c
# svn add main.c
# svn commit main.c -m "测试一下我的C程序,看什么看,不行啊??"
Adding         main.c
Transmitting file data .
Committed revision 2.  ( 测试提交成功 )
[/html]

如果你代建的SVN服务器都OK,但是小乌龟无法访问:防火墙的问题。。。简单粗暴的方法: etc/ini.d/iptables stop
当然不是好太建议直接关闭防火墙:(SVN默认是3690端口)

[html]
RH-Firewall-1-INPUT -p tcp -m state –state NEW -m tcp –dport 3690 -j ACCEPT
[/html]

再送一个小礼包
[html][/html]
SVN Error: Unreadable path encountered; access denied;
[html][/html]
解决方法:
编辑[代码仓库目录下]/conf/svnserve.conf
将[anon-access]的值设置为[none]
记得重启SVN服务器

又到一年校招时

时间过的真快,还记得去年这个时候,还在为工作奔波,到处投简历找工作!转眼间又到一年校招时。

入职已经快四个月了。前几月一直在适应新环境,然后就开始做公司校招收简历模块了。

说实话,第一次看到校招投递简历的数据,真把我吓到了!(初生牛犊不怕虎,为了去年捏把汗)

4399校招简历投递页面

4399校招简历投递页面

这个页面是我们设计部设计的,感觉还是很清新自然的,我就负责的PHP端和前端JS特效。 继续阅读

PHP小偷程序的设计与实现

其实自己一直想做一个内涵图片的网站,以前的想法是做一个CMS,然后自己上传一些图片。。

开始真这么做的,没什么动力。之后就放弃了,后来研究了一个CURL。反正还是把这个想法实现比较好。

用PHP盗图,就好比:穿着袜子穿凉鞋一样。虽然没问题,但看着确实蛋疼

我先说一下我对PHP小偷程序的设计,PHP不支持多线程,这样就只能分先后顺序来做了

获取到目标网站的HTML页面+解析HTML页面获取到图片存储的连接+用二进制方式读取并且保存在本地+重命名  == 流程OK

你现在用两种方式来运行程序:

第一种:用游览器跑程序(多半会卡死,设置超时和内存大小就OK,你之间比较难等) 继续阅读

Jquery插件Z-tree

最近做一个树型的目录,由于本人JS学的太烂了,在网上找了一个jQuery插件–ztree

看官网都感动我哭了,这完整的解决方案,作者这急人之所急。

给一个连接  ztree官网

你们去看一下就知道了,Mark一下不会有错的。

 

给大家推荐一款前端框架

经过公司一位大神的推荐,我开始使用charisma-master来开发前端网页

还真是这么一会事,这样做的管理页面,还真对的咱这张脸。

来一个截图给你长长见识

charisma

charisma

想要什么扣什么,老板再也不用担心页面太丑了。

对哦,这是一个基于HTML5 和 twitter bootstrap 开发的。jquery是必不可少的元素。

所有想要看懂它,上面几个是关键。

校招总结

这次2014年校招,总结我将分两个方向来总结。一个WEB前端,一个是PHP开发工程师。

 WEB前端

开始有做WEB前端的念头,要归结月2013年腾讯实习生招聘,当时一面面试官问我:“您是愿意做前端还是做后端”,我当初脑残的说,做后端。

我这肯定是在逗他,我投的岗位是WEB前端开发工程,尼玛连javascript都只会用jquery框架,好意思去面前端。

还有,在这里要提醒广大学弟学妹们,腾讯校招也好,实习生也很好,都是海笔海面的,笔试基本不刷了,但,附加题一定要写,不管对错,都要写。这就是他们刷人的地方。

还是介绍校招的经历,百度我投的WEB前端,阿里投的研发,基本是去搞笑的,我这里就不自爆家丑了,还是说说收获。

从长沙跟小立去武汉霸笔360,当然,他做为了资深的C++工程师,当然笔试过了。但正因为对360精神的理解,我决定去霸面。

360的员工素质,真心黑不得,我是找了主管找他要了一个霸面的机会,居然还给了,还跟面试官聊了40几分钟。我下面说说我这次面试的收获

  1.  javascript的圣经不是《javascript权威指南》而已 ECMAscript 标准。
  2. 对于HTML页面的优化,为什么要把javascript文件放到底部,是因为页面在加载javascript页面会阻塞其他进程
  3. HTML提交的POST表单并不是通过数组提交的,而是一种转义的稀疏矩阵,限制POST数量是为了防止攻击 继续阅读

PHP链表操作

在php中运行数据结构,基本都是用数组模拟的,只是用一直思想而已。

今天遇到的这个问题是,两个链表进行合并。

链表合并效果图

链表合并效果图

问题描述:A链表是模版链表,B链表的长度不确定,A,B二个链表结合后形成C链表。链表结构单位是

说一下编程思想:A链表是模版链表所以在运算完成了,长度了唯一不变的。而B链表的长度是不确定的。所以可以先对B链表进行判断,分了三步
  1. B链表是不是为空
  2. B链表是不是比A链表短或者相等
  3. B链表是不是比A链表长

编程就是要列出尽可能的可能性。抓住变量,由于题目要求,当A链表和B链表相等时,直接返回B链表,所以不用考虑这个问题。 继续阅读

湖南省ACM省赛成绩公布榜设计与实现

这几天想死的死都有了,学校举行ACM比赛,WEB一块居然要我一个人来做,好不容易来一个研究生,就说,不做。我就是一个活生生的码农,从设计到实现,各种操心,连做梦都是这事。

高考也不过如此,想死的心都有,一个成绩榜分:远程抓起,数据汇总,总成绩榜,学院成绩榜,气球发布榜,云打印,后台管理。

先来个截图,美工真心抄的好

成绩榜效果图

成绩榜效果图

继续阅读

关于博客的验证码

最近博客被网络流氓盯上了,每天上10条的垃圾留言,天天都要删,你留言就留言,还用远程脚本,我博客连IP的统计不了,你给我带点流量来,我还忍了,连流量都没有。太坑爹了。

本来想自己改一下WORDPASS,我找到了留言所在的页面 comment-template.php页面,在里面加行代码

[php]

function num_rand()
{
//随机生成函数
for($i=0;$i<6;$i++)
{
$num.= mt_rand(0,9);  //伪随机的生成6位数
}
$_SESSION["yzm"] = $num; //将六位数存在session中
return $num;
}

[/php]

继续阅读