基本SVN用法

Syc*_*rax 17 svn version-control ankhsvn visual-studio

前言

让我首先说我是一个相对较新的程序员,我之前没有源代码控制的经验 - 尽管经过一些阅读,概念和一般术语对我来说并不陌生.


背景

我即将开始我的第一个专业项目(我将是唯一一个承诺)并且我想借此机会熟练掌握Subversion和源代码控制实践.

  • 在AnkhSVN SC插件的帮助下,将在Visual Studio的Windows框中进行开发.

  • 我在Windows服务器上设置了SVN并创建了一个存储库,我将存储我的项目.

  • 此特定项目将需要传递二进制文件源代码.


问题

  1. 如何建立解决方案建设?假设我已将解决方案的初始版本导入存储库; 接下来,我在我的本地工作副本中取得了一些里程碑; 我承诺这些改变; 那会发生什么?我是否只是在我的本地开发机器上构建解决方案并将二进制文件打包在那里然后呢?这在现实世界中是如何完成的?

  2. 在虚拟机中弄乱VS和AnkhSVN之后,我注意到在我检查了一些解决方案的修订后,我的本地副本的目录树在每个节点中获得了一个名为".svn"的额外目录.根据"背景"中的第三点,我还将提供源代码和二进制文件.这提出了一个问题:如何获得我的解决方案的"干净"版本?我是否应该编写一个shell脚本来为我清理?

  3. 我经常创建,合并(手动,即),并删除我的解决方案中的文件.SVN(而不是VS和AnkhSVN)会优雅地处理这个吗?如果我回到某个版本,VS/AnkhSVN是否会自动重新加载已添加/删除文件的解决方案?

  4. 在哪里学会使用源代码控制,以及你需要多长时间才能熟练(即,直到这些操作是第二天性).


我真的想开始使用源代码控制,但我很害怕,如果我开始使用它并且我做了一些无意中愚蠢的事情,我就会丢失我的代码.任何额外的建议表示赞赏.

Tho*_*rin 14

  1. 通常,打包的二进制文件不会保留在源代码管理中.如果有的话,为它们使用单​​独的存储库.事实上,如果可能的话,尽量让二进制文件远离您的存储库.没有源代码的编译版本.(见评论)
  2. 获取TortoiseSVN以在Explorer中使用.您可以使用" 导出"选项(而不是结帐)来获取目录的干净版本.为此使用单独的目录.
  3. Visual Studio将询问您是否要重新加载已更改的项目或解决方案.您需要确保在添加/删除文件的同时签入项目.它现在不会给你带来任何问题,但是如果你正在与多个人一起工作,或者如果你想在以后恢复到早期版本的话.
  4. 在这里和那里:)花了我一个月左右的常规使用来做对了*

我过去使用过AnkhSVN并且它很好,但是如果你有大量文件的大型解决方案,你可能想要为VisualSVN支付一些现金.它使用TortoiseSVN(在术语上有一些缓存机制),使其更快(请参阅下面关于AnkhSVN 2.0的评论).VisualSVN还将帮助您在特殊目录上设置属性.例如,它会自动忽略binobj目录.
我不是一个非常喜欢为一个免费项目如此沉重的产品买单,但我不得不说这笔投资是值得的.

其他人已经联系了一些关于如何设置存储库的好消息,因此我不会过多地介绍它.我一般用的/trunk,/branches,/tags接近自己.至少标记您的发布版本,以便稍后快速找到它们.

广告4:
到目前为止,我已经使用过CVS(很少),Visual SourceSafe,Subversion和Team Foundation Server.我的意思是在某些时候尝试Git,但你可能比SVN做得更糟.

  • 我不确定您是指项目二进制文件还是所有源代码控制之外的二进制文件。开发人员之间存在一些争论,但是我的想法是,您的项目所依赖的二进制文件对于源代码控制是公平的。将所有内容都放在一个地方IMO真是太好了。+1总体来说不错。 (2认同)
  • AnkhSVN 2.X有一个直接与VS的文件使用相结合的缓存,使得它比VisualSVN更快,它必须保持两个缓存最新(它自己和TortoiseSVN).不要认为AnkhSVN 2是更好的1.X; 它是一种新的(并且更好的集成)scc解决方案,而不是旧的AnkhSVN. (2认同)

Avi*_*ion 8

4)我从这个开始,因为这将回答你的许多第一个问题:使用Subversion的实用版本控制是我在SVN中使用SVN的圣经.但与圣经不同的是,你可以在几天内完成它而不用匆忙.

1)版本控制项目通常采用仅提交源文件的形式,因为项目文件(例如,VS)通常包含当前安装的无关定义,并且会丢弃存储库.日常提交仅供您个人使用.对于主要版本,使用标签.

2).svn目录是由SVN客户端完全管理的本地缓存存储库.别碰它.

3)合并,删除和添加文件是版本控制的全部内容.是的,SVN会优雅地处理这个问题,这在参考书中很容易解释.项目的每个修订都是独立的.


小智 6

我不能回答你的主要问题,因为它们非常具有VS特异性,但当你说:

我很害怕,如果我开始使用它并且我无意中做了一些愚蠢的事情,我就会丢失我的代码.

让我向你保证.VCS的重点是防止任何代码丢失.我所知道的所有版本控制系统都无法修改旧版本的文件,而不会跳过一些极不可能的箍,例如直接用文本或十六进制编辑器编辑存储库.只要你不这样做,只要你经常备份你的存储库,你的代码就会安全,你应该随意进行实验.