linux服务器系列安装说明

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一部分服务器安装与架构
第一章Red Hat Enterprise Linux 5.0安装
第1步:将光盘放入光驱,重新启动,出现安装首页:
选择安装方式。

1、图形安装(直接回车) 2、文本安装(输入 linux
text),这里选择图形安装,直接回车即可。

第2步:检查安装光盘
选择“OK”为检查光盘选择“Skip"跳过检查。

如果确认光盘是好
的,则跳过!
第3步:欢迎界面,直接点“next”
第4步:语言选择:选择简体中文
第5步:键盘配置:美国英语式
第5步:输入安装序列号:这里输入:2515dd4e215225dd
点“确认”,再单击“下一步”。

第6步:磁盘分区:选择自定义分区,
第7步:网络配置、时区设置,详细配置可参考书《Redhat 服务器构建与故障排除》2.2节
第8步:设置根口令
第9步:选择软件包,选择软件开发、虚拟化、网络服务器
第10步:一直选择下一步,直至SELINUX设置界面,选择“禁用”,然后一直下一步
第11步:创建用户
第12步:以后的都没什么需要配的了,直至完成即可。

图形安装步骤请参考书:《Redhat 服务器构建与故障排除》2.2节
1.1 查看磁盘剩余空间
df
1.作用
df命令用来检查文件系统的磁盘空间占用情况,使用权限是所有用户。

2.格式
df [options]
3.主要参数
-s:对每个Names参数只给出占用的数据块总数。

-a:递归地显示指定目录中各文件及子目录中各文件占用的数据块数。

若既不指定-s,也不指定-a,则只显示Names中的每一个目录及其中的各子目录所占的磁盘块数。

-k:以1024字节为单位列出磁盘空间使用情况。

-x:跳过在不同文件系统上的目录不予统计。

-l:计算所有的文件大小,对硬链接文件则计算多次。

-i:显示inode信息而非块使用量。

-h:以容易理解的格式印出文件系统大小,例如136KB、254MB、21GB。

-P:使用POSIX输出格式。

-T:显示文件系统类型。

4.说明
df命令被广泛地用来生成文件系统的使用统计数据,它能显示系统中所有的文件系统的信息,包括总容量、
可用的空闲空间、目前的安装点等。

超级权限用户使用df命令时会发现这样的情况:某个分区的容量超过了100%。

这是因为Linux系统为超级用户保留了10%的空间,由其单独支配。

也就是说,对于超级用户而言,他所见到的硬盘容量将是110%。

这样的安排对于系统管理而言是有好处的,当硬盘被使用的容量接近100%时系统管理员还可以正常
工作。

5.应用实例
Linux支持的文件系统非常多,包括JFS、ReiserFS、ext、ext2、ext3、ISO9660、XFS、Minx、vfat、M SDOS等。

使用df -T命令查看磁盘空间时还可以得到文件系统的信息:
#df -T
文件系统类型容量已用可用已用% 挂载点
/dev/hda7 reiserfs 5.2G 1.6G 3.7G 30% /
/dev/hda1 vfat 2.4G 1.6G 827M 66% /windows/C
/dev/hda5 vfat 3.0G 1.7G 1.3G 57% /windows/D
/dev/hda9 vfat 3.0G 2.4G 566M 82% /windows/E
/dev/hda10 NTFS 3.2G 573M 2.6G 18% /windows/F
/dev/hda11 vfat 1.6G 1.5G 23M 99% /windows/G
1.2 查看磁盘空间
查询硬盘空间用fdisk -l
第二章 svn安装
工具:subversion-1.6.0.tar.bz2
httpd-2.0.63.tar.gz
详细步骤请参考svn安装步骤文档
2.1添加sudo用户
在/etc目录下执行以下命令
[root@svn etc]#visudo -f sudoers
如添加gui.li sudo用户:
##Allow root to run any commands anywhere
root ALL=(ALL) ALL
gui.li ALL=(ALL) ALL
保存退出即可
2.2查看是否是在sudoers 之中
sudo -v来查看自己是否是在sudoers 之中
详细请参考Sudo使用.doc
sudoers尾部加入:
%group_10g ALL=/bin/tar,/bin/chmod,/bin/chown,/bin/mknode,/bin/mknod %group_15g ALL=/bin/tar,/bin/chmod,/bin/chown,/bin/mknode,/bin/mknod
第三章添加用户
[root@svn ~]# useradd –g user gui.li \\设置初始组群为user [root@svn ~]# passwd gui.li
Changing password for user gui.li
New UNIX password: \\123456
BAD PASSWORD:it is too simplistic/systematic \\密码过简单的缘故,最好设为大小写,字母
\\数字混合的形式,不过这种密码最终还是
\\可以设成功的
Retry new UNIX password: \\123456
passwd:all authentication tokens updated successfully
[root@svn ~]# smbpasswd –a gui.li //设置samba密码
New SMB password: \\gui.li
Retry new SMB password: \\gui.li
Added user gui.li
[root@svn ~]#
//添加svn用户
在svnpasswd同级目录下打开终端,输入以下命令
[root@svn ~]#htpasswd svnpasswd gui.li
然后在同级目录下找到svnaccessfile 文件,在wgroups里面加入刚加入的svn用户(作用为,在svnaccessfile文件里可以设置项目哪些组或用户可以访问或修改)5.0 Samba用户切换清除命令
net use * /delete /y
5.1 svn密码
生成svn 密码命令
htpasswd 路劲用户名
5.2 删除用户
userdel 用户名
userdel –r 用户名
-r 删除其主目录(/home/…..)
5.3 修改用户组
usermod
功能说明:修改用户帐号。

语法:usermod [-LU][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-l <帐号名称>][-s ][-u ][用户帐号]
补充说明:usermod可用来修改用户帐号的各项设定。

参数:
-c<备注> 修改用户帐号的备注文字。

-d登入目录> 修改用户登入时的目录。

-e<有效期限> 修改帐号的有效期限。

-f<缓冲天数> 修改在密码过期后多少天即关闭该帐号。

-g<群组> 修改用户所属的群组。

-G<群组> 修改用户所属的附加群组。

-l<帐号名称> 修改用户帐号名称。

-L 锁定用户密码,使密码无效。

-s 修改用户登入后所使用的shell。

-u 修改用户ID。

-U 解除密码锁定
5.4 查看用户组命令
groups 如:groups gui.li
查看全部组命令:cat /etc/group
第四章磁盘配额
#df //查看当前磁盘使用情况
1、[root@linux ~]# vi /etc/fstab
2、修改
LABEL=/home /home ext3 defaults,usrquota,grpquota 1 2
注:在『defaults,usrquota,grpquota』之间都没有空格!
3、重新开机(reboot);
4、[root@linux ~]# quotacheck –avug。

在/home下会产生aquota.group与er这两个文件!
5、启动quota的限额:
[root@linux ~]# quotaon -avug
/dev/hdb1 [/disk2]: group quotas turned on
/dev/hdb1 [/disk2]: user quotas turned on
注意:要看到上面有个turned on的出现,才是真的成功了!
6、编辑使用者的可使用空间:
[root@linux ~]# edquota –u gui.li
修改soft、hard(单位是KBytes啦)如下:
Disk quotas for user quser1 (uid 505):
Filesystem blocks soft hard inodes soft hard
/dev/sda2 44992 10485760 10485710 863 0 0
7、复制磁盘配额
[root@linux ~]# edquota –p gui.li changfu.xu
8、设定宽限时间:
[root@linux ~]# edquota –t
/dev/sda2 1days 7days
将时间改为1天(原本是7days改成1days),好了!查询一下是否真的有设定进去呢?
9、设置启动时启动磁盘配额
vim /etc/rc.local
添加/sbin/quotaon –avu
使用quota -v来查询:
7、查询分配结果
[root@linux ~]# quota –vu gui.li changfu.xu
Disk quotas for user gui.li(uid 505)
Filesystem blocks soft hard inodes soft hard limit grace /dev/sda2 44992 10485760 10485710 863 0 0
Disk quotas for user changfu.xu(uid 506)
Filesystem blocks soft hard inodes soft hard limit grace /dev/sda2 48 10485760 10485710 12 0 0
第五章系统测试
系统账号存放在passwd(/etc)文件中(密码加密文件:/etc/shadow),samba 账号存放在smbpasswd(etc/samba)文件中。

5.1 samba账号测试
在PC机上,开始—>运行—>输入192.168.133.9. 在弹出框中,输入samba账号gui.li,进入系统,显示两个文件夹gui.li和share。

Samba配置文件:/etc/samba/smb.conf
5.2 系统账号测试
打开远程登录工具ab solute,新建—>连接文件。

弹出连接属性框,输入服务器IP,如图5.1所示:
确认,弹出SSH2认证框,输入认证信息(密码为系统账号),如图5.2所示:
图5.2 SSH2认证
认证通过后进入如下界面,如图5.3所示:
图5.3远程登录成功界面
第六章安装问题
一、如远程编译的时候遇到arm-uclibc-linux-gcc 未找到命令,解决方法如下:
1、将文件arm-uclibc-linux-cross-1.0.3.tar.gz和cross-tools-installer拷贝到服务器
上/usr/tools
2、在终端用命令tar –jxvf arm-uclibc-linux-cross-1.0.3.tar.gz解压。

3、[root@linux ~]#./ cross-tools-installer
4、[root@linux ~]# ls /opt/hisilicon/toolchains 查看是否有arm-uclibc-linux-soft
和sysroot-uclibc-soft
5、重新登录:在远程工具中,断开连接,再进入。

即可编译了。

如果编译时遇到mkimage、mkcramfs、mkfs.jffs找不到的问题,可做如下操作:
在tools目录下
sudo cp tools/linux/utils/mkimage /bin
sudo cp tools/linux/utils/mkcramfs /bin
sudo cp tools/linux/utils/mkfs.jffs2 /bin
二、NFS
如果无法挂NFS,则可能是NFS服务器没有打开,打开命令如下
进入目录/etc/init.d
执行命令./nfs restart即可
第二部分 svn使用说明
检查是否按照SVN命令:rpm -q subversion httpd mod_dav_svn 1、SVN使用
1.1. TortoiseSVN安装
首先是安装TortoiseSVN这个Win下的客户端(当然用subversion自己的svn 这个客户端也可以完成所有操作,理论上)。

这个客户端是集成到Explore里的,所以没有什么独立的窗体,所有操作右键菜单来完成。

1.2 创建版本库
1.3. svn使用基本流程
下面说的命令都与TortoiseSVN菜单上的名称一致。

a. 初次(initial)取出(checkout)repos,建立本地工作拷贝(WC WorkingCopy)。

b. 与repos同步(update),保证将要进行的编辑是最新版本。

c. 编辑源代码(包括创建、修改、删除)。

d. 与repos同步(update),提交之前先要同步到最新的版本,保证所有在自
己之前的有关提交已经在本地有所知晓。

e. 解决冲突(resolve conflict)。

f. 提交(commit),一定要写上这次提交的内容的摘要,便于以后查阅。

g. 继续b。

每次开始新的编辑前的同步repos很重要,另外经常地update没有坏处,特别是多人项目中。

如果每次提交(commit)前不进行更新(update)的到最新的版本的话,svn会提示当前的拷贝过期,需要更新。

在使用的过程中,时刻注意当前的工作拷贝(WC WorkingCopy)所对应的URL很重要,特别是当有了branches和tag等时候。

使用svn info可以查看到这些信息。

使用TortoiseSVN时,通过下面的操作查看这些信息:右键单击工作拷贝的根文件夹(不是上级文件夹),菜单中选择则属性(不是TortoiseSVN那个菜单),然后在出现的对话框中选择Subversion标签就可以
看到了。

SVN简介及使用说明
作者:mirclle
一、概述
简单的说SVN是一个GPL版本控制软件,其创始人是从CVS项目中出来了,其目标就是替换掉CVS,SVN尽力维持CVS的用法习惯,并增加了一些很方便但CVS做不到功能,如目录改名等。

笔者使用了两个月的SVN后,感觉SVN确实做到了。

二、SVN能够做什么
1、从CVS继承的功能
(1)、程式码版本的存储与维护
(2)、程式码版本的追踪回溯
(3)、程式码版本的分合控制
(4)、职员多人合作开发专案
(5)、程式码远端管理维护
(6)、程式码匿名截取
2、在CVS基础上增添的新功能
(1)、目录版本控制,目录更名
在CVS中,一个目录是没有版本历程的,假如原来一个名为doc/的目录,在经过一段时间之后,发现它应该要称为manual/比较恰当,此时我们只能建立一个新man ual/,把doc/目录下的档案复制过去,把manual/下的档案新增至CVS系统中,再把doc/删除。

而且必须注意的是,在档案的复制与删除过程中,我们也同样地遗失了这些档案的历史历程。

版本控制最主要的资料就这样丢掉了。

但是在SVN中,目录与项目文件同样都是纳入版本控制之中。

也就是说,我们可以随时要求SVN将某个项目文件恢复到某个时间点的状态,也可以对目录进行更名的动
作。

(2)、对多个项目文件进行不分割送交
在CVS中,虽然我们可同时对多个项目文件进行送交,但是CVS并不保证一次的送交是不可分割的,而SVN的送交就没有这个问题。

送交的结果不是全都进系统,就是全都没有进系统,不会只有一部分及系统的状况。

(3)、更佳的二进制资料处理
首先,SVN不主动更动项目内容,除非使用者加上这样的设定。

再者,它使用可适用于文字与二进制资料的内容差异演算法,在项目储存上,文字与二进制资料都具有相同的优势。

现在,不只是文字资料适合置于版本控制系统中,连二进制资料也可以很方便地放进来。

(4)、高效率的分支与标记
在SVN系统的标记是以目录的副本的方式建立的,而副本是以类似链接的方式来建立。

也就是说,不管涉及的目录与项目有多少,它所花费的时间都是固定的,不会因为档案越多而耗时越久。

同样的,SVN的分支也是以目录的副本来实现的。

注释:1-6条是SVN继承了CVS的特点,因此,在这里不再进行详细的描述。

7-10条为SVN在CVS基础上增加的新功能。

其他详细内容请参考关键词(SVN CV S SOURCESAFE版本控制源代码管理)。

三、名词解释
1、Check out——从服务器端取得代码
把服务器资料库里存放的某个项目代码取出来,放到本地主机中,这个动作叫做―che ck out‖。

使用具体步骤:进入要安装项目文件的目录中,点击鼠标右键,选择SVN Check out项,然后填写项目的原始路径和安装路径后点击―ok‖即可。

2、Update——更新项目代码
以前checkout过的一个项目代码,当服务器上有了更新的代码,或者本地代码损坏或丢失,update可以自动判断本地哪些文件较旧,或者缺少,都会自动更新。

当然,你也可以删除掉本地代码,重新check out。

使用具体步骤为:在要更新的项目上点击鼠标右键,选择―SVN Update‖项即可。

3、Commit——将本地代码上传到服务器
当修改(增加,删除,修改等所有写操作)过本地代码后,这个动做会把新代码提交到SVN。

如果本地代码做了修改,不执行commit操作,SVN服务器上是不会有这
个新版本的,也就是说其它人也得不到。

对代码做过修改后,应尽快commit。

使用具体步骤:在修改完待上传的项目上点击鼠标右键,选择―SVN Commit‖项即可。

4、Export——将项目导出到本地
如果想要得到一个完整的项目,且不需要再进行版本的改动,可以直接把该项目导出版本控制系统,成为一个普通文件进行使用。

具体步骤为:单击鼠标右键,选择Tort ois eSVN——>>Export项,然后填入要导出的项目既可。

5、Show Log——显示所有版本
如果项目成员想查看本地下载的属于版本控制内的某个项目以前的所有版本,就在该项目上单击鼠标右键,选择Tortois eSVN菜单下的Show Log项。

则该项目的所有版本及其每个版本的修改信息都将显示在出现的新对话框下,供项目成员进行参考。

6、Update To Revis ion——恢复到某个版本
当项目成员想要把某个项目恢复到以前的某个版本时,在该项目上单击鼠标右键,选择Tortois eSVN菜单下的Update To Revis ion,于是,在出现的Update对话框中可以先点击―Show Log‖来查看及确定要恢复到的版本号,或者直接将要恢复到的版本号填入―Revis ion‖旁的编辑区内,最后点击―OK‖。

于是,该项目就恢复到想要的项目版本了。

7、Add——增加文件
当项目成员想在项目中添加一个新文件时,请把该文件先拷贝到项目文件加下,然后,在该文件上单击鼠标右键,选择Tortois eSVN菜单下的Add项,于是,该文件就可以被添加到项目中了。

四、高级特性
1、Update to revis ion
Update默认更新到最新版本,update to revis ion则可以更新到指定版本(可以是更旧的版本)。

2、增删项目文件及目录的操作
增删项目内文件或目录,请一定使用svn add ,或s vn del 或s vn rename,然后做commit操作
上文来自于:/post/7306/40790
客户端svn的使用
这里只是记录Linux下命令行客户端s vn的使用。

1. 第一次导入本地文件到SVN
首先你的本地projet应该有文件夹branches, tags, trunk(为啥我暂时不知道)
然后导入:
s vn import /your_projec_path file:///svn_proj ect_path -m "initial im port"
2. 取出工作拷贝
s vn checkout file:///svn_project_path /your_local_file_name
最后一个参数为下载下来的文件名字,随便起都行。

3. 常用命令
在checkout了拷贝之后,拷贝的目录下面有一个./.s vn目录,里面记录了相关信息。

s vn diff :检查本地拷贝和s vn中的文件的区别
s vn log :列出修改日志
s vn add :把文件和目录放入版本控制中,会在下一次提交的时候加入
s vn update :更新你的拷贝
s vn commit :提交你的拷贝
省下的直接svn help command 来查询好了
4.典型的工作周期是这样的:
▪更新你的工作拷贝
▪svn update
▪做出修改
▪svn add
▪svn delete
▪svn copy
▪svn move
▪检验修改
▪svn status
▪svn diff
▪svn revert
▪合并别人的修改到工作拷贝
▪svn update
▪svn resolved
▪提交你的修改
▪svn commit
以上是基本入门的东西
1.3. 使用branches
(关于branches的内容可以在svn-book:Chapter4 Branching and Merging得到)
当多个人合作(Sally和John)时,可能有这样的情况出现:John突然有个想法,跟原先的设计不太一致,可能是功能的添加或者日志格式的改进等等,总而言之,这个想法可能需要花一段时间来完成,而这个过程中,John的一些操作可能会影响Sally的工作,John从现有的状态单独出一个project的话,又不能及时得到Sally对已有代码做的修正,而且独立出来的话,John的尝试成功时,跟原来的合并也存在困难。

这时最好的实践方法是使用branches。

John建立一个自己的branch,然后在里面实验,必要的时候从Sally的trunk里取得更新,或者将自己的阶段成果汇集到trunk中。

1.3.1 创建branch
实际是svn copy操作
$ svn copy SourceURL/trunk \
DestinationURL/branchName \
-m "Creating a private branch of xxxx/trunk."
TorToiseSVN操作更为简单,只要在working copy里右键空白,然后在
TorToiseSVN菜单中选择Branches/Tags,就可将整个目录分支(branch)出
去,或者点击某个文件将文件单独分支(branch),而且有多种选择,指定是
―直接在服务器端copy HEAD版本‖、―直接在服务器端copy指定版本‖(这
两种相当于svn copy中源和目的都是URL)、―用当前的工作拷贝(WC Working Copy)生成‖。

同时还有一个checkbox用于在完成了这次分支
(branch)后直接切换(switch)当前的工作拷贝(WC Working Copy)到分支。

1.3.2 使用merge来应用branch的修改
1.3.
2.1 trunk的变化及时更新到branch
例子原型出自svn-book:Chapter 4:Branching and Merging:Copying Changes Between Branches:Copying Specific Changes
接着前面的例子,John在实验过程中,Sally对原有的某个文件做了一些改动,如拼写检查等,John知道了,希望将这些改动也放到自己的当前的工作拷贝(WC Working Copy)中。

svn中使用merge指令来完成。

假设Sally的修订使repos从Rev345到了Rev346,所以John就是要将Rev345:Rev346(前:后)的变更应用到当前的WC。

使用TortoiseSVN的操作就是在WC中右键空白处,然后在相关菜单中选择―Merge...‖,在弹出的对话框中,From指定比较前项的位置和版本(这里是trunk的Rev345),To指定后项的位置和版本(这里是trunk的Rev346,可以使用一个复选框使的To的位置与From相同)。

相应的svn merge指令参考后面―merge操作实质‖可知。

1.3.
2.2 branch最终合并回trunk
例子原型出自svn-book:Chapter 4:Branching and Merging:Common Use-Cases:Merging a Whole Branch to Another
John经过尝试,终于实现了想法,并通过测试,现在他决定将所有的工作合并到trunk去。

这里要注意的是,John打算合并的是自己的工作,假设John的branch (johnBranch)开始于Rev233,John的工作提交到repos是Rev289,那么John 的工作是将johnBranch:Rev233到johnBranch:Rev289的内容合并到trunk。

而不是johnBranch:Rev233到trunk:HEAD,因为这个变化包含了对John工作的增加和对trunk中其他人的工作的撤销(如果John没有及时将他人在trunk的工作合并到自己的johnBranch的话)。

TortoiseSVN的操作是这样的,先checkout出trunk(也可以switch到trunk),即保证当前的工作拷贝(WC WorkingCopy)是trunk,然后使用菜单中的
―Merge...‖,选择From为johnBranch:Rev233选择To为johnBranch:Rev289。

相应的svn merge指令参考后面―merge操作实质‖可知。

1.3.
2.3 merge操作的实质
svn merge命令的原型如下
svn merge sourceURL1[@N] sourceURL2[@M] [WCPA TH]
svn merge sourceWCPATH1@N sourceWCPATH2@M [WCPATH]
svn merge -r N:M SOURCE[@REV] [WCPATH]
In the first and second forms, the source paths (URLs in the first form, working copy paths in the second) are specified at revisions N and M. These are the two sources to be compared. The revisions default to HEAD if omitted.
In the third form, SOURCE can be a URL or working copy item, in which case the corresponding URL is used. This URL, at revisions N and M, defines the two sources to be compared.
WCPA TH is the working copy path that will receive the changes. If WCPATH is omitted, a default value of ―.‖ is assumed, unless the sources have identical basenames that match a file within ―.‖: in whic h case, the differences will be applied to that file.
可以看出merge实际是比较前后(源:目的)两个版本(revision)之间的差别(用运算符就是目的–源),然后将这些差别应用(施用)到工作拷贝(WC WorkingCopy)上的一个操作,根据源与目的版本号的先后,出现了―合并‖、―撤销‖(源版本号大于目的版本号)等不同效果,然后通过提交(commit)来将这些效果保存到服务器端的repos中。

1.4 版本(Revision)关键字
版本(Revision)关键字HEAD, BASE, COMMITTED, PREV是指定版本号时可以使用的一些保留字,含义如下:
HEAD:The latest revision in the repository.
BASE:The ―pristine‖ revision of an item in a working copy.
COMMITTED:The last revision in which an item changed before (or at) BASE.
PREV:The revision just before the last revision in which an item changed.
(Technically, COMMITTED - 1.)
说明:
a. 只有HEAD能用于URL,BASE,COMMITTED,PREV都是用于工作拷贝(WC Working Copy)的。

b. HEAD虽然含义是―当前最新的版本‖,但用于WC时,当前未提交(即未进入版本管理)的变化是不包含在内的。

所以比如:
刚commit过main.txt为Rev10,即HEAD=10,COMMITTED=10,这时对main.txt进行一些编辑,然后svn diff -r HEAD:COMMITTED,不会显示刚刚的编辑操作,因为刚刚的编辑操作并没有纳入到版本管理,即HEAD没有反映出―当前最新‖,实际是反映的―当前版本管理中的最新‖。

c. BASE的含义,上面的英文说得不够清楚,其实是指最后一次更新(update)操作或者取出(checkout)操作(当initial checkout)时取出的那些文件,这些被svn无修改地保留在.svn管理目录里。

1.5 文件的添加、删除、重命名
当向项目里添加了一个新文件时,需要使用TortoiseSVN菜单中的―add‖指令来为下一次commit做添加文件的准备,使得下次commit时知道有这样的事件发生。

对应的svn命令行操作就是svn add。

当从项目里删除文件时,也需要显示地将这个事件告诉svn,方法就是右键单击要删除的文件,在TortoiseSVN菜单中选择删除,而不是简单地用os的删除。

文件重命名与删除同理。

1.6. 忽略列表
比如一个VC的项目用subversion管理,vc会生成debug目录,release目录以及其下的编译临时文件,而我们可能只需要对源文件进行版本管理,那些临时文件都不关心,这时可以把他们加入ignore list。

同样使用TortoiseSVN 菜单完成这个。

对于错误的加入到了ignore list的文件,可以在TortoiseSVN 菜单中的Remove from ignore list撤销。

这个暂时不知道svn对应的命令。

1.7 解决冲突(conflict)
所谓冲突,简单地说,就是两个人改了同一个地方,而修改又不同。

比如Sally和John同时Update到了最新的trunk,Rev5。

Sally吧main.txt的第
一行改为了x=5,提交了,然后repos到了Rev6,同时John在自己的工作拷贝(WC WorkingCopy)中,把main.txt第一行改成了x=6,然后准备同步(update)repos然后提交,可是在update的时候就会提示出现了冲突(conflict)。

这时svn目录下出现了几个文件:main.txt.mine, main.txt.r5, main.txt.r6
按照svn-book的解释,含义如下:
filename.mine : This is your file as it existed in your working copy before you updated your working copy—that is, without conflict markers. This file has your latest changes in it and nothing else. (If Subversion considers the file to be unmergeable, then the .mine file isn't created, since it would be identical to the working file.)
filename.rOLDREV : This is the file that was the BASE revision before you updated your working copy. That is, the file that you checked out before you made your latest edits.
filename.rNEWREV : This is the file that your Subversion client just received from the server when you updated your working copy. This file corresponds to the HEAD revision of the repository.
其实就是main.txt.mine是John执行update之前的本地文件main.txt,main.txt.r5是本地上次update时得到的,即BASE版,而main.txt.r6是这次update得到的。

这时还有一个main.txt文件其实是包含了相互冲突的内容的用于手工解决冲突的文件。

解决冲突有三个方法:
a. 手工解决。

编辑main.txt,保存其成为最终希望的版本。

然后使用svn resolved去掉conflict标志。

TortoiseSVN的操作这次要复杂一些,在main.txt 上右键,菜单中选择―resolved...‖,在弹出的对话框中右键main.txt,然后在对话框中选择―resolved‖,tortoiseSVN会要求确认一次,选择yes之后会发现生成的三个临时文件没有了,而main.txt的冲突标记变成了修改。

b. 直接选用使用一个临时文件。

命令行相当于这样:
$ cp main.txt.mine main.txt
然后同样要用svn resolved去掉conflict标志。

这个方法的TortoiseSVN的操作是在―resolved‖对话框里,右键main.txt的菜单上选择―Resolved conflict using mine‖或者―Resolved conflict using theirs‖
c. 撤销更改。

这是John决定放弃自己对main.txt的更改并且接受Rev6版时
的做法。

用这种方法,如果是用svn这个client时,无需调用svn resolved了,因为不打算提交新的内容到repos(当然如果其他的resolve决定提交新的内容时,还要对其他文件resolved的)。

TortoiseSVN里的操作是在冲突菜单(resolved对话框里右键单击要解决冲突的文件时出现的菜单)里选择Revert,同样tortoise会让要求确认一次。

当有多个conflict时,需要一个一个resolve,TortoiseSVN的Resolved对话框里每次都是对一个对象进行操作,尽管前面的有复选框(复选框作用未知,猜测是跟lock关)。

2、svn在linux下的使用的常用命令
2.1 将文件checkout到本地目录
svn checkout path(path是服务器上的目录)
例如:svn checkout svn://192.168.1.1/pro/domain
简写:svn co
2.2 往版本库中添加新的文件
svn add file
例如:svn add test.php(添加test.php)
svn add *.php(添加当前目录下所有的php文件)
2.3 将改动的文件提交到版本库
svn commit -m "LogMessage" [-N] [--no-unlock] PA TH(如果选择了保持锁,就使用--no-unlock开关)
例如:svn commit -m "add test file for my test" test.php
简写:svn ci
2.4 加锁/解锁
svn lock -m "LockMessage" [--force] PA TH
例如:svn lock -m "lock test file" test.php
svn unlock PA TH
2.5 更新到某个版本
svn update -r m path
例如:
svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。

svn update -r 200 test.php(将版本库中的文件test.php还原到版本200)
svn update test.php(更新,于版本库同步。

如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit)
简写:svn up
2.6 查看文件或者目录状态
1)svn status path(目录下的文件和子目录的状态,正常状态不显示)
【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】
2)svn status -v path(显示文件和子目录状态)
第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。

注:svn status、svn diff和svn revert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。

简写:svn st
2.7 删除文件
svn delete path -m "delete test fle"
例如:svn delete svn://192.168.1.1/pro/domain/test.php -m "delete test file"
或者直接svn delete test.php 然后再svn ci -m 'delete test file‘,推荐使用这种
简写:svn (del, remove, rm)
2.8 查看日志
svn log path
例如:svn log test.php 显示这个文件的所有修改记录,及其版本号的变化。

相关文档
最新文档