支持跨不同文件夹层次结构的单个SVN存储库

时间:2012-08-30 15:43:03

标签: windows svn tortoisesvn

所以我有一个项目将文件和文件夹压缩在我的文件系统中。逻辑上所有这些文件都属于单个项目,因此属于单个SVN存储库,但我无法将它们组合到单个文件夹层次结构中,因为所涉及的程序都是硬编码的,以将其源代码保存到特定目录。 / p>

我不认为我是第一个处理这种情况的人,所以我希望我忽略了一个简单的解决方案。我考虑了四种方法但它们都有缺点;还有另一种方法我没有考虑过,或者除此之外,任何人都可以长期了解最佳方法吗?

以下是我考虑的方法:

  1. 在每个系统文件夹中签出SVN仓库的相应子文件夹。可能是最简单的技术,但我不喜欢很多单独的提交变得有必要构成可能是单一的"逻辑"承诺。与更新相同。
  2. 将SVN结帐保留在一个位置,并使用程序同步SVN层次结构和系统文件夹。使SVN的使用更简单一点,但它的移动部件更多。如果有人在错误的方向同步,那么覆盖未提交的工作也很容易。
  3. 单个SVN签出,使用联结/符号链接到系统文件夹。根据我的尝试和一些网络搜索,目前在技术上似乎是不可能的。它也感觉有点脆弱。
  4. 我可能会以相反的方式改变硬编码的程序文件夹,以便它们是我的SVN结帐的子文件夹的符号链接/联结。这似乎仍然有点脆弱:软件更新可能会替换符号链接,或者一个或多个程序可能也不喜欢符号链接。
  5. 请注意,将使用此存储库的某些人不是开发人员,因此我希望尽可能简化这些操作。另请注意,这是一个Windows环境,我们通常使用TortoiseSVN。 Git / mercurial / etc不是一个选项,公司政策要求SVN配合我们的发布流程。

    采用最简单的方法,可能会起作用"方法,#1似乎是要走的路。但也许(希望?)有些东西我不知道了?

1 个答案:

答案 0 :(得分:0)

由于没有人对此进行权衡,我只会说我最终选择了#1门。这种“解决方案”对于新手来说是最简单的理解,没有任何微妙的东西会破坏并造成伤害或混乱。多次提交可能会有点烦人,但我在实践中发现,我们通常一次只更新/提交一个或两个位置。

值得注意的是,某些IDE可能会将此问题抽象出来。如果您的IDE支持从不同位置提取文件的项目或解决方案,那么它的SVN插件可能也是如此。例如,Visual Studio + AnkhSVN可以处理它 - Ankh会简单地将您的“单个”提交分成多个真实提交到SVN。并不真正适用于我的场景,但也许它会帮助其他人。