不,这并不容易,这是正确的:这是一个可怕的策略。
SVN 旨在用作文件树的一系列快照。所以从树上摘樱桃到树枝上,然后尝试将它们合并回去会很乏味,尽管我认为这不是不可能的。另外,您必须查看测试每个任务中发生的情况......无论如何,这必须针对整个应用程序进行测试。所以按照你的要求去做是没有意义的。
现在,如果您的东西在设计上是模块化的,您可以将每个模块存储在单独的树或单独的 repo 中,然后将完整的应用程序维护为一系列 . svn:externals
,但这实际上会使它变得更加复杂。我认为你可能会更好地以标准方式做事。
如果你不认为这是不可能的,你至少可以试着把我送到某个方向。
好吧,您将不得不从 CLI 工具创建分支,因为我不知道有任何客户端仅支持复制一组特定文件来创建分支(除非该组文件是存储库中特定目录的内容)。因此,您或开发人员必须执行以下操作:
svn cp --parents SVNURL/trunk/file1.sql SVNURL/trunk/file2.sql SVNURL/branches/taskname
问题是这只会从主干复制文件,而不是任何中间目录结构。因此,如果您在主干上只有平面文件布局,那么当您将所有内容合并回来时,您可能会感到困惑,因为进行合并的人只需要知道在哪里合并所有内容。
我能想到的唯一方法是单独复制每个文件,例如:
svn cp --parents SVNURL/trunk/file1.sql SVNURL/branches/taskname
svn cp --parents SVNURL/trunk/file2.sql SVNURL/branches/taskname
svn cp --parents SVNURL/trunk/migrations/file3.sql SVNURL/branches/taskname/migrations
我猜它归结为,当你合并时,你将不得不一次做一个樱桃选择合并一个文件。这对我来说似乎是一大笔开销,但并没有太多好处。
在您解释了您在这里处理的内容和工作流程之后,我仍然认为这是一个坏主意。如果您将 TRUNK 复制到 BRANCH,然后只处理必要的文件,您将有一个更轻松的时间。只需查看日志就可以很容易地了解这些文件是什么。
如果您担心您的开发人员不小心修改了任务范围之外的内容,我很确定您可以将权限设置为仅授予他们对受任务影响的现有文件的提交访问权限+添加新文件的写入权限如有必要。