码迷,mamicode.com
首页 > 其他好文 > 详细

工具——基于SVN的代码中自动生成版本号

时间:2015-08-31 11:28:34      阅读:870      评论:0      收藏:0      [点我收藏+]

标签:

 


SVN一般都是团队合作做一个项目所需用到的,为了是版本的统一, 我现在用的版本是 AnkhSvn-2.1.7141.181.msi
SVN取出[SVN checkout]:从档案库中取出工作复本。
汇出[Export]:从档案库中汇出干净的工作复本,不含svn管理用数据夹。
汇入[Import]:汇入目录至档案库。
SVN Commit[SVN送交]:将你所做的修改送交至档案库。
SVN Update[SVN更新]:更新工作复本至目前档案库的最新版本。
Update to reversion[更新至版本]:更新工作复本至目前档案库的某个指定版本。
Get lock[取得锁定]:锁定某些档案,只能由你修改。直到你解除锁定。
Branches/Tags[分支/标记]:在档案库中快速建立复本以做为分支或标记之用。
Switch[切换]:切换工作复本至其它分支、标记。
Merge[合并]:将分支树合并回主干。
Blame[谴责]:列出档案的每一行作者。
Create patch[建立补缀]:建立包含你所有修改的单一异动档。


以下详细介绍参考有书读
1、 Check out——从服务器端取得代码
把服务器资料库里存放的某个项目代码取出来,放到本地主机中,这个动作叫做“check out”。使用具体步骤:进入要安装项目文件的目录中,点击鼠标右键,选择SVN Check out项,然后填写项目的原始路径和安装路径后点击“ok”即可。
2、Update——更新项目代码
以 前checkout过的一个项目代码,当服务器上有了更新的代码,或者本地代码损坏或丢失,update可以自动判断本地哪些文件较旧,或者缺少,都会自 动更新。当然,你也可以删除掉本地代码,重新check out。使用具体步骤为:在要更新的项目上点击鼠标右键,选择“SVN Update”项即可。
3、Commit——将本地代码上传到服务器
当 修改(增加,删除,修改等所有写操作)过本地代码后,这个动做会把新代码提交到SVN。如果本地代码做了修改,不执行commit操作,SVN服务器上是 不会有这个新版本的,也就是说其它人也得不到。对代码做过修改后,应尽快commit。使用具体步骤:在修改完待上传的项目上点击鼠标右键,选择 “SVN Commit”项即可。
4、Export——将项目导出到本地
如果想要得到一个完整的项目,且不需要再进行版本的改动,可以直接把该项目导出版本控制系统,成为一个普通文件进行使用。具体步骤为:单击鼠标右键,选择TortoiseSVN—— >>Export项,然后填入要导出的项目既可。
5、Show Log——显示所有版本
如果项目成员想查看本地下载的属于版本控制内的某个项目以前的所有版本,就在该项目上单击鼠标右键,选择TortoiseSVN菜单下的Show Log项。则该项目的所有版本及其每个版本的修改信息都将显示在出现的新对话框下,供项目成员进行参考。
6、Update To Revision——恢复到某个版本
当 项目成员想要把某个项目恢复到以前的某个版本时,在该项目上单击鼠标右键,选择TortoiseSVN菜单下的Update To Revision,于是,在出现的Update对话框中可以先点击“Show Log”来查看及确定要恢复到的版本号,或者直接将要恢复到的版本号填入“Revision”旁的编辑区内,最后点击“OK”。于是,该项目就恢复到想要 的项目版本了。
7、Add——增加文件
当项目成员想在项目中添加一个新文件时,请把该文件先拷贝到项目文件加下,然后,在该文件上单击鼠标右键,选择TortoiseSVN菜单下的Add项,于是,该文件就可以被添加到项目中了。


高级特性
1、 Update to revision
Update默认更新到最新版本,update to revision则可以更新到指定版本(可以是更旧的版本)。
2、增删项目文件及目录的操作
增删项目内文件或目录,请一定使用svn add ,或svn del 或svn rename,然后做commit操作.

 

 

 

本节和大家讨论一下程序集版本最后一位使用SVN版本号的自动生成方法,这里就向大家简单介绍一下,欢迎大家能和我一起学习SVN版本号的相关知识。
使用SVN进行源代码版本控制时,我们希望能够快速找到每个发布版本对应的源代码版本,现在可以通过在程序集的版本信息中增加SVN源码版本信息的方式来实现我们的要求。
现在我们定义每个程序集的版本信息的最末段表示SVN的源码版本。详细定义如下:
程序集版本号分为4段,例如1.0.4.23。
第一段为主版本号,项目一但启动则不会更改。
第二段为次版本号,在项目功能做较大调整时增加,增量为1。
第三段为修订版本号,通常在解决缺陷或者细微功能变化时增加,增量为1或者2。该版本号分奇数和偶数两种。奇数表示测试版本,偶数表示稳定版本。
第四段为SVN源码版本号,该版本号通过脚本自动生成。
使用脚本自动生成SVN版本号的先决条件:

安装TortoiseSVN;
源代码在SVN版本管理控制之下。
修改项目设置,使之能够自动生成SVN版本号:
修改Properties\AssemblyInfo.cs文件,将程序集版本信息的最末一段改为$WCREV$。并增加一行"//最后发布时间:$WCDATE$"
例如:
[assembly:AssemblyVersion("1.1.0.$WCREV$")]
[assembly:AssemblyFileVersion("1.1.0.$WCREV$")]
//最后发布时间:$WCDATE$
将AssemblyInfo.cs文件重名为AssemblyInfo.tpl,并添加到源代码管理。
从源代码仓库中删除AssemblyInfo.cs,并排除它,使其不受版本管理。
添加本文中的GenerateAssemblyInfo.bat文件到Properties目录中,并添加到源代码管理。
修改项目属性,在生成事件的预生成事件命令行中添加以下命令。
"$(ProjectDir)\Properties\GenerateAssemblyInfo.bat""$(ProjectDir)".\Properties\AssemblyInfo.tpl.\Properties\AssemblyInfo.cs
注意:
在编译之前记得提交你的更改和更新别人的更改,这样才能确保版本号的正确。
今后要对程序集信息进行修改时,请对AssemblyInfo.tpl文件进行修改。
如果生成的AssemblyInfo.cs文件出现中文乱码,打开AssemblyInfo.tpl,在文件->高级保存选项中将文件编码改为UTF-8即可。本节介绍SVN版本号问题完毕。

 

 

 

1. 生成一个名为autover的项目
注意项目的Properties文件夹下有一个名为AssemblyInfo.cs的文件,autover程序的版本号就写在它里面。
2. 创建模板文件
在windows的资源管理器中进入Properties文件夹,把AssemblyInfo.cs文件复制一份,命名为AssemblyInfo.template.cs,并把它加入到项目中来。
3. 修改AssemblyInfo.template.cs的属性
AssemblyInfo.template.cs文件是用来自动生成版本号的模板文件,它不应该被编译,所以我们要把它的Build Action改成None,如下图所示:
4. 修改AssemblyInfo.template.cs的内容
在这个文件中,你能找到如下两行代码:
[assembly: AssemblyVersion( "1.0.0.0" )]
[assembly: AssemblyFileVersion( "1.0.0.0" )]
其中的“1.0.0.0”就是程序的版本号,它使用的是“主版本号.次版本号.内部版本号.修订号”的形式。前三个改成你自己需要的数字,最后一个改成“$WCREV$”,改完之后应该是类似下面的样子:
[assembly: AssemblyVersion( "1.0.0.$WCREV$" )]
[assembly: AssemblyFileVersion( "1.0.0.$WCREV$" )]
在这个文件的最后,你还应该加上下面两段代码,它们可以检测出有本地修改(修改了但没有提交)的代码和有混合版本的代码。
#if $WCMIXED?true:false$
#if DEBUG
#warning mixed update revisions founded
#else
#error mixed update revisions founded
#endif
#endif

#if $WCMODS?true:false$
#if DEBUG
#warning local modification founded
#else
#error local modification founded
#endif
#endif
5. 修改项目属性
在项目属性的Build Event页的Pre-build event command line中输入:
"%ProgramFiles%/TortoiseSVN/bin/SubWCRev.exe" $(SolutionDir) $(ProjectDir)Properties/AssemblyInfo.template.cs $(ProjectDir)Properties/AssemblyInfo.cs -f
注意,这里我们必须保证TortoiseSVN安装到了默认路径上。在多人参加的项目中这应该是强制性的要求,否则,大家安装的路径都不一样,甲机器上能用的配置,到了乙机器上可能就不行了。
然后,你可能还需要将Publish页中的Automatically increment revision with each publish选项关掉(我不确定这步是否必须)。C#可以自己递增版本号,但它生成的版本号和代码库中的代码没有对应关系,我个人觉得意义不大。并且它 还可能会把我们的版本自增机制搞乱。所以应该关掉。
6. 把项目加入版本库
使用VisualSVN的Add solution to Subversion命令把项目加入SVN,但不要提交。
7. 从SVN中排除AssemblyInfo.cs文件
每次编译时,这个文件都会基于AssemblyInfo.template.cs重新生成,所以没必要加入版本库。这步做完之后就可以提交整个项目了。
8. 编译
编译完成后,看一下生成的autover.exe文件的版本信息,本例中是1.0.0.1。随便改点什么,提交,重新编译,你会发现它自动 变成了1.0.0.2,也就是程序的修订号总是与生成它的代码的修订号一致。这样,当程序出问题后,我们通过这个数字就能轻松得到生成它的那一版代码了。
9. 其它问题
第8步中大家做完修改后再编译时可能会看到警告或错误信息,说代码有本地修改或混合版本。这就是第4步中,在 AssemblyInfo.template.cs文件最后加的两段代码的作用,它们检测代码是否都已经提交了并且版本是否一致,一旦发现问题就会在调试 版中生成警告信息,在发布版中生成错误信息。使用这种方法,我们可以基本消除发布的程序的版本和代码的版本出现不一致的可能性。去掉这两个错误或警告的方 法也很简单,把代码整体提交或更新一下就行了。

 

工具——基于SVN的代码中自动生成版本号

标签:

原文地址:http://www.cnblogs.com/sun-frederick/p/4772539.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!