0

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

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

项目一:

  • 根/资产
  • ROOT/资产/共享代码
  • ROOT/Assets/SharedCode/SharedScript.cs
  • ROOT/Assets/SharedCode/SharedScript.meta

项目二:

  • 根/资产
  • ROOT/资产/共享代码
  • ROOT/Assets/SharedCode/SharedScript.cs
  • ROOT/Assets/SharedCode/SharedScript.meta

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

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

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

任何建议将不胜感激!

4

2 回答 2

4

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

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

于 2012-10-15T08:40:26.510 回答
1

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

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

现在,当您将此 csproj 添加到您选择的解决方案中时,您需要设置项目依赖项,以便在构建“SharedCode”项目之前生成“SharedScript.meta”文件。现在应该没有问题了。

希望有帮助!

于 2012-06-03T16:06:49.687 回答