svnsync: E175002: 方法easyui options方法 失败

Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.
While trying to checkout code from
a repository online I got the following Error
E175002: REPORT of '/repos/xxx/!svn/vcc/default'
I am trying to checkout the code from a remote computer
1,73331230
After long research, I finally found a solution the solution was to put allow from all in the svn configuration on httpd.conf:
&Directory /repos&
allow from all
&/Directory&
The svn checkout is working fine now
The above are for apache 2.2
if you use apache 2.4
&Directory /repos&
require all granted
&/Directory&
1,73331230
In my case I had E175002 because of missing DNS records of Subversion server.
3,98522237
I had 2 issues:
a) The svn folder was not readable by apache user
b) Possibly the Directory was not setup correctly
In my example, SVN repository is installed under /home/svn.
1) chown apache.svn -R /home/svn
2) Modify subversion.conf:
&VirtualHost :443&
ServerName
DocumentRoot /home/svn/
&Directory "/home/svn/"&
AllowOverride None
Order allow,deny
Allow from all
Options None
&/Directory&
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /etc/pki/tls/certs/ca.crt
SSLCertificateKeyFile /etc/pki/tls/private/ca.key
&FilesMatch "\.(cgi|shtml|jsp|html|htm|php?)$"&
SSLOptions +StdEnvVars
&/FilesMatch&
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog /var/log/httpd/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
alias /svn /home/svn
&Location /svn&
SVNPath /home/svn
SVNListParentPath On
AuthType Basic
AuthName "Repositorio Subversion"
AuthUserFile /etc/httpd/dav_svn.passwd
Require valid-user
allow from all
&/Location&
&/VirtualHost&
2,02521130
I have changed the windows password and then I have tried checking out the code and I end up with the above unknown host error.
I have restarted eclipse and restarted virtual machine where my eclipse has been set up.
Now I am able to checkout. Hope this helps.
I had the same error, but the cause for the error was, that I am behind a proxy server. I could resolve this issue by configuring SVN to use this proxy server.
Details how to do this can be found in the following discussion:
Your Answer
Sign up or
Sign up using Google
Sign up using Facebook
Sign up using Stack Exchange
Post as a guest
Post as a guest
By posting your answer, you agree to the
Not the answer you're looking for?
Browse other questions tagged
Stack Overflow works best with JavaScript enabledmyeclipse svn插件subclipse使用http代理同步svn时出现错误
&来源:读书人网&【读书人网():综合教育门户网站】
myeclipse svn插件subclipse使用http代理同步svn时出现异常开发环境:myeclispe 10.6.2subclipse 1.8http代
myeclipse svn插件subclipse使用http代理同步svn时出现异常开发环境:myeclispe 10.6.2 +&subclipse 1.8 + http代理上网现象描述:对项目进行“与资源库进行同步”时弹出对话框显示以下错误信息:同步 SVNStatusSubscriber 时报告了错误。1 中的 0 个资源已经同步。同步 /MMonitorLogistics 时发生错误:Error getting status for resource P/MMonitorLogistics org.apache.subversion.javahl.ClientException: svn: E175002: unknown hostsvn: E175002: OPTIONS request failed on '/svn/DevelopmentProject/Project/MMoni.blogtorLogistics/trunk'Error getting status for resource P/MMonitorLogistics org.apache.subversion.javahl.ClientException: svn: E175002: unknown hostsvn: E175002: OPTIONS request failed on '/svn/DevelopmentProject/Project/MMonitorLogistics/trunk'org.apache.subversion.javahl.ClientException: svn: E175002: unknown hostsvn: E175002: OPTIONS request failed on '/svn/DevelopmentProject/Project/MMonitorLogistics/trunk'org.apache.subversion.javahl.ClientException: svn: E175002: unknown hostsvn: E175002: OPTIONS request failed on '/svn/DevelopmentProject/Project/MMonitorLogistics/trunk'截图:svn console输出信息:svn: E175002: unknown hostsvn: E175002: OPTIONS request failed on '/svn/DevelopmentProject/Project/MMonitorLogistics/trunk'& & svn: E175002: unknown hostsvn: E175002: OPTIONS request failed on '/svn/DevelopmentProject/Project/MMonitorLogistics/trunk'& & cmproxy截图:解决方法:打开C:\Users\Administrator\AppData\Roaming\Subversion,& Administrator为当前登录用户名称;编辑文件servers,在142行[global]下一行加入配置。& & & & & &&http-proxy-exceptions = 10.*, *.gmcc.nethttp-proxy-host = cmproxy.gmcc.nethttp-proxy-port = 8081http-auth-types = basic重新同步操作即可。截图:[转载]svn常见问题
。不錯svn常见问题
00:09:59 阅读123 评论0 &&字号:大中小&订阅
1. SVN 疑难解答
1.1. 刚刚在本目录下执行一个提交,然后执行 "svn log",怎么看不到最新的提交?
“明明是刚在本目录下执行了一次提交,为什么 "svn
log",看不到呢?”
如果您是使用分布式版本控制工具(如 git, hg, bzr),或者使用 CVS 的用户,会对此现象感到非常奇怪。
问题的实质是 SVN 的混杂版本号。
执行 "svn status -v" 命令可以看到当前目录处于混杂版本状态。
不同的版本控制工具使用不同的方法记录本地工作目录下文件的状态
分布式版本控制工具在工作区的最顶级目录包含唯一一个控制目录(如 .git,
.hg, .bzr ── 实际为版本库本身)
Subversion在每一个工作目录下都包含一个名为 .svn
的控制目录,记录着每一个文件以及当前目录的版本号
相比之下,Subversion虽然采用了全局版本号,但本地记录目录和文件的版本散布在各个 .svn 目录中
当刚刚完成一次提交,仅仅该次提交涉及的文件在 .svn
控制目录中记录的版本号是最新的,其它的文件包括目录本身的版本号还是旧的。
“难道提交不应该自动更新所有文件和目录状态么?”
但这是不合理的,可能由于他人的修改破坏当前工作区,因此只有主动执行 "svn
update" 命令,才进行更新。
在目录下执行一次 "svn update",之后再执行 "svn
log",就在日志中能够看到刚刚的提交。或者使用命令 "svn log -rHEAD:1" 也可以看到最新提交实践出现在 log
1.2. 修改目录属性提交报错:“目录 “XXX” 已经过时”!而这个目录当前只有我一个人在改动,没有其他人修改。
修改当前目录下的文件,之后提交。提交完毕后,不要执行 "svn
update",直接修改当前目录的属性,当再次提交时报错:
svn: 提交失败(细节如下):
svn: 目录 “/trunk/XXX” 已经过时
问题的实质仍然是 SVN 的混杂版本号。
执行 "svn status -v" 命令可以看到当前目录处于混杂版本状态。
前一次的提交,并未更新当前目录的版本号,从而导致当前目录的版本号不是最新。当修改目录属性并提交时,引发 “目录已经过时”
解决方案:
在当前目录下执行 "svn update",之后再执行提交。
1.3. 为什么提交后,在日志中看不到提交者 ID?提交者为空!
如果在提交日志中的提交者为空,说明 Subversion
配置了允许匿名用户提交,在正式的部署中,是不应该出现的。
解决方案:
登录 Subversion 管理后台,如地址:
http://dev./pysvnmanager
检查权限设置
删除允许匿名用户登录的策略
确认在缺省版本库([/]) 的根模组(/)中存在一条 “*=r” 或者
“*=” 的策略。
1.4. 如何更改我的口令?
进入单点登录页面,登录后,访问账号管理界面,修改口令。如图:
1.5. 忘记口令怎么办?
进入单点登录页面,点击页面中的“忘记口令”的链接。如图:
1.6. Subversion 错误信息一览表
不同的客户端(命令行,TortoiseSVN, AnkhSVN,
Subclipse等)的出错信息可能稍有不同。
下面表格中的出错信息以
http://svn./svn/test 版本库做示例,仅供参考。
svn: Server sent unexpected return value (500 Internal Server Error) in response to OPTIONS request for 'http://svn./svn/test'
错误的用户名
检查登录的用户名是否输入错误
svn: 服务器发送了意外的返回值(500 Internal Server Error),在响应 “OPTIONS” 的请求 “http://svn./svn/test” 中
svn: OPTIONS of 'http://svn./svn/test': authorization failed: Could not authenticate to server: rejected Basic challenge (http://svn.)
错误的口令
用正确的用户名/口令登录
svn: 方法 OPTIONS 失败于 “http://svn./svn/test”: 认证失败: Could not authenticate to server: rejected Basic challenge (http://svn.)
svn: Server sent unexpected return value (403 Forbidden) in response to OPTIONS request for 'http://svn./svn/test'
用户无权限
联系管理员,为用户分配权限
svn: 服务器发送了意外的返回值(403 Forbidden),在响应 “OPTIONS” 的请求 “http://svn./svn/test” 中
svn: OPTIONS of 'http://www./svn/test': 200 OK (http://www.)
服务器地址错误,是普通Web页面,不支持SVN的 WebDAV 协议
确认输入正确的 SVN 服务地址。可以在浏览器中输入该地址进行确认
svn: 方法 OPTIONS 失败于 “http://www./svn/test”: 200 OK (http://www.)
The version of your subversion (client) is below 1.5.0, upgrade to 1.5.0 or above.
SVN below 1.5.0 can not handle mergeinfo properly.
It can mess up our automated merge tracking!
是由于客户端的软件版本低于1.5.0造成的。服务器端对客户端软件版本进行了限制,以免对合并跟踪破坏。
升级本地的Subversion客户端软件到1.5.0或以上版本。
svn: This client is too old to work with working copy '.'.
You need to get a newer Subversion client, or to downgrade this working copy.
See http://subversion.tigris.org/faq.html#working-copy-format-change for details.
安装了多个版本的SVN客户端(TSVN,Subclipse,...),且各个客户端的版本不一致。高版本的SVN客户端会自动更新本地工作目录中的
.svn 目录下的文件格式,导致旧版本的SVN客户端不能继续访问该本地工作目录
将本机安装的所有的SVN客户端都更新到同一个大版本,以避免本地工作目录的格式不一致
svn: 此客户端对于工作副本 “.” 太旧。你需要取得更新的 Subversion 客户端,或者降级工作副本。
参见 http://subversion.tigris.org/faq.html#working-copy-format-change 以获得更详细的信息。
svn: Working copy 'trunk/src' locked
svn: run 'svn cleanup' to remove locks (type 'svn help cleanup' for details)
异常操作导致目录没有解锁。
一个简单的重现方法:在 .svn 目录下创建空的名为 lock 的文件
使用命令行 "svn cleanup" 或者类似的“清理”动作删除锁定
svn: 工作副本“trunk/src”已经锁定
svn: 运行“svn cleanup”删除锁定 (输入“svn help cleanup”得到用法)
日志中没有作者信息:
------------------------------------
r9 | (没有作者信息) | …
anonymous commit test
匿名提交导致没有作者信息
检查版本库权限控制,禁止匿名提交
传输文件数据.svn: 提交失败(细节如下):
svn: Commit blocked by pre-commit hook (exit code 1) with output:
提交说明至少应包含 4 个字符, 或者太简单了。
这是由于用户提交的提交说明(commit
log),太过简单了。在提交时需要输入有意义的 commit log。
写有意义的提交说明,或者请求管理员更改版本库插件
传输文件数据.svn: 提交失败(细节如下):
svn: Commit blocked by pre-commit hook (exit code 1) with output:
Wide character in print at /opt/svn/svnroot/myrepos/hooks/scripts/check-case-insensitive.pl line 259.
发现文件名大小写冲突:
trunk/src/Logger.c 已经存在于 logger.c
管理员设置了对新增文件是否重名(只有大小写不同)的文件进行检查。文件名只有大小写不同,在Windows上进行检出会造成麻烦
不要添加重名(仅大小写不同)文件
src/文件aBc.txt
传输文件数据.svn: 提交失败(细节如下):
svn: Commit blocked by pre-commit hook (exit code 1) with output:
Clash: '/trunk/src/文件aBc.txt' '/trunk/src/文件abc.txt'
svn: While preparing '/home/jiangxin/tmp/svn.test/trunk/src/README.txt' for commit
svn: Inconsistent line ending style
提交的文件已经设置了 svn:eol-style
属性,但是该文本内的换行符有DOS的换行符CRLF,也有Unix换行符LF,不一致!
统一该文本文件内的换行符。Linux 下可以用dos2unix,
unix2dos, sed等命令。Windows下可用 UltraEdit 进行转换。
svn: 当为提交操作准备“/home/jiangxin/tmp/svn.test/trunk/src/README.txt”时
svn: 不一致的行结束样式
svn: Failed to add file 'Makefile': an unversioned file of the same name already exists
执行更新(svn
up)时报错。因为其他人新增一个文件到服务器,而本地却存在一个同名文件(未版本控制)
先将本地重名文件改名,再执行 "svn up",之后再比较、合并文件。或者执行
"svn up --force"
svn: 增加文件 'Makefile' 失败: 同名未版本控制的文件已存在
src/Makefile
svn: Commit failed (details follow):
svn: File '/svn/test/trunk/src/Makefile' already exists
添加新文件,提交时报错。因为其他人已经先于我增加了该文件。
先执行更新操作("svn
up"),再根据提示进行操作:合并/提交...
src/Makefile
svn: 提交失败(细节如下):
svn: 文件“/svn/test/trunk/src/Makefile”已存在
Conflict discovered in 'Makefile'.
Select: (p) postpone, (df) diff-full, (e) edit,
(mc) mine-conflict, (tc) theirs-conflict,
(s) show all options: p
Updated to revision 5.
Summary of conflicts:
Text conflicts: 1
多人同时编辑同一个文件时,可能会遇到冲突。别人先于我提交,则当我提交时要先更新。更新可能遇到不能自动解决的冲突
使用工具进行冲突解决
在 “Makefile” 中发现冲突。
选择: (p) 推迟,(df) 显示全部差异,(e) 编辑,
(mc) 我的版本, (tc) 他人的版本,
(s) 显示全部选项: p
更新到版本 5。
冲突概要:
正文冲突:1
svn: Commit failed (details follow):
svn: File 'Makefile' is out of date
svn: File not found: transaction '6-d', path '/trunk/src/Makefile'
提交的文件已被他人删除
先执行更新操作("svn
up"),再根据提示解决该树冲突:删除文件或继续添加...
svn: 提交失败(细节如下):
svn: 文件 “Makefile” 已经过时
svn: File not found: transaction '6-c', path '/trunk/src/Makefile'
svn: Commit failed (details follow):
svn: File or directory '/trunk/XXX' try updating
try updating
基于旧版本修改是不允许的
先更新("svn update"),再提交
svn: 提交失败(细节如下):
svn: 文件或目录 “/trunk/XXX” 已经过时;请先更新
try updating
svn: DAV it's possible that the repository's pre-revprop-change hook either failed or is non-existent
svn: At least one pr repository is unchanged
svn: Error setting property 'log':
Repository has not been enabled to accept
ask the administrator to create a pre-revprop-change hook
修改提交说明等操作属于高风险操作,因为该操作没有被版本控制,属于不可恢复的操作。缺省禁止。
请联系管理员,启用该版本的相关钩子,允许修改“版本属性”。参见
svn: DAV 请求失败;可能是版本库的 pre-revprop-change 钩子执行失败或者不存在
svn: 至少有一个属性变更失败;版本库未改变
svn: 设置属性 “log” 出错:
Repository has not been enabled to accept
ask the administrator to create a pre-revprop-change hook
传输文件数据.svn: 提交失败(细节如下):
svn: Commit blocked by pre-commit hook (exit code 1) with output:
====================
trunk/src/File.c : 属性 svn:mime-type 或者 svn:eol-style 没有设置
====================
管理员已经启用换行符属性检查。每一个新添加的文件必须
指定换行符。如果 svn:mime-type 属性为文本文件,则 必须设置 svn:eol-style 属性。
对于二进制文件,执行如下命令:
svn propset svn:mime-type application/octet-stream path/of/file
对于文本文件,可以执行如下命令:
svn propset svn:mime-type text/plain path/of/file
svn propset svn:eol-style native path/of/file
为了避免每次添加文件手动设置,可以启用自动属性设置 ...
管理员启用了检查新文件换行符的扩展
为新增文件设置正确的 svn:mime-type 和/或
svn:eol-style 属性
2. TortoiseSVN 疑难解答
2.1. TortoiseSVN 不能安装?所有 MSI 格式的软件包都不能安装了!
问题描述: 在部署 Subversion
本地环境时,有位同事的机器始终无法安装 TortoiseSVN 安装包! 据其本人讲,很早就已经发现不能安装 *.msi
格式软件包了,可是重装 Windows 损失太大。
解决方案: 最终发现是由于目录授权的问题:系统 system
账号不能对目录进行写操作,当重新为目录设置安全权限后,解决该问题。
问题的解决过程如下:
通过 Windows 事件管理器查看到下面相关事件:
正在开始 Windows Installer 事务: E:安装工具版本控制TortoiseSVN-1.5.5.14361-win32-svn-1.5.4.msi。客户端进程 ID: 4488。
Product: TortoiseSVN 1.5.5.14361 (32 bit) -- Error 1305. Error reading from file E:安装工具版本控制TortoiseSVN-1.5.5.14361-win32-svn-1.5.4.msi.
System error 1008. Verify that the file exists and that you can access it.
正在开始 Windows Installer 事务: E:安装工具版本控制TortoiseSVN-1.5.5.14361-win32-svn-1.5.4.msi。客户端进程 ID: 4488。
Product: TortoiseSVN 1.5.5.14361 (32 bit) -- Error 1305. Error reading from file E:安装工具版本控制TortoiseSVN-1.5.5.14361-win32-svn-1.5.4.msi.
System error 1008. Verify that the file exists and that you can access it.
Windows Installer 已安装产品。产品名称: TortoiseSVN 1.5.5.14361 (32 bit)。产品版本: 1.5.14361。产品语言: 1033。安装成功或错误状态: 1603。
Product: TortoiseSVN 1.5.5.14361 (32 bit) -- Installation failed.
为了查看 System error 1008 的错误含义,运行 net
helpmsg 1008
C:& net helpmsg 1008
错误的引用令牌...
鼠标右键点击要安装的 *.msi 软件包所在的目录(本例为:
E:安装工具版本控制),查看权限,发现:
除了管理员帐号外,还有两个未知的用户帐号;
未知的用户帐号,可能是由于Windows重新安装后,之前的Windows用户帐号 Everyone 和
Administrators。
重新设置该目录的权限,为 Everyone 用户赋予 Full 权限;
重新运行 *.msi 安装包,成功安装。
2.2. 为什么提交者不是我?如何修改 TortoiseSVN 的提交用户的身份?
TortoiseSVN
缓存了认证信息,即缺省使用上一次认证成功的用户名和口令进行提交。
如果其他人在自己的机器上进行提交(以对方的身份认证),则本机提交都使用其他人的用户账号。
这除了造成提交者信息发生错误外,还会造成安全问题──账号权限可能被滥用。
解决办法:
打开相关对话框:TortoiseSVN -&
设置 -& 已保存数据
清除认证数据
2.3. 为什么我不能像在培训中老师操作的那样反删除?我的菜单中甚至没有相关的菜单选项?
培训中演示了反删除,其中一种方法为:
在工作目录中,右键单击鼠标,选择查看日志
在日志中选择要恢复的相关历史操作,右键单击,选择“复原此版本中的变更”
自动通过一个反向合并操作完成文件的反删除
在本地目录中执行提交操作,才最终完成反删除
然而,有的学员在实际操作中,第二步操作中的日志对话框的菜单中出现不了“复原此版本中的变更”!
原来问题出在第一步。
正确的操作是:右键点击工作区目录,在弹出的菜单中选择“查看日志”
错误的操作是:右键点击工作区目录,在弹出的菜单中选择“版本库浏览器”。然后在弹出的“版本库浏览器”对话框中,再点击对应目录,选择“查看日志”。
这就难怪了。反删除或者合并操作,是在本地工作目录完成的。而“版本库浏览器”是直接操作服务器,没有一个本地目录相对应,因此菜单中不会出现只有对应本地目录才能出现的命令。
2.4. 哪个代码比较工具好用?并且可以进行图形化的冲突解决?
Kdiff3 是一个非常好的选择。Kdiff3 原本是 Linux 的 KDE
图形环境下的一个文件比较和冲突解决工具, 支持三向文件比较,已经被移植到了 Windows 平台。在 Windows
中安装,会自动设置 TortoiseSVN 的相关命令行参数。
下面是 Kdiff3 的一个文件合并的界面:
但是 Kdiff3
对中文支持存在一定的问题,中文的显示会重叠在一起,造成识别上的困难。可以通过设置字体(Marlett,
微软雅黑等),使得中文能够显示完全,但是英文则按照全角显示。
还有其他的比较/冲突解决工具可以选择:
TortoiseMerge: TSVN 自带的缺省冲突解决工具。
Araxis Merge: Windows
平台上的商业软件,支持目录和文件的比较。
Meld: Linux 上的文件比较工具
2.5. 无法用 VS.net 2003 打开用 Subversion 检出的项目?
这是 VS.Net 2003 的一个Bug。即只要项目下存在以
点开头的文件或文件夹,使用了 FrontPage 扩展的 VS.NET 2003
项目就在打开项目的界面发生死锁,导致项目无法打开。
如果项目本身不存在兼容性问题,尽量将 VisualStdio .Net
升级为高版本,如 VS.NET
如果由于兼容性问题,或者由于客户的平台不能轻易升级等原因,需要使用
VS.NET 2003 的开发环境。Subversion 提供了一个解决方案。
Subversion 提供的解决方案就是,使用 _svn
(以下划线开头的目录而非点开头的目录)作为工作区的控制目录,取代 .svn
在 TSVN 中通过下面的对话框进行设置
注意:在设置了 Subversion 使用 _svn 作为控制目录后,之前以
.svn 作为控制目录检出的工作区将不再有效!反之亦然。
3. 其他IDE 整合疑难解答
3.1. 报错: 工作区版本太新
这是由于安装了多个 Subversion 客户端,然而各个
Subversion 客户端软件的版本不同(大版本不同)。
如果同时安装了 TortoiseSVN 和
Subclipse,如果工作区被高版本的 TSVN 访问,工作区格式则自动更新为最新的格式, 会导致低版本的客户端,如
Subclipse 无法访问。
解决办法:
将所有的 Subversion
客户端版本都升级到同一个大的版本,这样就不会造成工作区版本冲突了。
或者,如果有的客户端尚未推出新版本,则只能在多个客户端选择一个最常用的,其他不常用的卸载。
3.2. 无法安装 AnknSVN 的 MSI 格式安装包?
3.3. 我的机器同时部署了 VS.NET 2003 和 VS.NET 2008,能够安装 AnkhSVN 么?
可以在一台机器中同时安装多个版本的 AnkhSVN。
AnknSVN 事先将 Subversion 整合在 VS.NET
中。对于不同的版本的 VS.NET,需要安装不同版本库的 AnkhSVN。
对于 VS.NET 2003,需要安装 AnkhSVN 1.0.x
对于 VS.NET
以上版本,需要安装 AnkhSVN
2.0 以上版本
4. SVN统计疑难解答
4.1. 为什么 Subversion 代码分析工具得出的代码行统计和开发工具统计出来的相差很多?
有的同事发现用开发工具统计出来的代码行统计值比较低,而 Subversion
代码分析工具得出的代码行统计却高的离谱。针对这个问题,用下列工具做了测试。
代码行统计工具一览:
在对代码行工具进行核实的过程中,参考了下列工具:
cloc.pl: 参见
wc : Unix 命令。
sloccount: 支持的语言有限。
最终得出的结论是: 在 Statsvn 提供的 Subversion
代码统计页面中,会出现两个不同的代码行概念:一个是历史代码行,一个是实际代码行。实际代码行和用户开发工具统计值基本相符,历史代码行是一个动态的概念,可能要远远高出实际代码行。
历史代码行
包含了对删除文件的统计,还包含了对代码中删除/修改的行的统计。是版本库特有的代码行统计量。因为当前最新代码的实际代码行,并不能代表实际工作量,而整个的代码变更历史(包含代码删除和代码修改)才能真正的反映工作量。
实际代码行
就是我们常说的代码行数统计量,是当前版本库中最新代码的代码量。不包含历史更改。
测试数据略...
5. 管理员疑难解答
5.1. 如何创建一个新的版本库?
创建版本库
用超级用户账号,登录 Subversion 管理后台,在菜单中选择
“版本管理”
点击链接 “添加版本库”
输入版本库名称,完成创建
对于新创建的版本库(即没有任何代码提交),可以通过管理员界面删除新建的版本库
为版本库指定管理员(版本库管理员只有对本版本库进行权限设置/版本库管理等功能)
在菜单中选择 “权限管理”
在下拉菜单选择新创建的版本库
在管理员文本框,输入用逗号分隔的管理员ID列表
通知项目经理,版本库已经完成创建
项目经理或者由项目经理指派管理员完成版本库的授权
还有版本库的插件配置也应该由项目经理配置完成
5.2. 如何为版本库添加功能扩展?
Subversion
通过钩子脚本实现功能扩展。管理员可以通过图形界面为版本库设置功能扩展。
如何访问 Subversion 插件管理界面?
在浏览器中输入 Subversion 后台管理 URL,如:
http://dev./pysvnmanager/
输入管理员的用户名和口令
从功能菜单中选择 “版本库管理”
选择相应的版本库
如图所示:
如何添加功能扩展?
在尚未安装的插件列表中,选择要安装的插件
填写必要的参数后,点击按钮 “安装此插件”
如何删除功能扩展?
选择功能扩展前的选择框
点击页面下方的 “删除选择的插件” 按钮
如何修改/重新配置功能扩展?
在当前插件配置列表中,每个差价的 ID 都可以点击,点击对应插件的英文
该插件的配置界面出现在页面的上方
修改完成后,点击按钮 “安装此插件”
5.2.1. AllowRevpropChange: 允许修改版本属性
版本属性是附着于版本提交的属性,即提交事件本身的属性,如:提交说明、提交者ID等等。和 Subversion
一般的属性概念不同,“版本属性”没有版本控制,一但修改不可恢复,不像 Subversion
的一般属性每次修改都要提交,因而一般属性被版本控制,修改不会破坏历史。
修改版本属性属于不可恢复动作,因此默认是禁用的。本插件可以开放对版本属性的修改。 如果通过本插件启用,最好启用
插件,使得版本属性的修改能够通过邮件发送出来,起到对原有版本属性存档以及通知的作用。
5.2.2. CapCheckMergeInfo: 禁止低版本的 SVN 客户端访问
Subversion 1.5 提供了合并追踪功能,如果用旧的 SVN 客户端(
& 1.5.0 )访问,会造成对 Subversion 合并追踪的破坏。
启用此插件,会禁止低版本的 SVN 客户端提交。
5.2.3. CaseInsensitive: 检查大小写引起的文件名冲突
Subversion 本身对版本控制的文件、目录等是大小写区分的,这对于像
Windows 那样的对文件/目录名大小写不区分的文件系统来说,会出现混乱的情况。
如果在同一个目录下提交了两个同名文件(仅仅大小写不同)
在文件系统大小写不敏感的操作系统(如
Windows上),会造成文件的相互覆盖等各种古怪的现象
该插件通过在提交时,检查版本库中现有的文件,如果发现同名(仅大小写不同)文件,则终止提交,报错。
5.2.4. CommitLogCheck: 检查提交说明
缺省 Subversion
本身不进行提交说明检查,用户可以不写提交说明(commit log)提交。不写提交说明是非常不好的习惯。
怎样才是好的提交说明(Commit Log)?
不要写冗余的信息。提交事件本身会包含:提交者ID,提交时间,提交的文件名称,代码的 differ
等。下列的提交说明包含冗余信息,不是合格的提交说明:
"本代码由 jiangxin 提交" (提交者ID是冗余信息)
提交" (提交时间是冗余信息)
"添加文件 hello.cpp " (提交的文件名也是冗余信息)
提交说明可以包含:为何做出更改 ── 实现了哪个功能需求,改正了哪个
提交说明可以包含:为何如此更改 ── 实现中用到的技巧
提交说明有可能要比代码更改量还要多
启用或关闭插件
为了避免通过删除插件禁用而造成的配置信息丢失,该插件可以通过设置启用/停止按钮来启用和关闭插件。
提交说明的最小长度
输入大于 0 的整数。如果提交说明的字符数小于该值,则禁止提交。
匹配的模板
提交说明中必须包含的字符,如: (bug|issue)。缺省为空。
不能出现的内容
禁止在提交说明中出现的内容,缺省为空。
5.2.5. EmailNotify: 针对代码变更发出邮件通知
版本库中的数据变更(文件修改或者属性修改),发出通知邮件。缺省为空。
若要启用该插件,需要为邮件通知设置参数:
一个由多个命令行参数组成的一行文本作为该插件的参数。格式为
[options] email_addr [email_addr ...]
或者基于正则表达式,提供一个基于路径的代码变更的邮件通知。
[-m regex1] [options] [email_addr ...] [-m regex2] [options] [email_addr ...] ...
和提交路径相匹配的正则表达式。一个点 "." 匹配所有路径
--from email_address
发信人地址
-r email_address
回复邮件地址
-s subject_prefix
标题的前缀,如 [Prefix]
不包含代码差异(缺省包含)
所有代码变更发送一个只读的邮件列表:
project1-commit@list., 回复地址设置为另外一个可写(允许讨论)的邮件列表:
project1-discuss@list.
--from noreply@ -r project1-discuss@list. -s [DEV] project1-commit@list.
不包含代码差异的邮件发送到一个邮件列表,包含代码差异的邮件发送到另外的一个邮件列表
-m . --from noreply@ -r project1-discuss@list. -s [DEV] --diff n project1-commit@list. -m . --from noreply@ -r project1-discuss@list. -s [DEV] --diff y project1-commit-with-diff@list.
5.2.6. EolStyleCheck: 文件类型和换行符设置检查
如果启用该插件,则新增的文件,必须设置 svn:mime-type 和/或
svn:eol-style 属性。
当新增加的文件的 svn:mime-type 属性以 "text/"
开头,或者没有设置,则该文件必须设置 svn:eol-style 属性,以标识该文本文件的换行符属性。
为何要设置文本文件的换行符属性?
为了更好的跨平台开发,需要设置文本文件的换行符属性。有以下几种情况:
如果当前的项目正在跨平台开发(Windows 和
Linux),有的员工工作在一个平台上,有的工作在另外的操作系统上
或者当前项目的开发语言支持跨平台开发(如: Java, Python,
PHP, C, ...)
或者当前项目是在 Linux 下开发而有的开发人员喜欢在
Windows下编辑(反之亦然)
对提交文件进行换行符检查,避免出现混杂的换行符出现
5.2.7. ReadonlySvnMirror: SVN 工作在只读镜像模式,禁止用户写入
该扩展是为 Subversion 分布式部署而存在的。当 Subversion
主服务器位于远程网络,本地可以建立本地镜像而提供本地般的访问速度。
但要限制用户对该镜像服务器的访问,只有负责镜像的专用账号,才能够在镜像服务器中提交。
启用或关闭插件。为了避免通过删除插件禁用而造成的配置信息丢失,该插件可以通过设置启用/停止按钮来启用和关闭插件。
Svnsync 管理员: 仅该账号可以提交到该只读 Subversion
5.2.8. TracPostCommit: Trac 与 SVN 整合
整合 SVN 与 trac(需求和缺陷跟踪系统)。如果 subversion
的提交说明包含 ticket id,则更新对应 trac 实例的 ticket 状态,将提交说明附加到 ticket 后。
启用或关闭插件
为了避免通过删除插件禁用而造成的配置信息丢失,该插件可以通过设置启用/停止按钮来启用和关闭插件。
Trac 环境路径
根据 trac 实例的部署,如实填写
此版本库 trac 中的名称(缺省为空)
如果对应的 Trac
实例配置了多个版本库,则需提供对应的版本库别名。缺省为空。
标记为修复的ticket状态
当提交代码标记为修复对应的 ticket(需求或者bug),Trac 中该
ticket 的状态设置为该值。缺省为为空(即 closed)
5.3. 为新员工分配Subversion账号的过程是如何的?
通过集中管理平台创建新账号。如图所示:
该操作一般由系统管理员(账号管理员)执行
只需创建一次账号,用户就自动在各个业务子系统拥有账号。如果用户账号已经建立,跳过此步骤。
注意:从事先定义好的用户模板创建新用户账号,可以避免由于用户组设置错误,导致用户不能更改口令,或者用户不能访问
Subversion 服务。
访问 Subversion
管理后台,为用户分配权限。如图所示:
该操作一般由具体项目的管理员或者项目经理执行
5.4. 拆除“核弹引爆码”?
核弹引爆码
是一个有趣的比喻。如果非常隐私数据或其它不应该出现在版本库中的数据(如“核弹引爆码”),不小心提交(检入)到了版本库。如果用版本库自身的删除功能,只是在表面删除而已,该“核弹引爆码”仍然可以通过访问版本库历史而查看到。从安全角度上讲,是不允许的,应该从版本库中彻底删除
── 历史中也不可见。
Subversion
能够彻底删除“核弹引爆码”,但是普通用户不行,需要管理员进行操作。(这很合理,因为版本库安全性的另一方面,就是数据的绝对安全 ──
一旦提交,历史不可更改)
操作的过程如下:
用 "svnadmin dump" 命令导出版本库到一个文件
用 "svndumpfilter"
命令过滤掉导出文件中的“核弹引爆码”文件
再创建一个新库,用 "svnadmin load"
命令从导出文件重建版本库
删除旧版本库,将新版本库目录改名为原版本库名称
注意:确保新版本库的 UUID 不变,版本库的提交版本的编号顺序也不变,整个操作对版本库的使用者将是透明的。
5.5. 一个版本库拆分为多个?多个版本合并为一个?
5.6. 版本库从 CVS 到 Subverson 迁移?
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 easyui options方法 的文章

 

随机推荐