UBUNTU下SVN的应用Word文档格式.docx
- 文档编号:19812624
- 上传时间:2023-01-10
- 格式:DOCX
- 页数:17
- 大小:399.18KB
UBUNTU下SVN的应用Word文档格式.docx
《UBUNTU下SVN的应用Word文档格式.docx》由会员分享,可在线阅读,更多相关《UBUNTU下SVN的应用Word文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
++—-main.cpp(2.x版本的最新文件)
++—-common.h
+–tags(此目录只读)
+–r1.0
++—-main.cpp(1.0版本的发布文件)
+–r1.1
++—-main.cpp(1.1版本的发布文件)
+–r1.2
++—-main.cpp(1.2版本的发布文件)
+–r1.3
++—-main.cpp(1.3版本的发布文件)
+–r2.0
++—-main.cpp(2.0版本的发布文件)
+–r2.1
+—-main.cpp(2.1版本的发布文件)
+—-common.h
要使用这样的文件夹结构,在建立项目版本库时,可首先建好项目文件夹,并在其中建立trunk,branches,tags三个空的子目录,再将项目文件夹连同这三个子目录一起导入版本库。
这样在trunk中开始进行开发,当需要建立branch或tag时,使用SVN的copy操作进行。
其中tags目录需要只读,可以使用SVN中的authz文件控制该目录的访问权限为只读。
PostedinSVN|NoComments»
SVNtrunk,branchesandtags
1.简单的对比
SVN的工作机制在某种程度上就像一颗正在生长的树——一颗有树干和许多分支的树。
分支从树干生长出来,并且细的分支从相对较粗的树干中长出。
一棵树可以只有树干没有分支(但是这种情况不会持续很久,随着树的成长,肯定会有分支啦^^)
如果树干患病了,最终分支也会受到影响,然后整棵树就会死亡。
如果分支患病了,你可以剪掉它,然后其他分支还会生长出来的哦!
如果分支生长太快了,对于树干它可能会非常沉重,最后整棵树会垮塌掉。
当你感觉你的树、树干或者是分支看起来很漂亮的时候,你可以给它照张相,这样就就可以记得它在那时是多么的赞。
2.Trunk
Trunk是放置稳定代码的主要环境,就好像一个汽车工厂,负责将成品的汽车零件组装在一起。
按照上面的比喻,它就是树干。
以下内容将告诉你如何使用SVNtrunk:
a.如果项目规模很大,不要在trunk直接做开发,除非你必须处理一些容易且能迅速解决的BUG,或者你必须添加一些无关逻辑的文件(比如媒体文件:
图像,视频,CSS等等)。
b.不要因为特殊的需求而去对先前的版本做太大的改变,任何特殊的需求都意味着需要建立一个branch。
(如下所述)
c.不要提交一些可能破坏trunk的内容,例如从branch合并。
3.Branches
一个branch就是从一个SVN仓库中的子树所作的一份普通拷贝。
通常情况它的工作类似与UNIX系统上的符号链接,但是你一旦在一个SVNbranch里修改了一些文件,并且这些被修改的文件从拷贝过来的源文件独立发展,就不能这么认为了。
当一个branch完成了,并且认为它足够稳定的时候,它必须合并回它原来的拷贝的地方,也就是说:
如果原来是从trunk中拷贝的,就应该回到trunk去,或者合并回它原来拷贝的父级branch。
以下内容将告诉你如何使用SVNbranches:
a.如果你需要修改你的应用程序,或者为它开发一个新的特性,请从trunk中创建一个新的branch,然后基于这个新的分支进行开发。
b.除非是因为必须从一个branch中创建一个新的子branch,否则新的branch必须从trunk创建。
c.当你创建了一个新branch,你应当立即切换过去。
如果你没有这么做,那你为什么要在最初的地方创建这个分支呢?
4.Tags
从表面上看,SVNbranches和SVNtags没有什么差别,但是从概念上来说,它们有许多差别。
其实一个SVNtags就是上文所述的“为这棵树照张相”:
一个trunk或者一个branch修订版的命名快照。
以下内容将告诉你如何使用SVNtags:
a.作为一个开发者,永远不要切换至、取出,或者向一个SVNtag提交任何内容:
一个tag好比某种“照片”,并不是实实在在的东西,tags只可读,不可写。
5.工作流样例
假设你必须添加了一个特性至一个项目,且这个项目是受版本控制的,你差不多需要完成如下几个步骤:
a.使用SVNcheckout或者SVNswitch从这个项目的trunk获得一个新的工作拷贝(branch)
b.使用SVN切换至新的branch
c.完成新特性的开发(当然,要做足够的测试,包括在开始编码前)
d.一旦这个特性完成并且稳定(已提交),并经过你的同事们确认,切换至trunk
e.合并你的分支至你的工作拷贝(trunk),并且解决一系列的冲突
f.重新检查合并后的代码
g.如果可能的话,麻烦你的同事对你所编写、更改的代码进行一次复查(review)
h.提交合并后的工作拷贝至trunk
i.如果某些部署需要特殊的环境(生成环境等等),请更新相关的tag至你刚刚提交到trunk的修订版本
j.使用SVNupdate部署至相关环境
SVN在visualstudio环境下的使用指南
星期一,六月28th,2010
1.工具安装
AnkhSVN是一款在VS中管理Subversion的插件,您可以在VS中轻松的提交、更新、添加文件,而不用在命令行或资源管理器中提交。
这里,我们以vs2003+AnkhSetup-1.0.6为例,vs2005、vs2008请安装AnkhSetup-2.1.8版本。
安装时注意首先关闭vs环境,然后一路点击next就行了。
装好后打开vs2003,可以看到工具下多了AnkhSVN目录。
安装成功
2.添加一个新项目到SVN版本库中
1.新建一个win32控制台项目
新建一个test项目
2.在解决方案上点击右键->
【Ankh】->
【AddSolutiontoSubversionrepository…】
AddSolutiontoSubversionrepository
3.在URL中填入SVN库的地址,勾选【Createsubdirectory】将整个工程放在URL路径的一个子目录下,不勾选就放在URL路径下。
输入SVN地址
输入SVN的用户名、密码,验证成功后弹出以下窗口:
左侧一栏为需要上传的所有文件,右侧一栏为本次提交动作的注释说明。
点击下面【commit】按钮。
确认窗口
commit成功,文件前面会有绿色的对号:
commit成功
3.在项目中添加新文件
1.在需要添加文件的目录上点击右键->
【添加】->
【添加新项】
(添加已经存在的文件则点击【添加现有项】),这里我们添加一个源码文件test2.cpp
添加文件
2.成功后解决方案中多了test2.cpp文件,前面黄色的“+”代表此文件是新增的。
新增文件
3.在解决方案上点击右键->
【commit】
(注意不要只在新添的文件上点击【commit】,那样记录工程目录结构的test.vcproj不会被提交)
提交新增文件
4.确认窗口,从左侧文件列表可以看到工程文件test.vcproj也一起被提交了,右侧输入本次提交的说明信息,点击【commit】。
确认提交
5.提交成功后可以看到解决方案里多了test2.cpp文件。
提交成功
4.在项目中删除文件
1.在test2.cpp上点右键->
【移除】
移除文件
2.弹出窗口询问是否要在svn上移除test2.cpp,点击【yes】。
5.从版本库中获取项目
获取项目有两种方式,见下图
获取项目的两种方式
1.ExportaRepositoryorLocalFolder…这种方式相当于简单的下载代码,用户通过只读权限即可获得。
2.CheckoutaRepository…这种方式相当于vss的签出代码到本地,代码里含有svn信息,需要用户对代码库有写权限。
以第二种方式为例,见下图。
Revision中选择要签出的版本号(Head表示最高版本),URL中填入SVN库地址,LocalDirectory中填入本地地址,点击【Checkout】签出代码。
6.常用操作
1.Update
更新操作,将本地的工作拷贝于版本库同步。
2.Commit
提交操作,将本地的修改更新到版本库上。
3.Diff
比较本地文件与版本库上文件的区别。
4.Cleanup
当你由于Subversion操作不完全或者提交不全而遭遇问题时,使用Cleanup选项清理你的工作拷贝使它可用。
5.Blame
如果你想要知道是什么人对文件中的某一行代码进行了修改以及谁创建的,使用Blame操作。
在Ankn2.0以后的版本中,该操作改称Annotate(注解)。
6.CreatePatch
为了控制大量开发者对于项目的贡献,代码通常是以补丁的形式提交审查,然后提交到版本库中的。
当你在本地已经开发并测试了你的代码,并且准备提交供审查时,用此操作创建一个补丁。
7.Lock
当你需要确保只有你自己能够修改和提交一个项时,你可以先锁定它。
对于这种情形的一个例子是比如你正在处理的文件不能够被合并,例如图片或二进制文件。
直到你释放锁,其他用户才能提交他们的修改。
在锁定后修改与vss的checkout没什么区别。
8.UnLock
有锁定当然就得有解锁。
如果需要允许其他用户修改和提交你锁定的项,那么首先通过Unlock来释放你的锁。
当你提交锁定项的时候,通常锁将自动释放。
但是如果你提交时选择了KeepLocks选项,那么锁将不会被释放。
这种情况下你需要手动释放锁。
9.Switch
如果需要从你当前的工作拷贝切换到分支或标记,使用该功能。
10.Resolveconflicts
使用该功能来处理你与其他提交者的冲突代码。
11.Log
显示该文件的日志信息。
12.Revert
如果你需要将你本地拷贝恢复到最后更新状态,选择Revert操作。
13.ReverttoRevision
如果需要回滚一个项到特定的版本,使用ReverttoRevision选项。
14.Refresh
刷新视图,显示当前刚刚发生的改变,相当于svnst–u操作。
15.Add
如果想增加一个新项到源码管理中,你需要首先Add然后Commit。
7.几句废话——为什么SVN
有些同事对使用svn表示困惑,毕竟大家对于vss是很熟悉了。
这里说说相对于vss,svn的几点优势。
∙多平台
我想这点是最重要的,svn正在支援整个开源世界,而vss只属于微软。
(不过其实微软自己也不用VSS,微软内部使用一个名为SLM的版本控制系统,直至1999年。
之后,微软内部改以使用修改自Perforce的SourceDepot。
)
∙开发的时候不一定要锁定
大家使用vss都遇到过这种情况吧:
别人签出了你的文件(锁定),而你现在正要对此文件做某些修改。
这时,只能让签出者签入此文件(解锁),你才能继续你的工作。
这就是vss的“锁定—编辑—解锁”模式。
而svn的情况则不同:
它允许多个人可以同时签出一个文件,编辑然后提交,如果多个人都修改了同一文件的某一行的话,就会发生冲突,冲突将由最后的提交者手工解决。
这就是svn的“修改—冲突—合并”模式。
当然,最后那个提交者在合并冲突时如果不细心的话,也许会产生问题(比如说覆盖了别人的代码)。
不过在实际开发中这种情况其实很少——只要功能拆解得当,就不会出现两个人同时修改同一个文件同一行的情况。
最常见的情况是你在200行后加了个function,我在300行后编辑了一些条件判断。
∙异地开发较方便
vss也支持异地开发,不过好像vss的服务器一般都是建设在局域网内的(封闭式开发)。
以前听一个朋友说他出差的时候就是用VPN连到公司的局域网里然后提交代码。
这种方式当然可以,但成本较高。
svn则不同,通过与apache的集成,直接用http浏览代码,方便安全。
当然svn也有不如vss的地方,就是安装、配置较复杂,学习成本稍高些。
但svn做为一个先进的工具,学习它的管理、它的工作方式,我想还是值得的。
如何在ubuntu8.04上添加一个svn仓库
星期四,六月24th,2010
0.安装apache2
sudoapt-getinstallapache2
1.安装包
sudoapt-getinstallsubversion
sudoapt-getinstalllibapache2-svn
2.添加svn管理用户及subversion组
sudoaddusersvnuser
sudoaddgroupsubversion
sudoaddgroupsvnusersubversion
3.创建SVN文件仓库
sudosvnadmincreate/home/svn/project
4.设置目录权限
sudochown-Rroot:
subversionproject
sudochmod-Rg+rwsproject
sudochown-Rwww-data:
www-dataproject
5.打开apache配置文件
sudogedit/etc/apache2/mods-available/dav_svn.conf
添加如下文本:
<
Location/project>
DAVsvn
SVNPath/home/svn/project
AuthTypeBasic
AuthName“myprojectsubversionrepository”
AuthzSVNAccessFile/home/svn/project/conf/authz
AuthUserFile/home/svn/project/conf/passwd
#<
LimitExceptGETPROPFINDOPTIONSREPORT>
Requirevalid-user
/LimitExcept>
/Location>
6.打开/home/svn/project/conf/authz,添加如下文本:
[groups]
admin=miao,yin,wan
[/]
@admin=rw
*=r
7.打开/home/svn/project/conf/svnserve.conf,去掉以下4行的注释:
anon-access=none#匿名用户不可读
#anon-access=read#匿名用户可读
#anon-access=write#匿名用户可读可写
auth-access=write
password-db=passwd
authz-db=authz
8.添加用户
sudohtpasswd/home/svn/project/conf/passwdmiao
sudohtpasswd/home/svn/project/conf/passwdyin
sudohtpasswd/home/svn/project/conf/passwdwan
9.重启apache2
sudo/etc/init.d/apache2restart
这样,svn仓库就建好了。
地址为:
http:
//127.0.0.1/project,有三个admin(可读写)用户:
miao,yin,wan
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- UBUNTU SVN 应用