我是SVN的新手,我的项目通常是.NET winforms项目, 在过去,网络驱动器上有一个共享文件夹,并且是“当前版本”文件夹。
我的团队,3名成员,我们所有人都在自己的窗户上有本地副本。 问题出现了,可能程序员A&程序员B同时修改文件 覆盖B的文件等。
我的老板让我建立一个SVN来防止上面的问题。
我搜索SOF并了解SVN的概念,但是, 有人说必须从/ branch文件夹签出源,完成后,签入回/ branch文件夹并合并到/ trunk。
这让我提出了一些问题: 假设我的项目包含3个文件:
SVN存储库结构:
-
今天,我想修改Cart.cs,我将Cart.cs复制到/ branch并创建一个新文件夹“1.0.1”并结帐到我的本地并在VS2010上打开,但Cart.cs继承了产品.cs,所以它在我的VS上做了一些“遗漏参考”错误。
所以,正确的方法是将所有文件复制到/branch/1.0.1并将checkout复制到本地,或者只保留本地副本并覆盖/ branch中的文件以使编译正确?
谢谢你。
答案 0 :(得分:7)
你似乎对SVN的基本概念感到困惑。我强烈建议你阅读本书的前几章,特别是第2章和基本工作周期的部分 Subversion Red Bean Book
你应该做些什么才能充分利用SVN。
您创建一个存储库并存储任何启动文件或其中的内容,为您的项目创建一个特殊文件夹,然后在其中创建文件夹,即
/myProject
+ trunk
+ branches
+ tags
+ sandbox
从那里,所有你的工作应该在主干中完成。每个人都应该从主干检查项目,并单独处理他们的本地(工作)副本,理想情况下一次只能处理一个任务/问题。修复大型或实现新功能后,将工作与存储库同步,如果发生冲突,则应解决它们。 SVN 不会让您签入冲突的文件。您必须推迟,覆盖或合并您的工作与主干。如果此时需要与其他开发人员进行通信,则应该。解决所有冲突并使用工作副本测试完所有内容后,您可以提交代码并将更改发布回主干,然后进行更新。
当您需要从主干分叉以实现特定功能而不提交到主干时,将使用分支。几天后你应该将主干合并到你的分支中,然后最终你需要将分支合并到主干中。
答案 1 :(得分:1)
如果您只想开始一个非常简单的设置,您可以在SVN存储库中创建一个分支,其中文件夹/分支称为“Trunk”。
然后,每个开发人员都可以将该存储库签出到其计算机本地的文件夹中。当他们进行更改时,他们提交这些更改到“Trunk”存储库分支。
当您知道其他人进行了更改时,您会在本地副本上执行“更新”来提取这些更改。
最后,当您执行某些发布或达到某个里程碑时,您可以使用“版本1.0.1”等名称发布“标记”(其中标记实际上是另一个分支,包含给定时间实例的代码,您将不会继续处理该分支,但保持稳定)。