原创:hkcat2006
转眼5月份了,时间不知不觉就过去了,明天要去学校拍毕业照了。可能是大家最后一次聚在一块了。还差5个月就09年了。一切都过得这么快。从这个月开始学linux下c编程了。已经没有时间再等下去了。昨天架了下svn服务器,今天把linux系统管理方面的知识理一下。明天去图书馆借本书,就开工吧。争取一天发一篇总结,以示督促吧。
debian下架设apache+svn服务器
** 安装
单机的Svn,用svnadmin建立一个仓库,然后用svn的相关命令来操作。访问方式为file://
apt-get install subversion subversion-tools
svnadmin create /home/svnCore 建立一个仓库
svn import /home/Work/python file:///home/svnCore 将/home/svnCore导入到仓库中
** apache svn
安装apache2,libapache2-svn
先添加一个组svnUser,然后将www-data加到这个组中,www-data就是apache的用户。
因为是要从浏览器访问svn仓库,所以www-data是一定要加入到svnUser中去的。
然后建立仓库
svnadmin create /home/svnCore/Project
设置Project权限
chgrp -R svnUser /home/svnCore/Project
chmod -R g+rws /home/svnCore/Project
就是允许svnUser组的成员可以对svn目录进行读写
设置apache的配置文件
emacs /etc/apache2/mods-available/dav_svn.conf
<Location /svn/Project> #这里是虚拟目录名称
DAV svn
SVNPath /home/svnCore/Project #这个是仓库所在位置
AuthType Basic #认证类型
AuthName "Subversion Repository"
AuthUserFile /etc/subversion/passwd #访问仓库的密码验证文件
<LimitExcept GET PROPFIND OPTIONS REPORT> #这三行允许匿名访问
Require valid-user
</LimitExcept>
</Location>
在配置文件中要指明通过Web访问的目录和Svn仓库路径,同时要设置验证文件
下面生成验证文件
新建一个密码文件,用户名是hkcat, -c代表如果不存在就新建
sudo htpasswd -c /etc/subversion/passwd hkcat
然后sudo /etc/init.d/apache2 restart
现在可以用firefox访问一下http://localhost/svn/Project 看看能不能打开
导入一个项目
svn import -m "svn test" ~/Learn/python http://localhost/svn/Project
网上有好几篇apache+svn的文章了,原理其实就是用svn建立一个仓库,然后就是在apache中svn的模块中配置下虚拟目录和仓库位置及访问方式。
** 项目管理两种模式:
一个仓库一个项目:
缺点是比较麻烦,比如在apache中,每加一个项目都要配置个虚拟目录和权限。优点是单个仓库中单个项目容易管理.
一个仓库多个项目:
缺点是该仓库中的每个项目的版本是随着总仓库更改而递增的,而不是自身项目改变的版本。优点是比较简单吧,所有的项目都放一块了,便于管理。而且在apache中也比较容易配置。会show log时会发现版本从1一下子到5,其它这是整个仓库改变的版本,而不是当前这个目录改变的版本。第一次用svn时,有一次提交。就发现版本号一下子跳上去了。当时,还以为把公司的代码弄乱了,呵呵,后来还是主管告诉我这点的。
最后决定
建立3个仓库
config
保留配置文件的版本。这样修改.fvwm2rc和.emacs就方便多了。还有其它的配置文件都可以控制了。这里采用一库多项目的形式,因为配置文件的修改只要求日志就行了。不需要对版本太过关心的。再加上配置文件多而杂,没必要建很多个虚拟目录的。
LearnProject
这里主要对一些练习程序进行版本控制,还是采用一个仓库对应多个项目的方式。还有一些对开源项目的代码分析也放这里吧。
Project
这里主要是一些自己的项目了,采用一个仓库对应一个项目的方式,这样便于管理,而且也比较清晰。虽然每新增一个项目要加个虚拟目录,但其实也没几个自己的项目的,呵呵。
** emacs里面操作svn
checkout还不知道用什么命令
都要在含有.svn的目录下面使用,所以需要手工的svn checkout
C-x v v checkin ,按第二下的时候会要求输入注释。注释输入结束按C-c C-c 提交
C-x v = 比较功能,显示当前和仓库里的不同
C-x v u 更新工作拷贝,放弃当前的修改
C-x v d 打开工作目录, vv 在dired下面提交
C-x v l 显示更改日志
C-u C-x v = 不同版本的比较
C-x v ~ 显示指定版本
M-x vc-update 更新
M-x vc-resolve-conflicts 调用ediff修改冲突文件
也可以用命令
M-! svn resolved test1.c 修改冲突,去掉那些<<<<<<标记
其它插件
psvn
http://www.xsteve.at/prg/emacs/psvn.el 暂时还没实验。
记笔记就采用muse吧,本来想用wikidpad的,个人比较喜欢他在笔记中穿插todo和action的概念,,感觉这种设计很棒,但可惜对输入法支持一直有问题。
前阵子,因为/没多少空间了,懒得整理,直接format了。后来装了下ubuntu 7.10。安装和使用的过程全都很简单呵呵,难怪这么流行。irc上#ubuntu-cn的人总有那么多。能把linux做得那么易用,也确实有水平。但可惜,我机子适乎不喜欢ubuntu,开个vbox运行个xp就卡的要命了。打开oo又那么慢。没办法。只好重回fvwm。重回我的debian。貌似我是与gnome和kde无缘了。什么时候弄个slackware耍耍,不过每个软件包都要编译呵呵,也确实太累了。
先到这吧,明天去图书馆借本书,开始我的linux编程之旅。