SVN外部(或类似)与单个树中的共享文件?

时间:2012-06-03 14:09:25

标签: svn unity3d externals

所以我有这个困境,我正试图解决。我是一名独立游戏开发人员,在任何时候都使用Unity游戏引擎从事6-7个客户端项目。我遇到的问题是保持我的共享代码在项目之间同步 - 我当前的解决方案非常“手动”且耗时(当我忘记更新所有内容时容易出错)。我开始研究SVN外部作为解决方案,但有一个问题。 Unity游戏引擎使用* .meta文件来维护有关在每个游戏中如何使用相关文件的数据。

作为一个简单示例 - 这是一个示例文件夹结构:

项目1:

  • ROOT
  • ROOT /资产
  • ROOT /资产/ SharedCode
  • ROOT /资产/ SharedCode / SharedScript.cs
  • ROOT /资产/ SharedCode / SharedScript.meta

项目2:

  • ROOT
  • ROOT /资产
  • ROOT /资产/ SharedCode
  • ROOT /资产/ SharedCode / SharedScript.cs
  • ROOT /资产/ SharedCode / SharedScript.meta

明显/直接的解决方案是让我的“SharedCode”文件夹成为外部SVN。出现的问题是,两个项目上的SharedScript.cs文件应该是相同的,但是SharedScript.meta文件是特定于项目的,并且由游戏引擎自动生成(所以我不能说,将我的所有元文件存储在单个文件夹位于“SharedCode”文件夹外部的某个位置。

这些文件有数百种,所以我喜欢一种不涉及将每个“共享”文件视为SVN外部文件的解决方案。

我目前的丑陋解决方案是将整个项目树保留在SVN中 - 我有一个子文件夹,它是一个忽略.meta文件的GIT仓库。这很丑陋,我经常提交/更新主项目,忘记提交/推送/拉取git“库”项目。

任何建议都将不胜感激!

2 个答案:

答案 0 :(得分:4)

为什么不只为代码使用一个版本控制系统,为统一项目的资产使用一个版本控制系统。然后使用svn:externals作为需要在项目之间共享的代码。

您可以忽略项目中的元文件,并使用git对元文件进行版本化。

答案 1 :(得分:1)

为什么不制作你的" SharedCode"文件夹SVN外部 - 但没有" SharedScript.meta"文件(以及项目特定/自动生成的任何其他文件)。

现在将SharedCode.csproj指向一个不存在的文件," $(SolutionDir)/<(blah)/SharedScript.meta"。您可以简单地手动编辑csproj来执行此操作。请注意,您的所有解决方案现在必须将此元文件生成到此相对路径。

现在,当您将此csproj添加到您选择的解决方案时,您需要设置项目依赖项,以便" SharedScript.meta"文件是在你的" SharedCode"之前生成的。项目建成。现在不应该有任何问题。

希望有所帮助!