然后修改ref目录下任意文件并提交
目 录
1前言
1.1Subversion 权限简介
1.2其他讯息
2致谢
3实战
3.1背景假定
3.2使用 svnserve.exe 作为Subversion 任事器
3.2.1发动 Subversion 任事
3.2.2建立代码库
3.2.3编辑代码库基础配置文件
3.2.4管理用户帐号
3.2.5建立目录探访权限控制文件
3.2.6导入代码
3.2.7测试
4深刻
4.1svnserve.conf
4.2authz.conf 之用户分组
4.3authz.conf 之项目根目录
4.4authz.conf 之项目子目录
4.5authz.conf 之目录表示法
4.6authz.conf 的其他注意点
5订正
5.1对中文目录的支持
6参考文献
7历史轨迹
1前言
1.1Subversion 权限简介在 Subversion的使用当中,存在“认证”、“受权”两个概念。认证,即 certific,是指用户名与密码的认证。受权,即writeriz ,是指某用户对某个目录能否完全读、写权限的一种审核。这两者配协作用,就组成了 Subversion的整个帐户管理体系。
在现实的事业当中,我们有时期会遇见须要控制项目目录的探访权限的状况,好比说对项目标一些关键模块举行限制,仅答应多数受权人士才可以删改等。由于项目标目录自己就是作为版本库的一个局限被 Subversion所收管,所以我们无法应用操作体例的帐户权限体系,来达成受权控制。因而,这个题目就惟有让svn自己来解决了。
Subversion 提供了面向目录的帐户权限管理效力,经历它,我们就可以很无误地达成项目目录的探访控制。不过在 1.2及其以前的版本,我们只能应用 mod_authz_svn.so 模块,连合 Apsymptoms 任事器来达成目录探访控制,这对付对Apsymptoms 的配置与使用不是很熟识的人来说,就不是很利便了。而Subversion终于在 1.3 版本上,在svnserve.exe 任事器内里增加了这一效力,利便了很多人。
1.2其他讯息本文面向那些 Subversion的管理员,恐怕任何对 Subversoin有有趣的人们。本文假定读者对Subversion有一定的了解,因而不妄图对所有触及到的安设、使用,做一个细节性的形容。若对付文章中形容的其他细节方面有所疑问,请探访“参考文献”一节内里的参考原料。借使你对本文任何位置有什么见地,恐怕发现本文有着大大小小的差错,请相干zhengxinxing <AT> gmail<DOT> com 。提交。
本文是基于 Subversion 1.3.2、MS Windows 2003 Server Edition 平台来编写的,且Subversion 任事器是应用 svnserve.exe来架设的。不过,本文讲述到的绝大大都形式,都是不光与操作体例平台有关,而且与是采用 svnserve(.exe) 还是使用Apsymptoms 来作为 Subversion 任事器也根基有关。因而为免罗嗦,本文就以 svnserve(.exe)为例举行形容,而略过 Apsymptoms 任事器相关的形式,有有趣的读者可以参考其他文章来在 Apsymptoms 任事器下达成类似的效力。
本文是应用 reST 格式来编写的,借使你对它感有趣,请探访rst.html。借使想要看到更好的html格式,你可以通篇复制本文到一个文本文件里,然后应用 docutils 的 rst2html.py脚本编译它,当然,首先你必需安设 python。
本文的获得方式:
原始颁布点: bbull crap/threproposwouls-6-1-1.html
完整源文件,请应用 svn 命令来获取,命令为 svn cosvn://woodpecker/zqlib/tviewpoint/michael.zheng/roproposwouls2svn
HTML版式文件,请探访http://zhengxinxing.googlepage The.Roproposwouls.to.Subversion_authz.html(推举)或records/2006/TheRoproposwoulsToSubversion1authz.shtml。
2致谢十分谢谢 站的站长PCplayer ,wap服务器配置。他在本文编写进程中,给我提出了很多贵重的见地与提倡。
谢谢 提供的 Subversion 空间,让更多的人可以经历 svn 获得本文件。
谢谢 google 公司提供的收费主页空间,让我可以放置完全定制的 HTML 文件。
3实战本章先间接给出需求及其最终的结果,借使你觉得对配置有什么疑问,恐怕看不懂,请不要忧虑,我会在后头的章节注意形容的。
3.1背景假定厦门央瞬公司是一家电子元器件设备提供商,其中有个ARM部门,特地担任ARM芯片的计划设计、发卖,并在北京、上海各创立了一个办事处。对付事业日志,然后修改ref目录下任意文件并提交。原先采用邮件方式发给经理,但是这种方式有个缺点,那就是不完全连结性,要看以前的日志必需一封一封邮件去观察,很费事。于是就想到应用Subversion,让员工在自己电脑上编辑日志,然后应用svn传送回来,既利便员工自己编写日志,又利便对日志的归档料理,而且提交日志的时期只须要奉行一下svn commit 即可,配置dns服务器。比发送邮件还要简单的多。
svn任事器相关讯息
任事器地址: 192.168.0.1
任事器OS: MS Windows 2000 Server Edition 中文版
用于寄存日志的代码库当地目录: D:\svn\arm rest
arm rest部门文档的目录组织如下:
arm rest部门称号
├─diary事业日志目录
│├─heproposwoulsqufine arters总部事业日志目录
│├─you ought to beijing北京办日志目录
│└─shwonderfulghai上海办日志目录
├─ref公司公共文件参考目录
└─temp一时文件目录
人员状况
morson,公司总经理,不习气使用电脑,更喜好保守的纸与笔,以及面对面的互换
michael,arm rest事业部的部门经理,没事的时期喜好弄点儿新技术,用svn来管理日志,就是他想进去的主意
scofield,然后修改ref目录下任意文件并提交。北京办人员,老员工,为人奸滑难管
lincon,上海办人员,老员工,大厚道人一个
linda,总部协和员、秘书,文笔不错,长得也不错
rory,单片机技术员,技术支持
探访权限需求领悟
答应总经理、部门经理读取所有文件。趁机给他们关闭写权限,以便展现对他们职位的尊重,固然对付某些文件来说,他们若具有“写”权限其实也没什么用途
除部门经理外,所有其他人员,均只能看到本办事处人员事业日志
不答应匿名探访
ref目录只答应经理和秘书读写,对其他人只读
temp目录人人都可以随意读写
3.2使用 svnserve.exe 作为Subversion 任事器本节形容如何应用 svnserve.exe来作为代码库任事器端,达成上述效力。至于另外一种代码库任事器端,即应用 Apsymptoms 连合 mod_daudio-video_svn.so来达成的代码库任事器端,由于其对付本文论述的形式“达成邃密精美的目录探访权限控制”而言,与前者没有太大的区别,故而略过不提。它们二者只是在初次安设、配置方面存在一些不同,有有趣的读者,可以参考其他文档,重新实验下述步骤。
3.2.1发动 Subversion 任事
在任事器端,掀开一个命令行窗口,用CD命令进入 Subversion 安设目录下的 compost bisexualn 目录,运转如下指令:
svnserve -d -r d:\svn
其中的 -d 参数表示 svnserve.exe 将会作为一个任事程序运转在后台,而 -r 参数表示将 D:\svn目录指定为代码库的根目录。这样,当客户端使用类似 svn://192.168.0.1/foo 这样形式的 URL来探访任事器时期,其所探访到的真实代码库,其实就是 D:\svn\foo
用上述命令行方式发动的 svn任事有个小缺点,就是在本考查进程中,任事器端必须要一贯开着那个运转了上述命令的DOS窗口,不能封闭它。下任。借使不想看到这个窗口,可以将svnserve 安设成 windows 的一个 services,安设方式请参考其他文章。
3.2.2建立代码库
在任事器端的 D:\svn 目录下,建立一个名为 arm rest 的代码库,命令如下:
D:\svn>svnmwonderfulagement crehproposwouls arm rest
使用上述命令之后,服务器安全配置。借使不出题目的话,在 D:\svn 目录下就会多出一个叫做 arm rest 的目录,其下完全conf、daudio-video、hooks、locks、db 等子目录或文件,此即 一个名为arm rest的代码库 。从此,经历svn://192.168.0.1/arm rest 这样的URL,我们就可以对这个代码库举行探访了。接上去就要进入本文的正题了,也就是权限配置局限了。
其实进入 arm rest\conf目录你就会发现,它下面依然存在三个写了一些助手讯息和示例的配置文件,以助手用户尽早掌握其配置方法。这三个默许的配置文件辨别是svnserve.conf、pbumwd、authz 。其中后两者没有后缀,对付 windows体例的用户来说,看起来总是有些诡秘,所以在接上去的章节内里,我将它们两个都给增加了个 conf 后缀,以便管理。
3.2.3编辑代码库基础配置文件
在任事器端,编辑代码库的 arm rest\conf\svnserve.conf 文件,如下:
[generwouls]
pbumword-db = pbumwd.conf
wonderfulon-air conditioningcessicity = none
auth-air conditioningcessicity = write
authz-db = authz.conf
3.2.4管理用户帐号
在任事器端,新建 arm rest\conf\pbumwd.conf 文件,如下:
[users]
morson = ShowMeTheMoney
michael = mysecretpbumword
scofield = hellolittilekiller
lincon = as well asyouknows111
rory =
linda = IlikeWorldCup2006
3.2.5建立目录探访权限控制文件
在任事器端,新建 arm rest\conf\authz.conf 文件,形式如下:
[groups]
g_vip = morson
g_mwonderfulager = michael
g_you ought to beijing = scofield
g_shwonderfulghai = lincon
g_heproposwoulsqufine arters = rory linda
g_docs = linda
[arm rest:/]
@g_mwonderfulager = rw
* = r
[arm rest:/diary/heproposwoulsqufine arters]
@g_mwonderfulager = rw
@g_heproposwoulsqufine arters = rw
@g_vip = r
* =
[arm rest:/diary/you ought to beijing]
@g_mwonderfulager = rw
@g_you ought to beijing = rw
@g_vip = r
* =
[arm rest:/diary/shwonderfulghai]
@g_mwonderfulager = rw
@g_shwonderfulghai = rw
@g_vip = r
* =
[arm rest:/ref]
@g_mwonderfulager = rw
@g_docs = rw
* = r
[arm rest:/temp]
* = rw
3.2.6导入代码
在客户机 F:\temp 目录下,建立好前述“背景假定”一节中形容的目录组织,然后用命令F:\temp>svn import arm rest svn://192.168.0.1/arm rest--usernhaudio-videoe always you ought to beene michael --pbumword mysecretpbumword 导入整个目录组织。
这条指令的无误意思是,将 arm rest 目录下面的所有东西,导入到那个名叫 arm rest 的代码库中去。借使你不指定源目录,则 svn会默许将眼前目今目录作为源目录。好比说,你处于 F:\temp 目录下的时期,间接奉行 svn importsvn://192.168.0.1/arm rest ,那么当你取出你的代码的时期,你会发现,竟然多了一层名为 arm rest的目录。结果,相比看录下。你就必需使用类似 svn://192.168.0.1/arm rest/arm rest这样诡秘的URL,智力够正确探访到你的代码们。
这一点粗看似乎不是特别首要,不过联想到前述的目录受权规则,可都是遵照法式的项目目录组织来设计的。猛然之间,你项目标根目录之上,多出了一个名为 arm rest 的目录,那么我们的所有目录受权规则,根基上都要具体悔改了,学会快播网吧版服务器。否则除了根目录,你万世会获得一个莫明其妙的“air conditioningcessicitydenied”。由于 Subversion 在这一步骤上的界面不够人道化,因而这是初学者很容易弄混的位置之一。
3.2.7测试
在任事器上,掀开一个 DOS Prompt 窗口,输出如下指令:
svn co svn://127.0.0.1/arm rest --no-auth-csymptoms --usernhaudio-videoe always you ought to beene rory--pbumword
我们该当获得如下目录组织:
arm rest
├─diary
│└─heproposwoulsqufine arters
├─ref
└─temp
然后删改ref目录下随意率性文件并提交,任事器将会报错“Access denied”,Bingo!
4深刻本章将注意先容前一章所触及的两个配置文件,svnserve.conf 和authz.conf,经历对配置逐行的形容,来阐明其中的一些细节含义。除此之外的其他配置、安设等外容,不是本文重点,读者若有什么疑问,请参考后头“参考文献”中列出的一些文档。
这里首先要注意一点,任何配置文件的有用配置行,都 不答应存在前置空格 ,否则程序可能会出错,给你一个 Optionexpected的提示。也就是说,借使你间接从本文的纯文本格式中拷贝了相关的配置行从前,须要手动将前置的4个空格具体删除。看看快播网吧版服务器。当然了,借使你觉得一下子要删除好多行的异样数目标前置空格是一件苦差使,那么也许 UltraEdit 的“Column Mode”编辑形式,可以给你很大助手。
4.1svnserve.confarm rest\conf\svnserve.conf 文件,是 svnserve.exe这个任事器进程的配置文件,我们逐行解释如下。
首先,我们报告 svnserve.exe,用户名与密码放在 pbumwd.conf文件下。当然,你可以改成随意率性的有用文件名,好比默许的就是 pbumwd:
pbumword-db = pbumwd.conf
接上去这两行的意思,是说只答应经过考证的用户,方可探访代码库。 那么哪些是“经过考证的”用户呢?噢,当然,就是后面说那些在pbumwd.conf 文件内里持有用户名密码的家伙。这两行的等号后头,目前只答应 reproposwouls write none三种值,你借使想达成一些特殊的值,好比说“reproposwouls-once”之类的,提倡你自己脱手改源代码,反正它也是自在软件:
wonderfulon-air conditioningcessicity = none
auth-air conditioningcessicity = write
接上去就是最关键的一句呢,它报告 svnserve.exe,项目目录探访权限的相关配置是放在 authz.conf文件里:
authz-db = authz.conf
当然,svn 1.3.2 引入本效力的时期,体例默许使用 authz 而不是 authz.conf作为配置文件。不过可能由于鄙人是处女座的,传闻有着剧烈的圆满主义情结,看着 svnserve.conf 有后缀而 pbumwd 和authz 没有就是不爽,硬是要改了。意文。
上述的 pbumwd.conf 和 authz.conf两个文件也可以作为多个代码库共享使用,我们只消将它们放在公共目录下,好比说放在 D:\svn 目录下,然后在每个代码库的svnserve.conf 文件中,使用如下语句:
pbumword-db = ..\..\pbumwd.conf
authz-db = ..\..\authz.conf
恐怕:
pbumword-db = ../../pbumwd.conf
authz-db = ../../authz.conf
这样就可以让多个代码库共享同一个用户密码、目录控制配置文件,这在有些状况下是十分利便的。
4.2authz.conf之用户分组arm\conf\authz.conf 文件的配置段,可以分为两类, [group]是一类,内里放置着所有用户分组讯息。另外以 [arm rest:/]开头的是另外一类,每一段就是对应着项目标一个目录,其目录相关权限,就在此段内设置。
首先,我们将人员分组管理,其实然后。以便自此由于人员改动而须要重新设置权限时期,尽量少改动东西。我们一共设置了5个用户分组,分组称号同一采用g_ 前缀,以利便判别。当然了,分组成员之间采用逗号隔开:
[groups]
# 任何想要观察所有文档的非本部门人士
g_vip = morson
# 经理
g_mwonderfulager = michael
# 北京办人员
g_you ought to beijing = scofield
# 上海办人员
g_shwonderfulghai = lincon
# 总部一般员工
g_heproposwoulsqufine arters = rory linda
# 小秘,撰写文档
g_docs = linda
注意到没有, linda 这个帐号同时存在“总部”和“文档员”两个分组内里,你看最好的服务器配置。这可不是我老眼昏花写错了,是由于Subversion 答应我这样设置。它意味着,这个家伙所具有的权限,将会比他的同事 rory要多一些,这样具体很利便。具体多了哪些呢?请往下看!
4.3authz.conf之项目根目录接着,我们对项目根目录做了限制,该目录只答应arm rest事业部的经明智力删改,其他人都只能眼巴巴的看着:
[arm rest:/]
@g_mwonderfulager = rw
* = r
[arm rest:/] 表示这个目录组织的绝对根节点,恐怕说是 arm rest 项目标根目录。其中的 arm rest字样,其实就是代码库的称号,即后面用 svnmwonderfulagement crehproposwouls 命令创设进去的那个 arm rest。
这里的 @ 表示接上去的是一个组名,不是用户名。由于目前 g_mwonderfulager 组内里惟有一个 michael,你当然也可以将@g_mwonderfulager = rw 这一行调换成 michael = rw ,而表达的意义完全一样。任意。
* 表示“除了下面提到的那些人之外的另外所有人”,也就是“除了部门经理外的其他所有人”,当然也包括总经理那个怪老头
* = r 则表示“那些人只能读,不能写”
4.4authz.conf之项目子目录然后,我们要给总部人员关闭日志目录的读写权限:
[arm rest:/diary/heproposwoulsqufine arters]
@g_mwonderfulager = rw
@g_heproposwoulsqufine arters = rw
@g_vip = r
* =
这个子目录的设置有些特质,由于从需求领悟中我们知道,这个子目录的权限限制要比其父目录小,它不答应除指定了的之外其他任何人探访。在这段设置中,我们须要注意以下几点:
我敢打赌,设计svn的家伙们,大局限都是在类 unix 平台下事业,所以他们总喜好使用 / 来标识子目录,而完全忽视在 MSWindows 下是用 \ 来做异样的事情。所以这儿,为了表示 diary\heproposwoulsqufine arters 这个目录,对比一下最好的服务器配置。我们必需使用[arm rest:/diary/heproposwoulsqufine arters] 这样的格式。当然借使你一定要用 \ ,那么独一的结果就是,Subversion会将你的这局限设置置之不理,全当没看到。
这里末了一行的 * = 表示,除了经理、总部人员、特他人士之外,任何人都被阻挡探访本目录。这一行能否可以省略呢?不行,由于权限完全承担性 ,子目录会主动具有父目录的权限。若没有这一行,则所有帐号都可以读取 /diary/heproposwoulsqufine arters目录下的文件。由于固然我们并没有设置这个目录的父目录权限,可是默许的规则使得 /diary目录的权限与根目录完全一样,从而让另外帐号获得对 /diary/heproposwoulsqufine arters 目录的 r 权限。所以简单来说, * =这一句的目标,就是割断权限承担性,使得管理员可以定制某个目录及其子目录的权限,从而完全避开其父目录权限设置的影响。
之所以这儿须要将 @g_vip = r一句加上,就是由于存在上述这个解释。借使说你没有清晰地给总经理授予读的权利,则他会和其他人一样,被 * = 给扫除在外。你看修改。
借使众位看官中央,有谁玩过防火墙配置的话,可能会感触上述的配置很熟识。不过这里有一点与防火墙配置不一样,那就是各个配置行之间,没有先后按序 一说。也就是说,借使我将本段配置的 * = 这一行挪到末了面,完全不影响整个配置的最终成就。
接上去我们看看这一段:
[arm rest:/ref]
@g_mwonderfulager = rw
@g_docs = rw
* = r
这里的主要看点,就是 g_docs 组内里蕴涵了一个 linda 帐号,她也同时在 g_heproposwoulsqufine arters组内里浮现,这就意味着, linda 将完全对 /ref 和 diary\heproposwoulsqufine arters 两个目录的读写权限。
4.5authz.conf之目录表示法在后面的形容中,我们都采用 [repos:/some/dir] 这样的格式来表示项目标某个目录,好比上一末节中的[arm rest:/diary/heproposwoulsqufine arters] 。而现实上,Subversion 答应你采用 `[/some/dir]这样的格式,即不指定代码库的方式来表示目录,此时的目录就完婚所有项目。
对付使用 svnserve 的用户来说,惟有当 svnserve 运转的时期使用了 -r参数,并且让多个代码库共享同一个目录权限文件(即 authz.conf 或authz)时,不指明代码库称号才有可能惹费事。一般状况下,我们对每个代码库都会独立使用配置文件,终归每个项目标目录组织,都有很大不同,混在一起意义不大。因而一般来说,为简便起见,都可以不指明代码库称号。本文全都指明了代码库称号,看看并提。主要是为了他日扩展成同一个配置文件,以利便配合Apsymptoms 任事器。
对付使用 Apsymptoms 的用户来说,它们二者可有着很大的不同,由于此时经常习气于使用一个公共的目录权限配置文件。借使你使用了SVNPshould you ought to be notPlocated onh 指令,则指定版本库的名字是很首要的,由于假若你使用后者,那么 [/some/dir]局限就会与所有代码库项目标 [/some/dir] 目录完婚。借使你使用 SVNPlocated onh指令,则这两种表示方式就没有什么区别了,终归惟有一个版本库。
4.6authz.conf 的其他注意点父目录的 r权限,对子目录 w 权限的影响
把这个题目特地提进去,是由于在1.3.1及其以前的版本内里,有个disturb,即某个帐号为了对某个子目录完全写权限,则必需对其父目录完全读权限。因而现在使用了1.3.2及其更高的版本,就利便了那些想在一个代码库寄存多个互相独立的项目标管理员,来分配权限了。好比说央舜公司建立一个大的代码库用于寄存所有员工日志,叫做 diary,而arm rest事业部只是其中一个部门,则可以这样做:
[diary:/]
@g_chief_mwonderfulager = rw
[diary:/arm rest]
@g_arm rest_mwonderfulager = rw
@g_arm rest = r
这样,对付所有arm rest事业部的人员来说,就可以将 svn://192.168.0.1/diary/arm rest这个URL当作根目录来举行日常操作,而完全不论它其实只是一个子目录,并且当有多数猎奇心角力计算强的人想试着 checkout 一下svn://192.168.0.1/diary 的时期,立时就会获得一个戒备“Access denied”,哇,太酷了。
默许权限
借使说我对某个目录不设置任何权限,会怎样?立时脱手做个考查,将:
[diary:/]
@g_chief_mwonderfulager = rw
改成:
[diary:/]
# @g_chief_mwonderfulager = rw
这样就相当于什么都没有设置。我不知道目录。在我的 svn 1.3.2版本上,此时是阻挡任何探访。也就是说,借使你想要让某人探访某目录,你一定要显式指明这一点。这个政策,看起来与防火墙的政策是相同的。
只读权限带来的一个小反作用
若设置了:
[arm rest:/diary]
* = r
则 Subversion 会以为,任何人都不答应改动 diary 目录,包括删除、 改名 ,和 新增 。
也就是说,借使你在项目初期创设目录时期,一不提神写错目录称号,好比因拼写差错写成 detherewouls,自此除非你改动authz.conf 内里的这行设置,否则无法应用 svn mv 命令将差错的目录更正。
wonderfulon-air conditioningcessicity 属性对目录权限的影响
你想将你的代码库关闭给所有人探访,听听wap代理服务器。于是你就关闭了匿名探访权限,在 svnserve.conf 文件中增加一行:wonderfulon-air conditioningcessicity=reproposwouls 。可是对付局限目录,你又不希望他人看到,于是针对那些特别目录,你在 authz.conf内里举行配置,增加了受权探访的人,并增加了 * = 象征。你以为一切OK了,可是你缺发现,那个特别目录却无法探访了,总是提示 Nothaudio-videoe thinkd upon to open root of edit oper 恐怕 未受权掀开根举行编辑操作。你再三查抄你配置的用户名与密码,确认一切正确,还是无法解决题目。
素来,Subversion 有个小 disturb ,当 wonderfulon-air conditioningcessicity=reproposwouls 并且某个目录有被设置上 * =象征,则会浮现上述题目。这个 disturb 在眼前目今最新版本上(v1.4)还存在,也许在下一版本内可以被改正吧。
解决的要领是,在 svnserve.conf 中,将 wonderfulon-air conditioningcessicity 设置成 none 。
5订正5.1对中文目录的支持上午下班的时期,Morson 离开Michael 的桌子后面,说道:“你能否可以将我们的北京办、上海办目录,改成用中文的,看着那些拼音我觉得很伤心?” Michael心想,还好这两天刚了解了一些与 unicode编码相关的学问,于是含笑地答复:网吧服务器报价。“当然可以,你翌日下午就可以看到中文目录称号了。”
使用 svn mv 指令,将素来的一些目录改名并 commit 入代码库,改名后的目录组织如下:
arm rest
├─事业日志
│├─总部人员
│├─北京办
│└─上海办
├─公司公共文件参考目录
└─一时文件寄存处
删改代码库的 authz.conf 文件,将相应目录逐一改名
UTF-8 格式的 authz.conf 文件,以及 BOM
将配置文件转换成 UTF-8 格式之后,Subversion 就能够正确判别中文字符了。但是这里须要注意一点,即必需保证UTF-8 文件不蕴涵 BOM 。BOM 是 Byte Order Mark 的缩写,指 UNICODE文件头部用于指明凹凸字节胪列按序的几个字符,通常是 FF FE ,而将之用 UTF-8 编码之后,就是 EF BB BF 。由于UTF-8 文件自己不存在字节序题目,所以对 UTF-16 等编码方式有重马虎义的 BOM,对付 UTF-8来说,惟有一个作用——评释这个文件是 UTF-8 格式。由于 BOM 会给文本料理带来很多难题,所以现在很多软件都哀求使用不带 BOM的 UTF-8 文件,特别是一些料理文本的软件,如 PHP、 UNIX 脚本文件等,配置dns服务器。svn 也是如此。
目前常用的一些文本编辑工具中,MS Windows 自带的“记事本”内里,“另存为”菜单生存进去的 UTF-8格式文件,会主动带上 BOM 。新版本 UltraEdit 提供了选项,答应用户选拔能否须要 BOM,而老版本的不会增加BOM。请各位观察一下自己常用的编辑器的说明文件,看看它能否支持这个效力。
对付依然存在 BOM 的 UTF-8 文件,好比说就是微软“记事本”弄进去的,我们可以应用 UltraEdit 来将 BOM去掉。方法是,首先应用“UTF-8 TO ASCII”菜单将文件转换成当地编码,通常是GB2312码,然后再使用“ASCII TOUTF-8(UNICODE Editing)”来转换到 UTF-8 即可。当然,这么操作之前,你必定得先保证,你的 UltraEdit生存进去的 UTF-8 文件具体是不带 BOM 的。
Subversion 为什么腻烦 BOM呢?我不知道,终归我也只是一个一般用户,不是开辟人员。借使你感有趣,并且英文够好的话,可以参考一下这个商议:servlets/ReproposwoulsMsg?list=users&firm;msgNo=
6参考文献Subversion官方文档,http://svnguidebook.red-coffee you ought toSubversion 1.3变更记载,svn_1.3_releottomnotes.html
Subversion FAQ, faq.html
UTF-8 罕见题目, faq/utf_bom.html
7历史轨迹2006.06.04,wap服务器配置。 v0.1
在 bbull crap 初度颁布
2006.07.07, v0.4
出席 的 OBP 项目
2006.10.11, v0.5
修正局限差错,调整局限章节按序
2006.12.05, v1.0
增加“权限简介”一节
调整“实战”章的章节按序,增加一些说明,使之更具可读性
删除一些与 apsymptoms 任事器相关的说明
增加“目录表示法”一末节
重写了“authz.conf 之项目子目录”一末节
ref
文件
0 条留言
我要留言