A. 如何在windows系统修改svn用户权限
1、 本文适用于对Subvesion的自带服务svnserve进行权限配置,全部在authz文件中完成。
2、 如果要对含有中文的目录或文件进行管理或分配时,需要将该文件保存为UTF-8格式,微软的记事本保存为UTF-8格式无效,所以不要用。可用如UltraEdit或EditPlus等软件完成,保存时,格式应选择UTF-8 NO BOM。
3、 权限分配时,应遵守从根目录到子目录、从设置最广泛权限到最精细权限、从只读权限到读写权限设置原则,即从根目录开始设置最广泛的访问权限,然后逐步设置下属子目录的访问权限。提示:目录的访问权限既可以分配给组,也可以分配指定用户。
现举例进行说明:
启动服务:服务应指向所有版本库的根目录,本例中为D:\SVN,命令如下:
sc create SVNService binpath= "D:\Subversion\bin\svnserve.exe --service -r D:/SVN" displayname= "SVNService" depend= Tcpip start= auto
项目情况:D盘根目录下有一个文件夹SVN,在该文件夹中有jsyxv3、svntest两个版本库(可以有更多个),这些版本库共享使用同一个权限配置文件,目录结构如下:
D:\SVN
|---jsyxv3 (项目一,子目录略)
|---svntest (项目二,子目录略)
|---authz (共享的权限配置文件)
|---passwd (共享的密码文件)
#=====配置开始=====
#分组:
[groups]
group_admin = wws,aaa,bbb
group_user1 = sj,ccc
group_user2 = sy,dd,eeee
group_user3 = lxt
group_user4 = ss
#设置对根(即SVN)目录下,所有版本库的访问权限
[/]
* = r #所有登录用户默认权限为只读
@group_admin = rw #可以分配给组,该组有读写权限
wws = rw #也可以像这样分配给指定用户
#以下将对各版本库的及其目录进行权限分配
[jsyxv3:/] #设置对jsyxv3版本库中,所有项目的访问权限
* = #未授权用户没有任何权限
@group_user1 = rw
[jsyxv3:/程序管理] #设置对jsyxv3版本库中程序管理目录的访问权限
* = #未授权用户没有任何权限
@group_user2 = rw
[jsyxv3:/项目管理] #设置对jsyxv3版本库中项目管理目录的访问权限
* = #未授权用户没有任何权限
@group_user3 = rw
[svntest:/] #设置对svntest版本库中,所有项目的访问权限
* = #未授权用户没有任何权限
@group_user1 = rw
[svntest:/程序管理] #设置对svntest版本库中程序管理目录的访问权限
* = #未授权用户没有任何权限
@group_user2 = rw
@group_user3 = rw
[svntest:/项目管理] #设置对svntest版本库中项目管理目录的访问权限
* = #未授权用户没有任何权限
@group_user4 = rw
#=====配置结束=====
4、 最后重要提示:
4.1启动的服务与客户端检出的关系:
4.1.1 如果启动的服务指向一个具体的版本库,如红字部分描述:
sc create SVNService binpath= "D:\Subversion\bin\svnserve.exe --service -r D:/SVN/svntest" displayname= "SVNService" depend= Tcpip start= auto
则客户端检出的地址应为:svn://192.168.0.1/
4.1.2 如果启动的服务指向的是多个版本库的父目录,如红字部分描述:
sc create SVNService binpath= "D:\Subversion\bin\svnserve.exe --service -r D:/SVN" displayname= "SVNService" depend= Tcpip start= auto
则客户端检出的地址应为:svn://192.168.0.1/svntest
4.2如果权限管理完成时,对各版本库还未完成导入工作,请记得使用对SVN目录有读写权限的用户身份进行操作,否则有可能会提示操作失败(因为权限不够)。
B. svn如何使用
svn(subversion)是近年来崛起的版本管理工具,是cvs的接班人。目前,绝大多数开源软件都使用svn作为代码版本管理软件。如何快速建立Subversion服务器,并且在项目中使用起来,这是大家最关心的问题,与CVS相比,Subversion有更多的选择,也更加的容易,几个命令就可以建立一套服务器环境,
本文是使用Subversion最快速的教程,在最短的时间里帮助您建立起一套可用的服务器环境,只需略加调整就可以应用到实际项目当中。
本教程分为以下几个部分,为了说明简单,教程是在windows下使用的方式,以方便资源有限的项目使用。在UNIX环境下,只是安装方式不同,命令执行并无太大区别。
工具/原料
Subversion服务器程序安装包
Subversion的Windows客户端TortoiseSVN安装包
方法/步骤
1软件下载
<1>、下载Subversion服务器程序
到官方网站的下载二进制安装文件,来到二进制包下载部分,找到 Windows NT, 2000, XP and 2003部分,然后选择Apache 2.0 或者 Apache 2.2,这样我们可以看到许多下载的内容,目前可以下载Setup-Subversion-1.7.12.msi 。
<2>、下载Subversion的Windows客户端TortoiseSVN。
TortoiseSVN是扩展Windows Shell的一套工具,可以看作Windows资源管理器的插件,安装之后Windows就可以识别Subversion的工作目录。
官方网站是TortoiseSVN ,下载方式和前面的svn服务器类似,在Download页面的我们可以选择下载的版本,目前的最高稳定版本的安装文件为TortoiseSVN-1.5.5.14361-win32-svn-1.5.4.msi。
2svn服务器和客户端安装
<1>、安装Subversion,直接运行Setup-Subversion-1.5.3.msi ,根据提示安装即可,这样我们就有了一套服务器可以运行的环境。
<2>、安装TortoiseSVN,同样直接运行TortoiseSVN-1.5.5.14361-win32-svn-1.5.4.msi按照提示安装即可,不过最后完成后会提示是否重启,其实重启只是使svn工作拷贝在windows中的特殊样式生效,与所有的实际功能无关,这里为了立刻看到好的效果,还是重新启动机器。
<3>、安装svn的客户端程序,需要的话还可以安装svn的语言包,注意语言包的版本也必须与客户端程序的版本一致
3建立版本库(Repository)
运行Subversion服务器需要首先要建立一个版本库(Repository),可以看作服务器上存放数据的数据库,在安装了Subversion服务器之后,可以直接运行,如:
svnadmin create E:\svndemo\repository
就会在目录E:\svndemo\repository下创建一个版本库。
我们也可以使用TortoiseSVN图形化的完成这一步:
在目录E:\svndemo\repository下"右键->TortoiseSVN->Create Repository here...“, 然后可以选择版本库模式, 这里使用默认即可, 然后就创建了一系列目录和文件。
步骤阅读 .4SVN配置用户和权限
来到E:\svndemo\repository\conf目录,修改svnserve.conf:
# [general]
# password-db = passwd
改为:
[general]
password-db = passwd
然后修改同目录的passwd文件,去掉下面三行的注释:
# [users]
# harry = harryssecret
# sally = sallyssecret
最后变成:
[users]
harry = harryssecret
sally = sallyssecret
在passwd文件中,“=”前的字符就是用户名,后面的就是密码。还要注意“[users]”前面的注释“#”一定要删除掉。
步骤阅读 .5运行独立服务器
在任意目录下运行:
svnserve -d -r E:\svndemo\repository 我们的服务器程序就已经启动了。注意不要关闭命令行窗口,关闭窗口也会把svnserve停止。
6初始化导入
来到我们想要导入的项目根目录,在这个例子里是E:\svndemo\initproject,目录下有一个readme.txt文件:
右键->TortoiseSVN->Import...
在URL of repository输入“svn://localhost/trunk”
在Import Message中输入你的日志信息
完成之后目录没有任何变化,如果没有报错,数据就已经全部导入到了我们刚才定义的版本库中。
需要注意的是,这一步操作可以完全在另一台安装了TortoiseSVN的主机上进行。例如运行svnserve的主机的IP是133.96.121.22,则URL部分输入的内容就是“svn://133.96.121.22/trunk”。
步骤阅读 .7基本客户端操作
取出版本库到一个工作拷贝:
来到任意空目录下,在本例中是E:\svndemo\wc1,运行右键->Checkout,在URL of repository中输入svn://localhost/trunk,这样我们就得到了一份工作拷贝。
在工作拷贝中作出修改并提交:
打开readme.txt,作出修改,然后右键->Commit...,这样我们就把修改提交到了版本库,我们可以运行。
察看所作的修改:
readme.txt上右键->TortoiseSVN->Show Log,这样我们就可以看到我们对这个文件所有的提交。在版本1上右键->Compare with working ,我们可以比较工作拷贝的文件和版本1的区别。
最后,所有的内容都已经录制为动画文件,大家可以参考。
关于本教程大家有什么意见,可以这里讨论 。
如果更新文件以后,有两个人或者多个人同时修改了某个文件的某个位置,是否冲突,(一般不会这样子,因为上传的版本是可以编译通过的,而且每个人负责自己的模块,不会多人独立修改同一个文件,别人也是先更新,后上传修改,,,,)
开发者习惯性动作。早上上班第一件事就是更新svn版本库,再开始一天的工作。
晚上下班,或者其他时候要上传东西可以直接上传因为你负责的东西没人去修改。
冲突是怎么产生的呢:因为不同的人,同时修改了同一个文件的同一个地方,这个时候,他提交了,你没有提交,你就提交不了,这个时候,你要先更新,更新就会出现代码冲突问题。最好不要多人同时修改一个文件,公用的文件,更改之前要和大家沟通一下,或者解决冲突 呵呵
先更新,没有冲突,再提交。有冲突,解决冲突再提交。否则也提交不了。
对于一些处于冲突状态下的文件 ,右键TortoiseSVN ->Resolved,解决冲突。解决冲突: http://www.blogjava.net/jasmine214--love/archive/2011/04/07/347769.html
更新-解决冲突-删掉以下三个文件-提交(如果自己没有修改的文件有冲突,删除再更新即可,自己修改的文件解决冲突)
test.php.mine 是冲突前自己的文件
test.php.版本号 是冲突前本地的版本文件
test.php.服务器的版本号 是冲突后服务器版本文件
END注意事项
如果修改文件后提交不了,大多是因为版本不一致造成的。更新一下,不产生冲突的情况,就可以提交了。
更新文件,如果出现冲突的情况,打开冲突文件test.php会看到类似以下的内容
<<<<<<<<<<<<<<<
asdfadfadfadf
11111111111111
=======
asdfadfadfadf
111111111111111
222222222222
>>>>>>>>>>>>>>>>
结合别人修改的内容和自己修改的内容,然后把文件中的<<<<<,=====,>>>>>>>这类冲突符号去掉。去掉后,还是不能提交的,为什么?因为冲突时会产生三个文件,有这三个文件存在肯定提交不了。
客户端用的tortoisesvn(这个估计程序员用的最多),冲突时会多产生,三个文件
test.php.mine 是冲突前自己的文件
test.php.版本号 是冲突前本地的版本文件
test.php.服务器的版本号 是冲突后服务器版本文件
提交的时候,把这三个文件删除掉就可以提交了。
产生覆盖的原因。
a),在修改冲突文件test.php时,把别人代码都删除掉了,只留下了自己的代码。这样就会产生覆盖了。
b),把test.php.mine中的内容直接到test.php文件,这样也会产生代码覆盖。
上面二种情况都是我亲眼看到新手这样操作的,要避免这二种操作方法。
C. windowns怎么命令行安装svn
1.windows下的命令行svn客户端
http://somebody-hjh.iteye.com/blog/1415992
我们知道,在linux下面的svn客户端采用命令的方式管理与服务器端svn交互。有些朋友想在windows下也具有相同的功能,而不是TortoiseSVN的GUI管理方式。这样可以使用我们熟悉的svn命令。
在不用安装TortoiseSVN客户端的情况,大家可以再http://subversion.apache.org/packages.html#windows 找到windows下的svn客户端工具。选择Win32Svn 进行安装。
安装好后,bin目录下就是相应程序了。通过添加环境变量的方式,把bin目录添加到path。启动cmd,敲入 svn help 以确认是否安装成功。
好了,可以找到你的代码,做checkout了。在commit代码的过程中,经常会出现的一个问题是:svn: None of the environment variables SVN_EDITOR, VISUAL or EDITOR is set, and no 'editor-cmd' run-time configuration option was found
这表示你的系统,没有指定svn客户端通过什么样的文本编辑器来写提交的注释。我们添加环境变量,SVN_EDITOR的值为notepad。再次svn ci 代码。notepad弹出了,写完注释保存。代码提交!
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2.使用SVN命令行工具,svn下载,windows命令行下svn
http://hi..com/cpuramdisk/item/6e8e0fc29f7dbe2f46d5c038
从http://subversion.tigris.org获取subversion for windows的版本,安装之后就有了svn.exe这个基于命令行的客户端工具。当然服务器端的程序也有了,这里就不关心如何配置SVN服务了。安装程序把svn.exe的路径加入了path环境变量,我们已经可以在命令行中直接输入svn就可以使用了。
如果你不知道命令怎么用svn命令,可通过如下方式查询:
svn help
知道了子命令,但是不知道子命令的用法,还可以查询:
svn help ci
开发人员常用命令
导入项目
svn import http://svn.chinasvn.com:82/pthread --message "Start project"
导出项目
svn checkout http://svn.chinasvn.com:82/pthread
采用 export 的方式来导出一份“干净”的项目
svn export http://svn.chinasvn.com:82/pthread pthread
为失败的事务清场
svn cleanup
在本地进行代码修改,检查修改状态
svn status -v
svn diff
更新(update)服务器数据到本地
svn update directory
svn update file
增加(add)本地数据到服务器
svn add file.c
svn add dir
对文件进行改名和删除
svn mv b.c bb.c
svn rm d.c
提交(commit)本地文档到服务器
svn commit
svn ci
svn ci -m "commit"
查看日志
svn log directory
svn log file
相关的一些东西:
1、在本地文件中,每个目录下都有一个.svn文件夹(属性为隐藏),保存了相关的信息。
2、注册环境变量SVN_EDITOR为"E:\Program Files\Vim\vim71\gvim.exe",结果在svn ci的时候,出现错误:
'E:\Program' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
svn: 提交失败(细节如下):
svn: system('E:\Program Files\Vim\vim71\gvim.exe svn-commit.tmp') 返回 1
把SVN_EDITOR改为"gvim.exe",并且在path中添加路径"E:\Program Files\Vim\vim71",这样就可以在提交的时候用vim编写注释了。
附:
提供免费SVN服务的网站:
http://www.svnhost.cn/(推荐)
http://www.chinasvn.com
http://www.javaforge.com
http://unfuddle.com
http://svn.coollittlethings.com/index.php(针对开源免费,针对私人项目收费)
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
3.http://space.itpub.net/14466241/viewspace-713138
Windows下SVN命令行工具使用详解(附加TortoiseSVN)
上一篇 / 下一篇 2011-12-12 09:32:22 / 置顶(3) / 个人分类:网络文摘
查看( 4610 ) / 评论( 1 ) / 评分( 5 / 0 )
根据我的记忆,似乎Windows 7下自自带一个svn命令行工具。如果你的机器没有,不必担心。你可以从http://subversion.tigris.org获 取subversion for windows的版本,安装之后就有了svn.exe这个基于命令行的客户端工具。安装程序把svn.exe的路径加入了path环境变量,我们已经可以在命令行中直接输入svn就可以使用了。
如今,好用的开源工程遍布世界各地。许多这样的工具都提供了相应的工程源码的SNV下载地址,所以,这个工具你几乎是非了解不可的。以下列出svn使用使用的典型举例。
一、关于命令行工具SVN
如果你不知道命令怎么用svn命令,可通过如下方式查询:
svn help
知道了子命令,但是不知道子命令的用法,还可以查询:
svn help ci
常用命令格式与举例
导入项目
svn import http://svn.chinasvn.com:82/pthread --message "Start project"
导出项目
svn checkout http://svn.chinasvn.com:82/pthread
采用 export 的方式来导出一份“干净”的项目
svn export http://svn.chinasvn.com:82/pthread pthread
为失败的事务清场
svn cleanup
在本地进行代码修改,检查修改状态
svn status -v
svn diff
更新(update)服务器数据到本地
svn update directory
svn update file
增加(add)本地数据到服务器
svn add file.c
svn add dir
对文件进行改名和删除
svn mv b.c bb.c
svn rm d.c
提交(commit)本地文档到服务器
svn commit
svn ci
svn ci -m "commit"
查看日志
svn log directory
svn log file
二、关于可视化SVN工具TortoiseSVN
到http://tortoisesvn.net/downloads.html处下载可视化SVN工具TortoiseSVN。这个工具非常好用,是一个WINDOWS下可视化工具,特别是支持断点续传。
因此,如果下载小型的SVN内容,使用上面的WINDOWS自带的命令行工具SVN.EXE足够了。但是,当下载大家伙时,常常下载到中间便失去与服务器的联系。如果再重新下载,非常可怜,而且往往还是不行。我在下载LIBGDX这个游戏引擎的源码工具时便是遇到这样的情况。因此才搜索到这个工具。
下载安装后,这个工具是以WINDOWS资源管理器插件的形式存在的,非常人性化。你只要右键点击一个你想存储下载内容的文件夹,选择“SVN Checkout...”选择,然后弹出一个对话框。此后,你输入你的SVN资源地址,便OK了。而且,这个工具下载速度非常快......
备注:在这个页面http://bbs.mountblade.com.cn/viewthread.php?tid=168300
有几个截图,参考一下吧。
D. svn 中的add 和commit命令有何区别啊,谢谢
svn 中的add 和commit的区别在于:
add会将新增的文件加入到编译器中,而不会将修改的文件添加进去。
commit则会将修改的文件添加到编译器中,同时也会将新增的文件添加进去。
如果是只有新增文件使用add,有新增文件又有修改文件或只有修改文件请使用commit。
(4)windowssvn命令扩展阅读:
SVN安装
(1)首先,到SVN的官方网站htp:/subversion.tigris.org下载最新版本的SVN服务器安装程序。
(2)运行安装程序,安装过程与普通软件的安装过程基本相同,例如F:ASubversion。其余步骤都采用默认设置,依次单击Next按钮,直至安装结束。
E. 如何在win上搭建SVN服务器
方法/步骤
一、准备工作
1、SVN服务器:解压缩包,可以从官方网站下载最新版本。
2、SVN客户端:TortoiseSVN,即常说的小乌龟,是一个客户端程序,用来与服务器端通讯。
二、安装服务器和客户端程序
1、SVN服务器:直接解压缩到某个文件夹下即可。示例路径:c:\svn\
备注:如果下载的是msi程序,直接运行按提示安装即可。
2、SVN客户端:直接运行按提示安装即可。示例路径:C:\Program Files\Subversion
三、建立版本库(Repository):示例路径:e:\svnroot。建立版本库有两种方法:
方法一,建立空目录e:\svnroot\repos1,进入repos1文件夹,在空白处点击右键,选择“TortoiseSVN->Create Repositoryhere...”,
方法二,建立空目录e:\svnroot\repos2,进入DOS命令行,输入如下命令:
svnadmincreate e:\svnroot\repos2
四、运行SVN服务器,启动服务。启动服务有两种方法:
方法一,临时启动服务,在DOS下输入如下命令:
svnserve -d -r e:\svnroot\repos1 --listen-host ip地址 --listen-port=端口号
说明:“listen-host”和“listen-port”可选。默认端口是3690,如果端口已经被占用,可以通过选项listen-port指定端口号。
注意:请不要关闭命令行窗口,关闭窗口会把 svn服务就停止了。
方法二,启动SVN服务为后台运行程序:
sc create svnserve binPath= "c:\svn\bin\svnserve.exe --service -r e:\svnroot\repos1" displayname= "Subversion" depend=Tcpip start= auto
说明一:
(1)sc是windows自带的服务配置程序。svnserve是服务的名称,可根据需求取名。
(2)参数binPath表示svnserve可执行文件的安装路径。
(3)--service表示以windows服务的形式运行,--r指明svnrepository的位置,service参数与r参数都作为binPath的一部分,因此与svnserve.exe的路径一起被包含在一对双引号当中。
(4)displayname表示在windows服务列表中显示的名字,depend=Tcpip表示svnserve服务的运行需要tcpip服务,start=auto表示开机后自动运行。安装服务后,svnserve要等下次开机时才会自动运行。
说明二:
(1)binPath的等号前面无空格,等号后面有空格。displayname、depend、start也一样,service前面是--,不是- ,而r前面是-。
(2)若要卸载svn服务,则执行 sc delete svnserve 即可。
(3)从“sc”到“auto”是在同一个命令sc,必须写在同一行。
(4)启动服务命令:netstart svnserve,停止服务命令:net start svnserve,也可以进入Windows提供的界面操作SVNService服务了,即控制面板—>服务。
(5)如果路径中包括空格,一定要用“\”处理“"”号,例如上面的例子中如果svnserve.exe在“c:\programfiles\svn\”中,则命令应该写为“binpath="\"c:\programfiles\svn\bin\svnserve.exe\"
五、配置用户和权限
(1)修改svnserve.conf,在e:\svn\repos1\conf目录下,用文本编辑器打开svnserve.conf:
将:
# anon-access = read
# auth-access = write
# password-db = passwd
改为
anon-access = read
auth-access = write
password-db = passwd
注意说明:
anon-access等列前面是没有空格的。
anon-access = read表示没通过用户名密码登录的访问只有读的权限,如果改为none则没有用户名密码不能访问
auth-access = write表示通过用户名密码登录的有写的权限(当然读的权限也就有了)
password-db = passwd表示可以通过 用户名 = 密码 的方式在passwd文件中添加用户
(2)修改同目录的passwd文件,增加用户帐号:
将:
[users]
# harry = harryssecret
# sally = sallyssecret
添加帐号:
[users]
# harry = harryssecret
# sally = sallyssecret
admin = admin
添加一个admin账户,密码是admin。
六、初始化SVN,导入数据
选中要上传SVN的文件夹,“右键 ->TortoiseSVN -> Import...” ,在弹出对话框的“URL of repository”输入“svn://localhost/project1/”。在“Importmessage”输入注释,点击OK,要求输入帐号,输入账户admin和密码admin。
七,测试SVN
本地测试:新建一空文件夹test1,单击右键,选择“SVN Checkout”,在“URL of repository”中输入“svn://localhost/project1”。
其他机器测试:如果运行svnserve的主机IP地址是1.2.3.4,则URL输入的内容就是“svn://1.2.3.4/project1”。
F. windows 怎么检测 svn 服务器启动
启动subversion的服务可以通过两种方式来完成
1、第一种手动输入cmd命令,svn服务端软件服务的启动可以通过cmd命令来启动,定位到subversion的安装目录,我的机器是C:\Program Files\Subversion\bin, 输入命令 svnserve –d –r D:\svndemo,其中D:\svndemo是svn数据仓库的目录。
2、第二种把subversion的服务添加到windows服务,作为开机自动启动的服务,同样可以通过cmd命令来完成,命令如下:sc create svn binpath= "\"D:\Program Files\Subversion\bin\svnserve.exe\" --service -r D:\svndemo" displayname= "Subversion Server" depend= Tcpip start= auto,其中"binpath="后面跟的是subversion的安装目录,--service -r后面的参数是数据仓库的路径。通过这种方式就把subversion的服务作为windows自启动的服务了。
接下只要重启服务器就可以了,服务器端的subversion的服务就可以开始运行了.
注:在WindowsServer中,要在cmd中创建服务,不要在PowerShell中,否则提示参数错误。
G. windows 怎么用svn命令
1、Windows下命令行工具:
发现原来安装的tortoisesvn已经集成到shell中,不能在命令行下使用。
下载Apache Subversion command line tools,这是一个可以在cmd下使用的命令行工具,解压后把里面bin目录这个路径添加到环境变量的path,这样在cmd下就可以使用了,和linux下使用svn的习惯一样了。
目录约定:
/trunck:开发主线
/branches:支线副本
/tags:标签副本(一旦创建,不允许修改)
1)使用trunk作为主要的开发目录
一般的,我们的所有的开发都是基于trunk进行开发,当一个版本(release)开发告一段落(开发、测试、文档、制作安装程序、打包等结束后),代码处于冻结状态(人为规定,可以通过hook来进行管理)。此时应该基于当前冻结的代码库,打tag。
当下一个版本/阶段的开发任务开始时,继续在trunk进行开发。此时,如果发现了上一个已发行版本(Released Version)有一些bug,或者一些很急迫的功能要求,而正在开发的版本(Developing Version)无法满足时间要求,这时候就需要在上一个版本上进行修改了。解决方法是基于发行版对应的tag,做相应的分支(branch)进行开发。
2)下图为struts2的SVN仓库目录:
3、常用命令
svn help
svn --version
svn --version --quiet 只显示版本号
svn checkout 地址
svn add 文件或者文件夹 增加本地数据到服务器
svn commit / svn ci -m “注释” 文件名 提交代码,要先add才commit
svn update / svn up不必跟特定的文件或目录,也可以自己指定需要更新的文件或目录。每次commit或者改动之前最好更新一下。
svn log
svn delete 文件名
svn resolve 路径 --accept working 解决冲突
http://zccst.iteye.com/blog/1765519
svn switch 远程路径 版本切换
svn list路径/svn ls 列出版本库下的文件和目录
svn merge -r m:n 路径 合并文件,从版本号m到版本号n的远程分支都合并到当前分支中
svn info 确认工作目录的svn信息
svn diff -r m:n 路径 对版本m和版本n比较差异
svn cleanup 为失败的失误清场
svn status -v 在本地进行代码修改,检查修改状态
svn import 远程路径 --message “message” 将当前路径下文件导入到版本库中
svn export 远程路径 导出一份干净的项目
svn move/ svn mv 原文件名 新文件名 重命名
svn mkdir 文件名
svn / svn cp 源文件路径 新文件路径
svn revert 文件名 只能恢复未提交之前的操作
若要还原已提交的改动:只能用旧文件覆盖新文件。操作如下:
1)sun up 让本地工作拷贝更新到最新状态
2)svn log your_file_path 查看文件日志,这时候提交时填写的说明信息就派上用场了
3)svn diff -r 旧修订版序号:新修订版序号 your_file_path 查看两个修订版之间的不同。
4)决定用哪个旧的修订版号后,用旧的修订版号文件覆盖新的修订版号文件。svn merge -r 新修订版序号:旧修订版序号 your_file_path
5)svn commit -m "恢复到某修订版(某修订版作废)"
本地的版本叫做working
4、关于merge
branch主要用于新功能的开发
合并发生在本地working ,只要你不提交就不会影响到repository
合并前一定要先update、commit,保证不会out of day,并将本地的修改保存到repository
branch和trunk并行开发的过程中,要经常同步,将trunk的修改合并到branch,合并时选择"Merge a range of revision"
branch最后合并回trunk时,merge type选择"Reintegrate a branch"
不管是从trunk合并到branch还是最终从branch合并回trunk,在每次合并前最好先update,然后将本地的修改先全部commit,保护好现场,万一合并不理想随时都可以reverthttp://blog.csdn.net/eggcalm/article/details/6606520
http://zhengkun.readthedocs.org/zh_CN/latest/2014/02/07/svn-usage/
5、关于解决冲突
发生冲突之后会出现三个临时文件:
XXX.mine XXX.r1 XXX.r2
一旦解决了冲突,需用svn resolved让subversion知道,这样就会删除这三个临时文件,冲突状态解决。
三种解决方式:
手工合并冲突:需要将冲突标志删除
用某一个临时文件覆盖自己的工作文件
用svn revert 放弃本地修改,不需要执行resolved
H. Windows与Linux下SVN怎样使用
Windows与Linux下SVN怎样使用?
本文分2个部分(包括Windows与Linux操作系统平台),第1部分:怎样安装 第2部分:怎样使用
-----------------------------------------第1部分:怎样安装-----------------------------------------
怎样安装分2种情况,第1种:在公司上班 第2种:在宿舍电脑
--------------------第1种:在公司上班--------------------
说明:通常SVN服务器是安装在windows上的,安装好后,客户端2种平台都能使用
Windows平台下
服务端与客户端:
通常这种情况,你想安装,公司都不会让你安装,一般是由公司内网管专业人士统一安装好,并给你分配好账户与密码,以及每个SVN下使用权限,所以这种情况你可以不用去管怎样安装了,只管怎样使用即可
linux平台下
服务端:即windows上的服务端
客户端:如果你在本机安装的Linux虚拟机,通常是自己安装的,不是公司网管安装的,安装办法如下:
1步即能安装:在linux下输入命令 sudo apt-get install subversion
即SVN,安装后同windows上SVN一样,只不过这里是输入命令而已
--------------------第2种:在宿舍电脑--------------------
Windows与Linux平台下
说实在的,宿舍就1台电脑.本来电脑就垃圾.而且还开着虚拟机,在开2个VS2010,就已经卡的要死.在来个SVN,估计会慢如蜗牛,其实大部分程序员也是只有一台电脑,安装SVN真的没必要.除非有多台电脑.SVN本质是为方便团队开发
-----------------------------------------第2部分:怎样使用-----------------------------------------
怎样使用要分2种情况,第1种:是Windows平台 第2种:是Linux平台
--------------------第1种:是Windows平台--------------------
1.更新
右键->SVN更新
2.提交(也可说成是上传)
第1步:进入要提交的SVN文件目录里面,导入文件
第2步:导入后,返回上一层目录,即返回到要提交的SVN文件目录,右键点击此SVN目录,弹出,提交,进入
第3步:进入提交对话框后,会显示2个编辑框,上面的编辑框是确认要提交的内容,下面的编辑框是你刚导入的文件内容,
你现在若是想提交刚才导入的内容,就把下面编辑框的内容用鼠标拖动到上面的编辑框,并按确定
若不想提交刚才导入的内容,直接按取消退出即可
3.导出
即怎样去掉SVN的专用标志,有的是对勾,有的是?号等等?
方法 1:在文件属性--->选择显示所有文件,这时文件里会出现1个.svn的文件目录,把它删掉即可.(文件目录多时,不推荐)
方法 2:在SVN右键--->导出,这时导出的文件不会带SVN标志了
4.删除
在SVN右键中,删除之后.要返回上一层目录,点提交.
删除信息在变更列表,要拖动到信息栏下,然后点确定
5.保存认证
每当电脑密码更改时,SVN以前保存的密码也会要更新,此时会弹出一个认证框,重新输入账号与新密码,在保存认证处打勾即可
--------------------第2种:是Linux平台--------------------
1.更新
命令:svn update
2.提交(也可说成是上传)
第1步:进入要提交的SVN文件目录里面,
第2步:添加要提交的目录用svn add *----------->注:(*代表添加文件、目录或符号链)
第3步:提交
(1)提交全部
svn ci -m"*"----------->m表示写注释,*代表注释内容
注:在LINUX上同一目录存在其它文件,svn ci提交时,只会提交SVN服务器已有的文件.如果想让同一目录下的其它文件也提交到SVN服务器,可以先通过svn add先添加此文件或文件夹等
(2)提交单个
svn ci -m"add select_area packet" Gateway_Handler.cpp
后面一个加上要提交的文件(记的把后缀名写上去).
提交成功后会提示
Sending Gateway_Handler.cpp
Transmitting file data .
Committed revision 242.
3.保存认证
每当电脑密码更改时,SVN以前保存的密码也会要更新,此时会显示要输入密码,重新输入账号与新密码,最后会提示是否要保存密码(yes/no),选yes即可
4.下载
命令 svn co * (*代表下载地址,例如http://192.168.1.101/project/servers/command)
之后会在当前目录下,导出一个command文件夹,里面是SVN服务器上的文件
5.删除
svn del *(*为文件名,或文件)
6.查看修改后的操作是哪些
svn diff
---------------------------------------------------以下是摘抄的---------------------------------------------------
1、将文件checkout到本地目录
svn checkout path(path是服务器上的目录)
例如:svn checkout svn://192.168.1.1/pro/domain
简写:svn co
1、将文件checkout到本地目录
svn checkout path(path是服务器上的目录)
例如:svn checkout svn://192.168.1.1/pro/domain
简写:svn co
2、往版本库中添加新的文件
svn add file
例如:svn add test.PHP(添加test.php)
svn add *.php(添加当前目录下所有的php文件)
3、将改动的文件提交到版本库
svn commit -m “LogMessage“ [-N] [--no-unlock] PATH(如果选择了保持锁,就使用–no-unlock开关)
例如:svn commit -m “add test file for my test“ test.php
简写:svn ci
4、加锁/解锁
svn lock -m “LockMessage“ [--force] PATH
例如:svn lock -m “lock test file“ test.php
svn unlock PATH
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
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
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)
8、查看日志
svn log path
例如:svn log test.php 显示这个文件的所有修改记录,及其版本号的变化
9、查看文件详细信息
svn info path
例如:svn info test.php
10、比较差异
svn diff path(将修改的文件与基础版本比较)
例如:svn diff test.php
svn diff -r m:n path(对版本m和版本n比较差异)
例如:svn diff -r 200:201 test.php
简写:svn di
11、将两个版本之间的差异合并到当前文件
svn merge -r m:n path
例如:svn merge -r 200:205 test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下)
12、SVN 帮助
svn help
svn help ci
——————————————————————————
以上是常用命令,下面写几个不经常用的
——————————————————————————
13、版本库下的文件和目录列表
svn list path
显示path目录下的所有属于版本库的文件和目录
简写:svn ls
14、创建纳入版本控制下的新目录
svn mkdir: 创建纳入版本控制下的新目录。
用法: 1、mkdir PATH…
2、mkdir URL…
创建版本控制的目录。
1、每一个以工作副本 PATH 指定的目录,都会创建在本地端,并且加入新增
调度,以待下一次的提交。
2、每个以URL指定的目录,都会透过立即提交于仓库中创建。
在这两个情况下,所有的中间目录都必须事先存在。
15、恢复本地修改
svn revert: 恢复原始未改变的工作副本文件 (恢复大部份的本地修改)。revert:
用法: revert PATH…
注意: 本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复
被删除的目录
16、代码库URL变更
svn switch (sw): 更新工作副本至不同的URL。
用法: 1、switch URL [PATH]
2、switch –relocate FROM TO [PATH...]
1、更新你的工作副本,映射到一个新的URL,其行为跟“svn update”很像,也会将
服务器上文件与本地文件合并。这是将工作副本对应到同一仓库中某个分支或者标记的
方法。
2、改写工作副本的URL元数据,以反映单纯的URL上的改变。当仓库的根URL变动
(比如方案名或是主机名称变动),但是工作副本仍旧对映到同一仓库的同一目录时使用
这个命令更新工作副本与仓库的对应关系。
17、解决冲突
svn resolved: 移除工作副本的目录或文件的“冲突”状态。
用法: resolved PATH…
注意: 本子命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的
相关文件,然后让 PATH 可以再次提交。
18、输出指定文件或URL的内容。
svn cat 目标[@版本]…如果指定了版本,将从指定的版本开始查找。
svn cat -r PREV filename > filename (PREV 是上一版本,也可以写具体版本号,这样输出结果是可以提交的)
19、查找工作拷贝中的所有遗留的日志文件,删除进程中的锁。
当Subversion改变你的工作拷贝(或是.svn中的任何信息),它会尽可能的小心,在修改任何事情之前,它把意图写到日志文件中去,然后执行log文件中的命令,然后删掉日志文件,这与分类帐的文件系统架构类似。如果Subversion的操作中断了(举个例子:进程被杀死了,机器死掉了),日志文件会保存在硬盘上,通过重新执行日志文件,Subversion可以完成上一次开始的操作,你的工作拷贝可以回到一致的状态。
这就是svn cleanup所作的:它查找工作拷贝中的所有遗留的日志文件,删除进程中的锁。如果Subversion告诉你工作拷贝中的一部分已经“锁定”了,你就需要运行这个命令了。同样,svn status将会使用L 显示锁定的项目:
$ svn status L somedirM somedir/foo.c $ svn cleanup$ svn statusM somedir/foo.c20、拷贝用户的一个未被版本化的目录树到版本库。svn import命令是拷贝用户的一个未被版本化的目录树到版本库最快的方法,如果需要,它也要建立一些中介文件。
$ svnadmin create /usr/local/svn/newrepos $ svn import mytree file:///usr/local/svn/newrepos/some/project Adding mytree/foo.c Adding mytree/bar.c Adding mytree/subdir Adding mytree/subdir/quux.h Committed revision 1.
在上一个例子里,将会拷贝目录mytree到版本库的some/project下:
$ svn list file:///usr/local/svn/newrepos/some/project bar.c foo.c subdir/
注意,在导入之后,原来的目录树并没有转化成工作拷贝,为了开始工作,你还是需要运行svn checkout导出一个工作拷贝。
另附:为SVN加入Email通知
可以通过Subversion的Hook脚本的方式为SVN加入邮件列表功能
编译安装了Subversion后 在源码的tools 下有一个comm-email.pl的Perl脚本,在你的档案目录下有一个hooks目录,进入到hooks目录把post-commit.tmpl 改名为post-commit并给它可执行的权限。
更改post-commit脚本 把comm-email.pl脚本的决对路径加上,否则 SVN找不到comm-email.pl
REPOS="$1"
REV="$2"
/usr/local/svn/resp/commit-email.pl "$REPOS" "$REV" [email protected] [email protected]
#log-commit.py --repository "$REPOS" --revision "$REV"
最后一行是用来记日志的 我不用这个功能 所以注释掉了.
-------------------------------------------------------------------------------------------------------
注意:为保证代码安全.最好要备份.每个操作都要谨慎
I. 如何在windows上安装部署设置SVN服务器
一、准备工作
1、SVN服务器:解压缩包,可以从官方网站下载最新版本。
2、SVN客户端:TortoiseSVN,即常说的小乌龟,是一个客户端程序,用来与服务器端通讯。
二、安装服务器和客户端程序
1、SVN服务器:直接解压缩到某个文件夹下即可。示例路径:c:\svn\
备注:如果下载的是msi程序,直接运行按提示安装即可。
2、SVN客户端:直接运行按提示安装即可。示例路径:C:\Program
Files\Subversion
三、建立版本库(Repository):示例路径:e:\svnroot。建立版本库有两种方法:
方法一,建立空目录e:\svnroot\repos1,进入repos1文件夹,在空白处点击右键,选择“TortoiseSVN->Create
Repositoryhere...”,
方法二,建立空目录e:\svnroot\repos2,进入DOS命令行,输入如下命令:
svnadmincreate
e:\svnroot\repos2
四、运行SVN服务器,启动服务。启动服务有两种方法:
方法一,临时启动服务,在DOS下输入如下命令:
svnserve
-d
-r
e:\svnroot\repos1
--listen-host
ip地址
--listen-port=端口号
说明:“listen-host”和“listen-port”可选。默认端口是3690,如果端口已经被占用,可以通过选项listen-port指定端口号。
注意:请不要关闭命令行窗口,关闭窗口会把
svn服务就停止了。
方法二,启动SVN服务为后台运行程序:
sc
create
svnserve
binPath=
"c:\svn\bin\svnserve.exe
--service
-r
e:\svnroot\repos1"
displayname=
"Subversion"
depend=Tcpip
start=
auto
说明一:
(1)sc是windows自带的服务配置程序。svnserve是服务的名称,可根据需求取名。
(2)参数binPath表示svnserve可执行文件的安装路径。
(3)--service表示以windows服务的形式运行,--r指明svnrepository的位置,service参数与r参数都作为binPath的一部分,因此与svnserve.exe的路径一起被包含在一对双引号当中。
(4)displayname表示在windows服务列表中显示的名字,depend=Tcpip表示svnserve服务的运行需要tcpip服务,start=auto表示开机后自动运行。安装服务后,svnserve要等下次开机时才会自动运行。
说明二:
(1)binPath的等号前面无空格,等号后面有空格。displayname、depend、start也一样,service前面是--,不是-
,而r前面是-。
(2)若要卸载svn服务,则执行
sc
delete
svnserve
即可。
(3)从“sc”到“auto”是在同一个命令sc,必须写在同一行。
(4)启动服务命令:netstart
svnserve,停止服务命令:net
start
svnserve,也可以进入Windows提供的界面操作SVNService服务了,即控制面板—>服务。
(5)如果路径中包括空格,一定要用“\”处理“"”号,例如上面的例子中如果svnserve.exe在“c:\programfiles\svn\”中,则命令应该写为“binpath="\"c:\programfiles\svn\bin\svnserve.exe\"
五、配置用户和权限
(1)修改svnserve.conf,在e:\svn\repos1\conf目录下,用文本编辑器打开svnserve.conf:
将:
#
anon-access
=
read
#
auth-access
=
write
#
password-db
=
passwd
改为
anon-access
=
read
auth-access
=
write
password-db
=
passwd
注意说明:
anon-access等列前面是没有空格的。
anon-access
=
read表示没通过用户名密码登录的访问只有读的权限,如果改为none则没有用户名密码不能访问
auth-access
=
write表示通过用户名密码登录的有写的权限(当然读的权限也就有了)
password-db
=
passwd表示可以通过
用户名
=
密码
的方式在passwd文件中添加用户
(2)修改同目录的passwd文件,增加用户帐号:
将:
[users]
#
harry
=
harryssecret
#
sally
=
sallyssecret
添加帐号:
[users]
#
harry
=
harryssecret
#
sally
=
sallyssecret
admin
=
admin
添加一个admin账户,密码是admin。
6
六、初始化SVN,导入数据
选中要上传SVN的文件夹,“右键
->TortoiseSVN
->
Import...”
,在弹出对话框的“URL
of
repository”输入“svn://localhost/project1/”。在“Importmessage”输入注释,点击OK,要求输入帐号,输入账户admin和密码admin。
7
七,测试SVN
本地测试:新建一空文件夹test1,单击右键,选择“SVN
Checkout”,在“URL
of
repository”中输入“svn://localhost/project1”。
其他机器测试:如果运行svnserve的主机IP地址是1.2.3.4,则URL输入的内容就是“svn://1.2.3.4/project1”。
J. 如何在windows下搭建svn服务器
方法/步骤
一、准备工作
1、SVN服务器:解压缩包,可以从官方网站下载最新版本。
2、SVN客户端:TortoiseSVN,即常说的小乌龟,是一个客户端程序,用来与服务器端通讯。
二、安装服务器和客户端程序
1、SVN服务器:直接解压缩到某个文件夹下即可。示例路径:c:\svn\
备注:如果下载的是msi程序,直接运行按提示安装即可。
2、SVN客户端:直接运行按提示安装即可。示例路径:C:\Program Files\Subversion
三、建立版本库(Repository):示例路径:e:\svnroot。建立版本库有两种方法:
方法一,建立空目录e:\svnroot\repos1,进入repos1文件夹,在空白处点击右键,选择“TortoiseSVN->Create Repositoryhere...”,
方法二,建立空目录e:\svnroot\repos2,进入DOS命令行,输入如下命令:
svnadmincreate e:\svnroot\repos2
四、运行SVN服务器,启动服务。启动服务有两种方法:
方法一,临时启动服务,在DOS下输入如下命令:
svnserve -d -r e:\svnroot\repos1 --listen-host ip地址 --listen-port=端口号
说明:“listen-host”和“listen-port”可选。默认端口是3690,如果端口已经被占用,可以通过选项listen-port指定端口号。
注意:请不要关闭命令行窗口,关闭窗口会把 svn服务就停止了。
方法二,启动SVN服务为后台运行程序:
sc create svnserve binPath= "c:\svn\bin\svnserve.exe --service -r e:\svnroot\repos1" displayname= "Subversion" depend=Tcpip start= auto
说明一:
(1)sc是windows自带的服务配置程序。svnserve是服务的名称,可根据需求取名。
(2)参数binPath表示svnserve可执行文件的安装路径。
(3)--service表示以windows服务的形式运行,--r指明svnrepository的位置,service参数与r参数都作为binPath的一部分,因此与svnserve.exe的路径一起被包含在一对双引号当中。
(4)displayname表示在windows服务列表中显示的名字,depend=Tcpip表示svnserve服务的运行需要tcpip服务,start=auto表示开机后自动运行。安装服务后,svnserve要等下次开机时才会自动运行。
说明二:
(1)binPath的等号前面无空格,等号后面有空格。displayname、depend、start也一样,service前面是--,不是- ,而r前面是-。
(2)若要卸载svn服务,则执行 sc delete svnserve 即可。
(3)从“sc”到“auto”是在同一个命令sc,必须写在同一行。
(4)启动服务命令:netstart svnserve,停止服务命令:net start svnserve,也可以进入Windows提供的界面操作SVNService服务了,即控制面板—>服务。
(5)如果路径中包括空格,一定要用“\”处理“"”号,例如上面的例子中如果svnserve.exe在“c:\programfiles\svn\”中,则命令应该写为“binpath="\"c:\programfiles\svn\bin\svnserve.exe\"
五、配置用户和权限
(1)修改svnserve.conf,在e:\svn\repos1\conf目录下,用文本编辑器打开svnserve.conf:
将:
# anon-access = read
# auth-access = write
# password-db = passwd
改为
anon-access = read
auth-access = write
password-db = passwd
注意说明:
anon-access等列前面是没有空格的。
anon-access = read表示没通过用户名密码登录的访问只有读的权限,如果改为none则没有用户名密码不能访问
auth-access = write表示通过用户名密码登录的有写的权限(当然读的权限也就有了)
password-db = passwd表示可以通过 用户名 = 密码 的方式在passwd文件中添加用户
(2)修改同目录的passwd文件,增加用户帐号:
将:
[users]
# harry = harryssecret
# sally = sallyssecret
添加帐号:
[users]
# harry = harryssecret
# sally = sallyssecret
admin = admin
添加一个admin账户,密码是admin。
六、初始化SVN,导入数据
选中要上传SVN的文件夹,“右键 ->TortoiseSVN -> Import...” ,在弹出对话框的“URL of repository”输入“svn://localhost/project1/”。在“Importmessage”输入注释,点击OK,要求输入帐号,输入账户admin和密码admin。
七,测试SVN
本地测试:新建一空文件夹test1,单击右键,选择“SVN Checkout”,在“URL of repository”中输入“svn://localhost/project1”。
其他机器测试:如果运行svnserve的主机IP地址是1.2.3.4,则URL输入的内容就是“svn://1.2.3.4/project1”。