Adobe Flash项目的版本控制

时间:2009-09-21 11:50:01

标签: flash version-control

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

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

我看过Adobe Version Cue,虽然我不太明白它在版本控制方面做了什么,但是将我们的Flash项目移动到Version Cue上的托管会让我更好地控制我现在从Subversion得到的吗? / p>

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

5 个答案:

答案 0 :(得分:15)

我自己也在努力解决这个问题,除了以外我无法告诉你:

  1. FLA中没有代码,
  2. 在适当的情况下将内容语义划分为单独的FLA
  3. 为FLA制作更改文档,并为每次更改输入一个注释。
  4. 第一点显而易见。第二个是要认识到FLAs是二进制blob,它可以容纳你所有的视觉资产并且不能很好地进行版本控制这一事实,但你可以认识到一些内容经常变化,而其他内容往往会创建一次然后一个人离开通过将资产划分为不同的FLA,您可以将大部分更改保留在少量不稳定的FLA中,稳定和不稳定内容之间的差异将反映在您的版本化文件中。

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

    第三点是,由于差异是不可能的,因此无法保留更改文档。我首选的方法是将FLA检查为版本控制并记录签入说明中的所有更改,但更改也可以在单独的文档中。 (请注意,保持每个FLA中的库有序,或者阅读更改说明的人将无法找到更改,这一点至关重要。)但是,由于这可能会对某些内容造成痛苦,因此将某些FLA指定为“不稳定的“,而不是更改列表。但是如果这些文件对其他文件有很多依赖,那么你以后会后悔的。

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

答案 1 :(得分:11)

Adob​​e对此的回答是在新的CS5 Flash中。使用“另存为”并从下拉类型中选择.xfl。您现在可以处理您的项目并通过SVN进行检查。我仍然会在.as文件中打破你的代码,但这样你的库资源也会被跟踪。它基本上保留了xml标记中的所有内容,就像flex mxml一样。我认为这是你最好的选择。

答案 2 :(得分:2)

听起来你因为外部要求而无法使用FLA文件,但以防万一......

如果你正在构建一个代码密集的flash项目,我会使用纯动作脚本或flex方法,仅使用.fla文件来获取它们的好处(基于时间轴的动画)

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

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

如果那是不可能的,那么我担心你唯一能做的就是尽可能多地从FLA中移除东西 - 二进制格式根本不是源代码控制友好的。

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

答案 3 :(得分:1)

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

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

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

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

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

  • 如果可能的话,让团队保持小的离散状态。这减少了FLA中变化冲突的可能性,并增加了每个人都知道发生了什么的机会。

  • [更多带宽注释,与此问题的关联性较低]如果可能,请将您的FLA视为库或SDK。如果他们的需求接近具有主FLA的“每页一个子FLA”,那么拥有包含资产/小部件的其他子FLA。这样你的页面FLA只保存页面特定的代码,并且每次“切换页面”时都不会重新加载小部件。 (假设页面切换之间没有浏览器刷新。)

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

答案 4 :(得分:1)

我一直试图找到解决同样问题的方法,这是一个可能的解决方案。 .fla是实际的文件系统。如果用.zip替换.fla扩展名,则可以解压缩并公开未压缩的文件,这与mac上的“show package contents”不同。所有库内容都驻留在库目录中,每个动画片段由xml文档表示,每个层获取节点,层内的帧表示为子节点。还有一个.xfl文件,它是.fla的未压缩版本,你可以在flash中启动它,只要你将.fla的所有解压缩内容都放在与.xfl相同的目录中

从技术上讲,您应该可以处理.xfl文件,并在subversion中跟踪和维护所有库内容。