前言
首先,我要说我是一个相对较新的程序员,并且我没有源代码控制方面的经验-尽管经过阅读后,这些概念和通用术语对我而言并不陌生。
背景
我将开始我的第一个专业项目(我将是唯一的提交者),并且我想借此机会精通Subversion和总体上的源代码控制实践。
开发将在AnkhSVN SC插件的帮助下在Visual Studio的Windows框上进行。
我已经在Windows服务器上设置了SVN,并创建了一个存储库,我将在其中存储项目。
此特定项目将需要提供二进制文件和源代码。
问题
通常如何建立解决方案?假设我已将解决方案的初始版本导入到存储库中;接下来,我在本地工作副本中取得了一些里程碑;我做出这些更改;那会发生什么呢?我是否仅在本地开发计算机上构建解决方案,然后在其中打包二进制文件?在现实世界中这是如何完成的?
在VM中弄乱了VS和AnkhSVN之后,我注意到在签出解决方案的某些修订版之后,本地副本的目录树在每个节点中都有一个名为“ .svn”的额外目录。根据“背景知识”中的第三点,我还将提供源代码以及二进制文件。这就提出了一个问题:如何获得解决方案的“干净”版本?我是否希望编写一个清理脚本给我?
我经常在解决方案中创建,合并(即手动)和删除文件。 SVN(而不是VS和AnkhSVN)会妥善处理吗?如果我回到某个版本,VS / AnkhSVN是否会自动重新加载已添加文件或从中删除文件的解决方案?
您在哪里学习了使用源代码管理,以及花了多长时间才能精通它(即直到这些操作成为第二天性)。
我真的很想开始使用源代码管理,但是我担心如果我开始使用它,而又无意间做了一些愚蠢的事情,那我会丢失代码。任何额外的建议表示赞赏。
最佳答案
通常,打包的二进制文件不会保存在源代码管理中。如果有的话,请为它们使用单独的存储库。实际上,如果可能,请尝试使二进制文件远离您的存储库。没有源代码的编译版本。 (也请参阅评论)
获取TortoiseSVN以在资源管理器中使用。您可以使用“导出”选项(而不是签出)来获得目录的干净版本。为此使用单独的目录。
Visual Studio将询问您是否要重新加载已更改的项目或解决方案。不过,您需要确保在添加或删除文件的同时签入项目。它现在不会给您带来问题,但是如果您与一个以上的人一起从事此工作,或者如果您以后想要恢复为较早的版本,则不会出现问题。
在这里和那里:)花了我一个月左右的常规时间来正确处理*
我过去曾经使用过AnkhSVN,这很好,但是如果您有包含大量文件的大型解决方案,则可能需要为VisualSVN掏钱。它使用TortoiseSVN(即具有一些缓存机制),使其速度更快(请参阅下面有关AnkhSVN 2.0的评论)。 VisualSVN还将帮助您在特殊目录上设置属性。例如,它将自动忽略bin
和obj
目录。
我不愿意为过于依赖免费项目的产品付费,但是我必须说投资是值得的。
其他人已经链接了有关如何设置存储库的一些不错的资源,因此我不会做太多介绍。我通常自己使用/trunk
,/branches
,/tags
方法。至少标记您的发行版本,以便以后快速找到它们。
广告4:
到目前为止,我已经使用过CVS(很少),Visual SourceSafe,Subversion和Team Foundation Server。我的意思是在某个时候尝试Git,但是您可能会比SVN差很多。
关于visual-studio - SVN基本用法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1189821/