项目总结——程序员必读正确使用svn

来源:互联网 发布:淘宝发布虚拟物品 编辑:程序博客网 时间:2024/06/07 18:30

   什么是SVN

 

看到这篇博客的人,基本上是对svn有一定了解的人。对于svn的发展,svn的优点,定义说明我在这里就不具体介绍了。大家都知道svn对于合作开发的重要性。基本的操作大家可能也有所了解。但是我还是有给大家说一下通过我的使用总结的一些svn的使用技巧:


       1、程序需定期编译通过后上传SVN,每天可上传多次,根据个人程序开发进度决定,但每天晚下班前必须将当天的程序编译调试通过并上传SVN每天早上上班首先需要更新SVN最新版本


    上传的工作流程应该是,更新——编译运行——上传。这个工作流程那一步也不能缺少。更新是在把别人提交的代码下载下来,看看和自己所写的代码有没有什么冲突,可能自己需要用到的一个函数已经被别人所修改。导致自己本来运行完美的系统出现了错误。如果没有编译运行就上传了。别人下载下来的代码就是错的了。这样通过几个版本的迭代。出现的错误就很难被发现与纠正。这就又产生了一个原则:任何时候不能把错误的代码往服务器上传。对于多次上传,主要目的是把损失降低到最低,这样一旦出现了错误恢复上一个版本的损失才会最少。但每天晚下班前必须将当天的程序编译调试通过并上传SVN对于这一点有两个重要意义:1.每天老板都知道你今天干了多少活。2.把今天的工作告一段落,没有压力的开始明天的工作。明天其他人的任何更改都不会影响你今天的工作。


   2、在程序中添加页面、删除页面及修改页面命名时,需要先更新全部程序特别是解决方案文件,然后再做添加或者删除页面以及修改页面名称,做完这类操作后需立刻上传SVN,以免造成解决方案冲突


    先说什么是解决方案冲突:

csproj文件大家应该不会陌生,那就是C#项目文件的扩展名,它是“CSharp Project”的缩写。那么它究竟是给谁用的呢?那是给开发工具用的,例如我们在熟悉不过的VisualStudio,以及大家可以没有接触过,但是应该都听说过的MSBuild.exe。VisualStudio会根据csproj里的XML定义来管理项目文件以及相关其他一些种类非常丰富的数据及操作,MSBuild也会根据csproj文件来得知编译这个项目需要有哪些依赖,默认输出路径,Pre-Build和Post-Build需要哪些操作等等。VisualStudio和MSBuild都是开发工具,这就是csproj存在的唯一意义:为“开发环境”提供信息。而到了运行环境中,根本不会有人(操作系统?)关心所谓的csproj文件——也就是“程序是哪里来的”。

了解了csproj文件也就能理解什么是解决方案冲突了。你在程序中添加页面、删除页面及修改页面命名时都是需要修改这个管“程序是哪里来的”的这个文件的。这样如果你下载下来添加了页面,然后提交了。他也下载下来然后也提交,是一定会出现版本冲突的。(当然以上原则不只是添加页面时,添加类也是一样的。)这个时候技巧2,就显得尤为重要了。




    3.以下文件不允许提交到SVN上,应在本地通过SVN客户端添加到忽略列表中。

                      1、解决方案的suo文件

                      2、工程的bin文件夹和obj


    这些又是什么文件呢?

 

         suo文件

 

    suo(solution useroptions)是一种文件的格式。*.suo解决方案用户选项,记录所有将与解决方案建立关联的选项,以便在每次打开时,它都包含用户所做的自定义设置。比如VS布局以及项目最后编译的而又没有关掉的文件用于下次打开时用。

    其中,VS布局包括:监视器1234的变量列表、断点标记及开关状态、输出窗口错误窗口等的分布及其悬浮状态,还有项目卸载状态标记。

    .suo文件偶尔会被破坏,从而在构建和编辑应用程序时出现意想不到的结果。如果VisualStudio对于每个解决方案不稳定,就应删除.suo文件。下次打开解决方案时,Visual Studio会重建它。

 

    bin和obj文件夹

 

    bin是放最终代码的目录

    obj就放中间代码的目录 

         Bin目录用来保存项目生成后程序集,它有DebugRelease两个版本,分别对应的文件夹为bin/Debugbin/Release,这个文件夹是默认的输出路径,我们可以通过:项目属性—>配置属性—>输出路径来修改。

         obj目录是用来保存每个模块的编译结果,在.NET中,编译是分模块进行的,编译整个完成后会合并为一个.DLL.EXE保存到bin目录下。因为每次编译时默认都是采用增量编译,即只重新编译改变了的模块,obj保存每个模块的编译结果,用来加快编译速度。是否采用增量编译,可以通过:项目属性—>配置属性—>高级—>增量编译来设置。

    可以看出这些文件都是根据本地的信息产生的配置文件,每个人和每个人的都可能是不一样的。所以上传的时候应该屏蔽。等到自己更新了最新版本。重新编译,就会自动的产生可以使用的自己的配置文件了。

 

 另附: 冲突解决方法:http://blog.csdn.net/hy6688_/article/details/9500333

   这些技巧更应该说是我们要培养的工作习惯,只用有了这些工作习惯我们的合作开发才会更加的愉快,更加的和谐。