【问题标题】:Version control for Adobe Flash projectsAdobe Flash 项目的版本控制
【发布时间】:2010-11-30 01:28:37
【问题描述】:

我正在处理一个非常复杂的 Flash 项目,该项目是我们为客户使用而部署的全方位服务的一部分。对于我们的大多数软件源(Java、PHP、Javascript、HTML 和其他语言的一些支持脚本),我们使用 subversion 进行版本控制和管理,因此我们对 Flash 项目也这样做,即使我们从版本中获得的好处很少控制这一点(除了能够恢复到以前的版本),因为 FLA 文件存储为我们无法从中获得有意义差异的二进制文件。

我们将尽可能多的代码放入我们可以使用 subversion 正确管理的 AS 文件中,但是由于我们的架构和部署策略的要求(我们不能因为客户的需要而改变),我们仍然维护我们需要管理的大量 FLA 文件。

我查看了 Adob​​e Version Cue,虽然我并不真正了解它在版本控制方面的作用,但将我们的 Flash 项目迁移到 Version Cue 上是否会比我目前从 Subversion 获得更好的控制?

另外 - 如果人们可以分享他们关于 Flash 项目版本控制的经验和建议,那将非常有帮助。

【问题讨论】:

    标签: flash version-control


    【解决方案1】:

    我自己也为此苦苦挣扎,除了:

    1. FLA 中永远没有代码
    2. 在适当的情况下,在语义上将内容划分为单独的 FLA
    3. 为 FLA 制作变更文档,并为每个变更输入注释。

    第一点很明显。第二个是要认识到 FLA 是二进制 blob,它包含所有视觉资产并且不能很好地使用版本控制这一事实,但您可以认识到某些内容经常更改而其他内容往往只创建一次的事实然后独自离开。通过将资产划分为不同的 FLA,您可以将大部分更改保留在少数不稳定的 FLA 中,稳定和不稳定内容之间的差异将反映在您的版本化文件中。

    请注意,即使您无法在运行时加载资源,编译时共享仍然可以让您将资源划分为任意数量的 FLA。 (编译时共享经常被忽略 - 如果您不熟悉它,请打开 MovieClip 的属性并查看底部的“源”部分。)如何划分内容取决于您的项目。我能建议的最好的方法是在语义上进行划分——也许每个字符一个 FLA,或者每个部分一个 FLA,或者每个界面元素一个 FLA,等等。与所有开发一样,目标是对相关资产进行分组并消除重复。

    第三点是,因为差异是不可能的,所以没有办法保留更改文档。我首选的方法是将 FLA 签入版本控制并在签入说明中记录所有更改,但更改也可以在单独的文档中。 (请注意,保持每个 FLA 中的库井井有条至关重要,否则阅读更改说明的人将很难找到更改。)但是,由于这对某些内容来说可能很麻烦,因此将某些 FLA 指定为“不稳定”,并且不打扰更改列表。但是如果这样的文件对其他文件有很多依赖的话,你以后会后悔的。

    不幸的是,这就是我目前所发现的全部。 Adobe 已经讨论过在未来版本中更改为基于文本的 FLA 格式,但在此之前,没有简单的解决方案。

    【讨论】:

    • 你的笔记很有用,谢谢。我不可能让开发人员维护一份变更文档——这将是太多的开销,而且没有人会这样做(认真地或根本不会)。我的目的是在不增加开发人员开销的情况下获得控制权。我很难让人们在他们的提交中编写有意义的 cmets :-(。如果不是因为文件往往被弃用、删除和替换为新代码这一事实,更改日志可能是一个很好的更改文档。
    • 嗯,你必须使用你所使用的东西。在文件或多或少功能完整之前,我没有保留详细的更改文档 - 所以我只记录了更改和错误修复,而不是初始开发。并且提交 cmets 很好 - 正如我所说,这就是我记录我的更改的地方。
    • 谢谢 fenomas - 我会接受你的回答,因为 (a) 它是最详细的并且......好吧.. 最好的; (b) 有一段时间没有人想出新的东西了;和(c) - 我有点远离整个问题......
    【解决方案2】:

    根据我对 Adob​​e Version Cue 的了解,除了 svn 给你的东西之外,它不会给你任何东西。 (当然,我只听说过 Version Cue 的恐怖故事,并没有真正使用它。)

    之前曾使用 svn 参与过大型 Flash 项目(大型团队和大型部署),我能给您的最佳建议是:

    • 好的,您的客户要求所有这些 FLA,但为什么呢?您可能已经这样做了,但是尝试稍微推迟他们的技术要求——他们认为他们从这个要求中获得了什么?

    • 指定一个人作为 Flash 应用程序的发布经理。他们将负责从 svn 中检查出正确的代码,构建它,并确保它进入一般的应用程序部署。他们还将响应了解哪个版本在哪个环境中(这可以很容易地自动化)。

    • 在 FLA 中放置尽可能少的代码和资产。您应该从外部来源加载图像和其他资源,然后将它们附加到适当的 MC 和 Sprite。

    • 如果可能的话,将团队保持在小的离散块中。这减少了 FLA 中发生冲突更改的机会,并增加了每个人都知道发生了什么的机会。

    • [更多的带宽说明,与此问题的相关性较小] 如果可能的话,将您的 FLA 视为库或 SDK。如果他们的需求与主 FLA 的“每页一个子 FLA”接近,则需要额外的子 FLA 来保存资产/小部件。这样,您的页面 FLA 仅保存页面特定代码,并且您不会在每次“切换页面”时重新加载小部件。 (假设页面切换之间没有浏览器刷新。)

    值得注意的是,这些主要是非技术解决方案。对于在修订控制系统中处理二进制文件的问题,我还没有找到“一枪毙命”的方法——尤其是真正是源代码的二进制文件。这才是真正的关键:以专有二进制格式存储源代码,只编译成不同的专有格式的想法是糟糕的巫术。

    【讨论】:

    • 感谢您的回答。关于 FLA 的要求 - 它更多的是对输出 SWF 文件的某些命名约定的要求,我们的客户从他们的代码中调用这些文件,由于需要向后兼容,我们无法更改部署架构。
    【解决方案3】:

    听起来您因为外部需求而被 FLA 文件卡住了,但以防万一......

    如果您正在构建一个代码量很大的 Flash 项目,我会使用纯 actionscript 或 flex 方法,仅将 .fla 文件用于它们的优点(基于时间轴的动画)

    Flex Builder / Flash Builder 是构建 Flash 项目的绝佳环境,其中所有代码都采用源代码管理友好的文件格式。

    我们正在将所有基于 FLA 的媒体播放器转移到 MXML(其中 Flex UI 组件非常有用)和纯 ActionScipt 项目。源代码控制的好处是巨大的。

    如果这不可能,那么恐怕你唯一能做的就是尽可能多地从 FLA 中移出 - 二进制格式根本不适合源代码管理。

    忘记版本提示 - Adob​​e 不再开发它(它不包含在新的 CS5 捆绑包中)

    【讨论】:

      【解决方案4】:

      我一直在想办法解决同样的问题,这里有一个可能的解决方案。 .fla 是实际的文件系统。如果您将 .fla 扩展名替换为 .zip,您可以解压缩并公开未压缩的文件,这与 Mac 上的“显示包内容”不同。所有的库内容都位于一个库目录中,每个影片剪辑由一个 xml 文档表示,每个层都有一个节点,层内的帧被表示为子节点。还有一个 .xfl 文件,它是 .fla 的未压缩版本,只要您将 .fla 的所有解压缩内容与 .xfl 位于同一目录中,您就可以在闪存中启动它

      从技术上讲,您应该能够处理 .xfl 文件,其中所有库内容都在 subversion 中进行跟踪和维护。

      【讨论】:

        【解决方案5】:

        Adobe 的答案是在新的 CS5 Flash 中。使用“另存为”并从下拉类型中选择 .xfl。您现在可以处理您的项目并通过 SVN 签入。我仍然会在 .as 文件中分解您的代码,但这样您的库资产也会被跟踪。它基本上将所有内容保留在 xml 标记中,有点像 flex mxml。我认为这是您最好的选择。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-09-01
          • 2012-08-30
          • 2021-03-25
          • 1970-01-01
          • 2021-05-21
          • 2010-09-05
          • 1970-01-01
          • 2010-09-06
          相关资源
          最近更新 更多