3

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

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

以下是我考虑的方法:

  1. 签出每个系统文件夹中 SVN 存储库的相应子文件夹。在技​​术上可能是最简单的,但我不喜欢很多单独的提交成为构成可能是单个“逻辑”提交的必要条件。与更新相同。
  2. 将 SVN 结帐保存在一个位置,并使用程序同步 SVN 层次结构和系统文件夹。使 SVN 的使用更简单一些,但它是更多的移动部分。如果有人以错误的方向同步,覆盖未提交的工作也很容易。
  3. 单个 SVN 结帐,使用连接/符号链接到系统文件夹。根据我的尝试和一些网络搜索,目前这在技术上似乎是不可能的。它也感觉有点脆弱。
  4. 我也许可以采取相反的方式并更改硬编码的程序文件夹,以便它们成为我的 SVN 结帐的子文件夹的符号链接/连接。这似乎仍然有点脆弱:软件更新可能会取代符号链接,或者一个或多个程序可能也不喜欢符号链接。

请注意,将使用此存储库的一些人不是开发人员,所以我想让他们尽可能简单。另请注意,这是一个 Windows 环境,我们通常使用 TortoiseSVN。Git/mercurial/etc 不是一个选项,公司政策要求 SVN 配合我们的发布流程。

采用“可能可行的最简单的事情”的方法,#1 似乎是要走的路。但也许(希望?)我缺少什么?

4

1 回答 1

0

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

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

于 2012-10-09T19:27:08.333 回答