我们有一个相当大的SVN存储库.随着我们添加代码越多,执行SVN更新的时间越长越长.我们添加svn:externals到了一些项目中重复的文件夹,比如各种网站上的FCKeditor.这有帮助,但不是那么多.
减少更新时间和提高SVN速度的最佳方法是什么?
我们的团队(5-10名开发人员)计划为我们的.NET(Visual Studio)项目/解决方案(VisualSVN Server,TortoiseSVN/VisualSVN)采用Subversion.
组织新存储库树的最佳方法是什么?是否可以使用一个大型存储库,或者为每个解决方案/产品线等创建不同的存储库更好?
我们的项目可以这种方式分类(例子):
在我正在开发的项目中,我们在开发团队之间进行了持续的讨论 - 生产环境是作为SVN存储库的结账部署还是作为导出进行部署?
开发环境显然是一个结账,因为它不断更新.对于制作,我亲自检查主干,因为它使未来的更新更容易(只需运行svn update).然而,一些开发人员反对它,因为svn使用svn进程的组/所有者和权限创建文件(这是在Linux操作系统上,所以那些事情很重要),并且生产中的.svn目录似乎也是如此他们有点脏.
此外,如果是结帐 - 如何在不包含开发代码的情况下将单个功能推送到生产中?你是否为每个功能使用标签或分支?任何替代品?
编辑:我可能不太清楚 - 其中一个要求是能够始终能够将修复程序推送到生产环境.我们希望避免完整构建(比简单更新需要更长的时间),仅用于推送关键修复.
我对svn中的BASE版本有疑问.我知道这是上次更新运行时的一个项目的原始版本,svn diff和status基本上是针对这个版本运行的.BASE什么时候更新?更新运行时是否更新到HEAD?即使在更新期间发生冲突,这也总是正确吗?BASE有什么冲突?它是否仍然具有我上次更新的版本(在导致冲突的最新更新之前)或者即使存在冲突也会更新到HEAD?
此外,当运行svn commit时,我假设BASE更新了我的本地更改,此时BASE,HEAD和我的本地副本都是相同的?如果提交成功.
是否可以在没有这些.svn文件夹的情况下从subversion签出文件?(用于将.NET应用程序发布到发布服务器).
我有一个编译的静态库(带有"a"扩展名)我想要包含在我的SVN存储库中但添加它永远不会工作(添加其他类型的项目没有问题).如果我更改扩展名(例如,"library.a" - >"library.b"),则添加有效.为什么"a"扩展失败了?有没有办法解决这个问题而不重命名文件?
是否可以switch从PHPStrom的接口发出Subversion命令?我正在搜索它并搜索并找不到它.
如果我从工作副本中删除文件,然后执行更新,则会恢复已删除的文件.
这很烦人,因为我必须找到该文件并再次删除它.
我不确定为什么SVN会这样做.如果我想进行更新,这意味着我想从存储库中删除任何更改.这并不意味着我想恢复已删除的文件.
有解决方法吗?
到目前为止,我看到的所有svn分支的例子都是这样的
svn cp -m 'Making test branch' svn://svnrepo/hellosite svn://svnrepo/hellosite2
所以为了分支,我需要每次都指定远程存储库的完整URL.但:
那么为什么我每次都要输入完整的URL?!! 或者我会错过什么?是否有一些允许引用当前远程存储库的快捷方式?就像是
svn cp -m 'Making test branch' //hellosite //hellosite2
(假设您使用Xcode 4)您的SVN忽略模式是什么?你有全球性的,或者你更喜欢通过propset设置它?
svn ×10
tortoisesvn ×2
asp.net ×1
branch ×1
command-line ×1
copy ×1
deployment ×1
ide ×1
php ×1
phpstorm ×1
visualsvn ×1
xcode ×1