Visual studio Visual Studio+;svn:在网络驱动器或本地驱动器上工作拷贝?

Visual studio Visual Studio+;svn:在网络驱动器或本地驱动器上工作拷贝?,visual-studio,svn,Visual Studio,Svn,我们(小型团队)目前在网络驱动器上有我们的Visual Studio项目(无版本控制)。我希望我们开始使用版本控制,所以我想我应该安装Subversion并将所有项目放入svn存储库 现在的问题是:我们应该把我们的工作副本放在哪里 选项A:在本地硬盘上。优点:编译速度快 选项B:在服务器上的网络共享上(每个用户一个目录)。优点:所有工作副本都将包含在每日备份中 理想情况下,我希望同时具备这两个优势,但我想这是不可能的(至少在不修改备份策略以包括工作站的情况下是不可能的)。还是有可能?或者有其

我们(小型团队)目前在网络驱动器上有我们的Visual Studio项目(无版本控制)。我希望我们开始使用版本控制,所以我想我应该安装Subversion并将所有项目放入svn存储库

现在的问题是:我们应该把我们的工作副本放在哪里

  • 选项A:在本地硬盘上。优点:编译速度快
  • 选项B:在服务器上的网络共享上(每个用户一个目录)。优点:所有工作副本都将包含在每日备份中

理想情况下,我希望同时具备这两个优势,但我想这是不可能的(至少在不修改备份策略以包括工作站的情况下是不可能的)。还是有可能?或者有其他的观点赞成还是反对选择A和B?< /P> < P>你使用C++吗?编译速度足够慢,不要低估编译时间对生产率的影响。您的本地工作站有很多免费备份解决方案


在工作中,我们使用TFS设置为仅具有已更改文件的本地副本。每次我打开一个没有缓存的文件,它都会延迟几秒钟去获取它。非常痛苦。

我会坚持使用选项A,原因很简单:这样开发人员就更有可能提交他们的更改,而不是留下工作副本,因为他们知道它们正在备份。设置svn服务器并将其放入备份计划中。

我总是发现从网络驱动器运行代码时存在安全问题,所以我要说的是,转到本地并经常签入


此外,如果您开始使用visualsvn或tortoise等工具,它们更有可能在本地驱动器而不是网络上运行

选择选项A。如果通过备份subversion服务器来备份subversion存储库,则无需备份工作副本。在将更改提交到SVN时,它们会被传输到SVN服务器,因此,仅备份服务器实际上就是备份工作副本,除非有任何未提交的更改

此外,Subversion在与SVN服务器通信时非常适合网络传输,但工作副本的磁盘使用/访问量非常大。通过将工作副本放在远程文件共享上,您将面临两种情况中最糟糕的情况



*任何未签入SVN的更改都不会备份,但我建议您鼓励人们定期提交。如果由于功能部分完成而不容易实现,请查看。您可以为每个开发人员提供他们自己的分支进行开发,并且只有在更改完成后才将他们的更改合并回主干。

出于上述性能原因,肯定是本地的,尽管我认为这可能适用于任何语言


您将它们保留在共享上的原因是备份。如果这是唯一的原因,我可以告诉你,我与各种源代码管理提供商合作的经验让我发现,通常如果您丢失了本地更改(顺便说一句,非常罕见),它们不会太多,以至于您无法重新创建它们。您的源代码存储库应该位于备份驱动器上,因此绝大多数代码都是安全的。只有当前任务的代码在驱动器发生故障时才会丢失。如果你担心这一点,推广足够小的工作单元(如果可能的话),这样没有人会损失超过一天的工作。或者,如果您有更大的工作单元,您可以对代码进行分支,并每天提交分支,并在更方便的时间将它们合并回主干。

+1强调不备份工作副本。鼓励你的团队尽早且经常地做出承诺,或者在适合你的开发风格的私人分支机构工作。同意-经常检查,如果你正在从事的工作不适合,则选择分支机构。话虽如此,备份开发人员工作站是件小事,为什么不另外做呢?在SVN中进行分支在技术上是可能的,但根据我的实际经验,非常令人沮丧,完全没有用。在我工作的地方,我们一直都在做。我们目前有几个功能分支正在运行中,还有一些个人分支供个人使用。此外,您可以鼓励开发人员在夜间运行SyncToy之类的东西,这样,如果开发人员确实累积了超过一天的挂起更改,那么这些挂起的更改将得到备份。这保证了(啊哼)没有开发人员可以损失超过一天的工作,即使他们在几天内没有提交。